<?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>233442</bug_id>
          
          <creation_ts>2021-11-23 00:32:45 -0800</creation_ts>
          <short_desc>Add SharedBufferBuilder class</short_desc>
          <delta_ts>2021-12-13 14:36:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233030</dependson>
          <blocked>233922</blocked>
    
    <blocked>233677</blocked>
    
    <blocked>234215</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817407</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-23 00:32:45 -0800</bug_when>
    <thetext>This is part 2 of the task started in bug 233030 &quot;Distinguish contiguous SharedBuffer from non-contiguous one and guarantee immutability&quot;

As discussed from https://bugs.webkit.org/show_bug.cgi?id=233030#c2 ; Analogous to String being built through a StringBuilder ; a SharedBuffer would be built through a SharedBufferBuilder

SharedBuffer objects themselves becoming immutable once created by the SharedBufferBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817408</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-23 00:33:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/85693939&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818137</commentid>
    <comment_count>2</comment_count>
      <attachid>445253</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-28 23:55:55 -0800</bug_when>
    <thetext>Created attachment 445253
SharedBufferBuilder for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818138</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-11-28 23:56:58 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818145</commentid>
    <comment_count>4</comment_count>
      <attachid>445256</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-29 00:45:01 -0800</bug_when>
    <thetext>Created attachment 445256
SharedBufferBuilder for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818159</commentid>
    <comment_count>5</comment_count>
      <attachid>445259</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-29 02:01:04 -0800</bug_when>
    <thetext>Created attachment 445259
SharedBufferBuilder for EWS

fix gtk/wpe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818180</commentid>
    <comment_count>6</comment_count>
      <attachid>445267</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-29 04:58:21 -0800</bug_when>
    <thetext>Created attachment 445267
SharedBufferBuilder for EWS

fix windows/ios</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818621</commentid>
    <comment_count>7</comment_count>
      <attachid>445386</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-11-29 23:41:14 -0800</bug_when>
    <thetext>Created attachment 445386
scripthash-tests-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818915</commentid>
    <comment_count>8</comment_count>
      <attachid>445465</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 13:39:48 -0800</bug_when>
    <thetext>Created attachment 445465
Patch for EWS

fix intermittent crash, FetchBodyConsumer::takeData() must return null if no data was previously added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819059</commentid>
    <comment_count>9</comment_count>
      <attachid>445505</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 19:39:43 -0800</bug_when>
    <thetext>Created attachment 445505
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819091</commentid>
    <comment_count>10</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 21:46:08 -0800</bug_when>
    <thetext>I can reproduce imported/w3c/web-platform-tests/fetch/stale-while-revalidate/stale-css.html intermittents on a clean ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819098</commentid>
    <comment_count>11</comment_count>
      <attachid>445524</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 22:27:16 -0800</bug_when>
    <thetext>Created attachment 445524
Patch for EWS

Fix API test and windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819171</commentid>
    <comment_count>12</comment_count>
      <attachid>445549</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-01 04:08:07 -0800</bug_when>
    <thetext>Created attachment 445549
Patch for EWS

Fix intermittent crash, make passing SharedBuffer const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819184</commentid>
    <comment_count>13</comment_count>
      <attachid>445556</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-01 04:33:17 -0800</bug_when>
    <thetext>Created attachment 445556
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819417</commentid>
    <comment_count>14</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-01 14:27:33 -0800</bug_when>
    <thetext>the api-mac failure is unrelated ; none of the code path modified is hit during that run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819480</commentid>
    <comment_count>15</comment_count>
      <attachid>445636</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-01 16:57:52 -0800</bug_when>
    <thetext>Created attachment 445636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819649</commentid>
    <comment_count>16</comment_count>
      <attachid>445705</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 04:14:41 -0800</bug_when>
    <thetext>Created attachment 445705
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819650</commentid>
    <comment_count>17</comment_count>
      <attachid>445706</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 04:15:21 -0800</bug_when>
    <thetext>Created attachment 445706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819653</commentid>
    <comment_count>18</comment_count>
      <attachid>445707</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 04:26:06 -0800</bug_when>
    <thetext>Created attachment 445707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819654</commentid>
    <comment_count>19</comment_count>
      <attachid>445708</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 04:27:44 -0800</bug_when>
    <thetext>Created attachment 445708
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819655</commentid>
    <comment_count>20</comment_count>
      <attachid>445709</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 04:35:28 -0800</bug_when>
    <thetext>Created attachment 445709
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819657</commentid>
    <comment_count>21</comment_count>
      <attachid>445711</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 04:36:12 -0800</bug_when>
    <thetext>Created attachment 445711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820077</commentid>
    <comment_count>22</comment_count>
      <attachid>445826</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 03:06:10 -0800</bug_when>
    <thetext>Created attachment 445826
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820078</commentid>
    <comment_count>23</comment_count>
      <attachid>445827</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 03:06:48 -0800</bug_when>
    <thetext>Created attachment 445827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820085</commentid>
    <comment_count>24</comment_count>
      <attachid>445832</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 03:40:39 -0800</bug_when>
    <thetext>Created attachment 445832
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820086</commentid>
    <comment_count>25</comment_count>
      <attachid>445833</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 03:41:44 -0800</bug_when>
    <thetext>Created attachment 445833
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820090</commentid>
    <comment_count>26</comment_count>
      <attachid>445836</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 04:01:15 -0800</bug_when>
    <thetext>Created attachment 445836
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820091</commentid>
    <comment_count>27</comment_count>
      <attachid>445837</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 04:02:04 -0800</bug_when>
    <thetext>Created attachment 445837
Patch

fix gtk build (again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820124</commentid>
    <comment_count>28</comment_count>
      <attachid>445851</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 07:28:01 -0800</bug_when>
    <thetext>Created attachment 445851
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820128</commentid>
    <comment_count>29</comment_count>
      <attachid>445852</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 07:43:27 -0800</bug_when>
    <thetext>Created attachment 445852
Patch for EWS with no windows symbols resolution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820368</commentid>
    <comment_count>30</comment_count>
      <attachid>445922</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 17:01:24 -0800</bug_when>
    <thetext>Created attachment 445922
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820372</commentid>
    <comment_count>31</comment_count>
      <attachid>445925</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 17:02:42 -0800</bug_when>
    <thetext>Created attachment 445925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820376</commentid>
    <comment_count>32</comment_count>
      <attachid>445926</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 17:04:11 -0800</bug_when>
    <thetext>Created attachment 445926
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820411</commentid>
    <comment_count>33</comment_count>
      <attachid>445942</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 19:52:34 -0800</bug_when>
    <thetext>Created attachment 445942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820419</commentid>
    <comment_count>34</comment_count>
      <attachid>445949</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 20:14:45 -0800</bug_when>
    <thetext>Created attachment 445949
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820420</commentid>
    <comment_count>35</comment_count>
      <attachid>445950</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 20:18:26 -0800</bug_when>
    <thetext>Created attachment 445950
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820524</commentid>
    <comment_count>36</comment_count>
      <attachid>445996</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 21:52:35 -0800</bug_when>
    <thetext>Created attachment 445996
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820525</commentid>
    <comment_count>37</comment_count>
      <attachid>445997</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 21:53:53 -0800</bug_when>
    <thetext>Created attachment 445997
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820570</commentid>
    <comment_count>38</comment_count>
      <attachid>446021</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 03:31:59 -0800</bug_when>
    <thetext>Created attachment 446021
Patch for EWS

fix api ios test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820571</commentid>
    <comment_count>39</comment_count>
      <attachid>446022</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 03:32:55 -0800</bug_when>
    <thetext>Created attachment 446022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820910</commentid>
    <comment_count>40</comment_count>
      <attachid>446129</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 23:24:43 -0800</bug_when>
    <thetext>Created attachment 446129
Patch for EWS

rebase following changes in bug 233030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820912</commentid>
    <comment_count>41</comment_count>
      <attachid>446130</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 23:26:44 -0800</bug_when>
    <thetext>Created attachment 446130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822031</commentid>
    <comment_count>42</comment_count>
      <attachid>446130</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-09 01:21:18 -0800</bug_when>
    <thetext>Comment on attachment 446130
Patch

Some nits below.
Overall, this seems good.
Two questions though:
1. In most part of the code we go from a Ref&lt;SharedBuffer&gt; (1 allocation) to a UniqueRef&lt;SharedBufferBuilder&gt; (2 allocations).
Shouldn&apos;t we just use a SharedBufferBuilder with an initiated Ref&lt;SharedBuffer&gt; to keep to 1 allocation?

2. I understand the difference between empty and reset but I had to look at the code to understand it.
Maybe we should just have empty (and call it reset).
If it is really important to have m_data be back to a RefPtr, I guess we could call take() or use something like builder = { }.

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

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:350
&gt; +    return m_buffer.take()-&gt;tryCreateArrayBuffer();

Looking at take, it creates a shared buffer if needed so we probably do not need the m_buffer check.
Maybe though it would be better for take to return a RefPtr and the caller would then do a null check?
Or have a takeAndCreateIfNeeded if both patterns are equally used?
Or have a takeAsArrayBuffer if that is used in several places.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:152
&gt; +    m_data.empty();

What is the difference between reset and empty?

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:50
&gt; +    , m_dataBuffer(makeUniqueRef&lt;SharedBufferBuilder&gt;())

Why making it a unique ref contrary to other places?

&gt; Source/WebCore/inspector/NetworkResourcesData.h:125
&gt;          RefPtr&lt;SharedBuffer&gt; m_buffer;

Is m_buffer needed?

&gt; Source/WebCore/loader/ResourceLoader.cpp:79
&gt; +    , m_resourceData { makeUniqueRef&lt;SharedBufferBuilder&gt;() }

Why UniqueRef? Why not unique_ptr to lazily allocate it or just a direct member variable?

&gt; Source/WebCore/platform/SharedBuffer.h:301
&gt; +    explicit SharedBufferBuilder(RefPtr&lt;SharedBuffer&gt;&amp;&amp; buffer)

Is this one actually needed? Ditto for the Ref version? Or do you envision in the future usage of these?
I would tend to keep the Ref&lt;&gt; version if so, not sure the RefPtr version is useful.

&gt; Source/WebCore/platform/SharedBuffer.h:305
&gt; +        if (!buffer || (buffer-&gt;hasOneRef() &amp;&amp; !buffer-&gt;isContiguous())) {

I guess I would write it as if (!buffer) return; ...

&gt; Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:544
&gt; +    return m_data.take();

To be consistent with existing code, we should probably do:
if (!m_data)
    return nullptr;
return m_data.take();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822036</commentid>
    <comment_count>43</comment_count>
      <attachid>446130</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 02:12:40 -0800</bug_when>
    <thetext>Comment on attachment 446130
Patch

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

&gt;&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:50
&gt;&gt; +    , m_dataBuffer(makeUniqueRef&lt;SharedBufferBuilder&gt;())
&gt; 
&gt; Why making it a unique ref contrary to other places?

I used a UniqueRef&lt;SharedBufferBuilder&gt; wherever SharedBuffer were only forward declared and the SharedBufferBuilder.h header was only included in the code.

Seeing that there were a lot of efforts made to speed up compilation time, I thought it was appropriate to continue that trend.

It does make the code more confusing I agree, I will remove that.

&gt;&gt; Source/WebCore/inspector/NetworkResourcesData.h:125
&gt;&gt;          RefPtr&lt;SharedBuffer&gt; m_buffer;
&gt; 
&gt; Is m_buffer needed?

I tried the keep the existing logic as much as possible. Like above, we have hasData() and hasBufferedData() doing the same thing, this smells very fishy to me.
NetworkResourceData appears to have the ability to be assigned a SharedBuffer (via setBuffer) and has a getter (buffer())  for it. I didn&apos;t investigate to see how that was used.

&gt;&gt; Source/WebCore/loader/ResourceLoader.cpp:79
&gt;&gt; +    , m_resourceData { makeUniqueRef&lt;SharedBufferBuilder&gt;() }
&gt; 
&gt; Why UniqueRef? Why not unique_ptr to lazily allocate it or just a direct member variable?

as above, SharedBuffer was forward declared, so I made SharedBufferBuilder forward declared

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:301
&gt;&gt; +    explicit SharedBufferBuilder(RefPtr&lt;SharedBuffer&gt;&amp;&amp; buffer)
&gt; 
&gt; Is this one actually needed? Ditto for the Ref version? Or do you envision in the future usage of these?
&gt; I would tend to keep the Ref&lt;&gt; version if so, not sure the RefPtr version is useful.

This is to replace code where we had:
RefPtr&lt;SharedBuffer&gt; m_buffer and in the constructor:
ScriptBuffer(RefPtr&lt;SharedBuffer&gt;&amp;&amp; buffer) : m_buffer(WTFMove&lt;buffer))


This is used to initialise an `empty` but not `null` SharedBufferBuilder
In various places of the code, there&apos;s a distinction between a RefPtr&lt;SharedBufer&gt; where both state (unset or empty (that is a size of 0) are handled differently to Ref&lt;SharedBuffer&gt; where.

I will document that a SharedBufferBuilder is really a replacement for RefPtr&lt;SharedBuffer&gt;

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:305
&gt;&gt; +        if (!buffer || (buffer-&gt;hasOneRef() &amp;&amp; !buffer-&gt;isContiguous())) {
&gt; 
&gt; I guess I would write it as if (!buffer) return; ...

I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822058</commentid>
    <comment_count>44</comment_count>
      <attachid>446130</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 03:35:18 -0800</bug_when>
    <thetext>Comment on attachment 446130
Patch

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

&gt;&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:152
&gt;&gt; +    m_data.empty();
&gt; 
&gt; What is the difference between reset and empty?

reset() is equivalent to doing RefPtr&lt;SharedBuffer&gt; buffer; buffer = nullptr;
empty() is Ref&lt;SharedBuffer&gt; buffer = SharedBuffer::create(); buffer-&gt;clear();

As SharedBufferBuilder is a replacement to a RefPtr&lt;SharedBuffer&gt; the null state has to be differentiated from the &quot;empty&quot; one. In future change I hope to be able to remove this distinction, but this was needed to make the change smaller and the logic easier with no chance of introducing regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822059</commentid>
    <comment_count>45</comment_count>
      <attachid>446130</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 03:38:07 -0800</bug_when>
    <thetext>Comment on attachment 446130
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/SharedBuffer.h:301
&gt;&gt;&gt; +    explicit SharedBufferBuilder(RefPtr&lt;SharedBuffer&gt;&amp;&amp; buffer)
&gt;&gt; 
&gt;&gt; Is this one actually needed? Ditto for the Ref version? Or do you envision in the future usage of these?
&gt;&gt; I would tend to keep the Ref&lt;&gt; version if so, not sure the RefPtr version is useful.
&gt; 
&gt; This is to replace code where we had:
&gt; RefPtr&lt;SharedBuffer&gt; m_buffer and in the constructor:
&gt; ScriptBuffer(RefPtr&lt;SharedBuffer&gt;&amp;&amp; buffer) : m_buffer(WTFMove&lt;buffer))
&gt; 
&gt; 
&gt; This is used to initialise an `empty` but not `null` SharedBufferBuilder
&gt; In various places of the code, there&apos;s a distinction between a RefPtr&lt;SharedBufer&gt; where both state (unset or empty (that is a size of 0) are handled differently to Ref&lt;SharedBuffer&gt; where.
&gt; 
&gt; I will document that a SharedBufferBuilder is really a replacement for RefPtr&lt;SharedBuffer&gt;

Sorry, the proper answer to this question was that I wanted to make the constructor explicit, so I needed an implementation for both RefPtr&lt;SharedBuffer&gt; and Ref&lt;SharedBuffer&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822075</commentid>
    <comment_count>46</comment_count>
      <attachid>446521</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 04:54:32 -0800</bug_when>
    <thetext>Created attachment 446521
Patch for EWS

Apply comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822076</commentid>
    <comment_count>47</comment_count>
      <attachid>446522</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 04:55:40 -0800</bug_when>
    <thetext>Created attachment 446522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822083</commentid>
    <comment_count>48</comment_count>
      <attachid>446526</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 05:30:54 -0800</bug_when>
    <thetext>Created attachment 446526
Patch for EWS

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822084</commentid>
    <comment_count>49</comment_count>
      <attachid>446527</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 05:31:58 -0800</bug_when>
    <thetext>Created attachment 446527
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822094</commentid>
    <comment_count>50</comment_count>
      <attachid>446532</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 06:01:28 -0800</bug_when>
    <thetext>Created attachment 446532
Patch for EWS

rebase 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822095</commentid>
    <comment_count>51</comment_count>
      <attachid>446533</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 06:04:08 -0800</bug_when>
    <thetext>Created attachment 446533
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822107</commentid>
    <comment_count>52</comment_count>
      <attachid>446540</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 06:42:14 -0800</bug_when>
    <thetext>Created attachment 446540
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822111</commentid>
    <comment_count>53</comment_count>
      <attachid>446542</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 06:43:33 -0800</bug_when>
    <thetext>Created attachment 446542
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822318</commentid>
    <comment_count>54</comment_count>
      <attachid>446542</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-09 13:47:12 -0800</bug_when>
    <thetext>Comment on attachment 446542
Patch for review

LGTM.

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

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:335
&gt; +    m_buffer.append(WTFMove(data));

m_buffer = WTFMove(data) might be better?

&gt; Source/WebCore/platform/SharedBuffer.cpp:544
&gt; +    ensureBuffer();

No need to call reset here.
m_buffer = SharedBuffer::create might be enough.

&gt; Source/WebCore/platform/SharedBuffer.cpp:550
&gt; +    return m_buffer.releaseNonNull();

Could be rewritten to:
return m_buffer ? m_buffer.releaseNonNull() : SharedBuffer::create();

&gt; Source/WebCore/platform/SharedBuffer.h:314
&gt; +        : SharedBufferBuilder(RefPtr&lt;SharedBuffer&gt; { WTFMove(buffer) })

Here we are doing a if(!buffer) unnecessary check.
If we want to share code, we could simply add a:
initialize(Ref&lt;SharedBuffer&gt;&amp;&amp;) that we would call here and in the above constructor (initialize(buffer.releaseNonNull()).

&gt; Source/WebCore/platform/SharedBuffer.h:337
&gt; +    RefPtr&lt;SharedBuffer&gt; get() const { return m_buffer; }

Looking a more places, I would be tempted to rename it as buffer().
Given the size of the patch, this could be done in a follow-up if you think that is valuable enough.

&gt; Source/WebCore/platform/cf/SharedBufferCF.cpp:38
&gt; +    ASSERT(!m_contiguous);

Is it needed? I guess this is initialised in SharedBuffer m_contiguous declaration.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h:61
&gt; +            if (auto parsedPayload = extractCencIfNeeded(payload-&gt;makeContiguous()))

I am missing some other patches defining makeContiguous.
InitData is taking a RefPtr&amp;&amp; which does no longer seem needed, except if doing WTFMove(payload)-&gt;makeContiguous() would make it more efficient.

&gt; Source/WebCore/workers/ScriptBuffer.h:51
&gt; +    const SharedBuffer* buffer() const { return m_buffer.get().get(); }

.get().get() is a bit weird.
I guess the first .get() could be renamed to .buffer().
But then we would have to rename m_buffer to m_bufferBuilder.
Oh well, might be good enough for now.

&gt; Source/WebCore/workers/WorkerFontLoadRequest.cpp:85
&gt; +            m_data.append(*contiguousData);

As I read it, we called takeAsContiguous so m_data is null.
It seems like we could be able to optimise if we were able to call m_data constructor instead of append.

&gt; Source/WebKit/WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:70
&gt; +    webPage-&gt;didFinishLoadForQuickLookDocumentInMainFrame(m_buffer-&gt;take().get());

Probably s/-&gt;/./

&gt; Source/WebKit/WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:75
&gt; +    m_buffer-&gt;reset();

s/-&gt;/./

&gt; Source/WebKit/WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.h:33
&gt; +#include &lt;wtf/UniqueRef.h&gt;

No longer need for UniqueRef.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822603</commentid>
    <comment_count>55</comment_count>
      <attachid>446693</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-10 02:24:36 -0800</bug_when>
    <thetext>Created attachment 446693
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822619</commentid>
    <comment_count>56</comment_count>
      <attachid>446700</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-10 03:14:50 -0800</bug_when>
    <thetext>Created attachment 446700
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822621</commentid>
    <comment_count>57</comment_count>
      <attachid>446701</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-10 03:19:18 -0800</bug_when>
    <thetext>Created attachment 446701
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823185</commentid>
    <comment_count>58</comment_count>
      <attachid>446871</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-11 04:16:23 -0800</bug_when>
    <thetext>Created attachment 446871
Patch for EWS

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823186</commentid>
    <comment_count>59</comment_count>
      <attachid>446872</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-11 04:18:45 -0800</bug_when>
    <thetext>Created attachment 446872
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823198</commentid>
    <comment_count>60</comment_count>
      <attachid>446880</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-11 06:06:43 -0800</bug_when>
    <thetext>Created attachment 446880
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823199</commentid>
    <comment_count>61</comment_count>
      <attachid>446881</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-11 06:11:53 -0800</bug_when>
    <thetext>Created attachment 446881
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823372</commentid>
    <comment_count>62</comment_count>
      <attachid>446958</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-12 19:03:07 -0800</bug_when>
    <thetext>Created attachment 446958
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823373</commentid>
    <comment_count>63</comment_count>
      <attachid>446959</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-12 19:04:24 -0800</bug_when>
    <thetext>Created attachment 446959
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823376</commentid>
    <comment_count>64</comment_count>
      <attachid>446960</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-12 19:34:26 -0800</bug_when>
    <thetext>Created attachment 446960
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823389</commentid>
    <comment_count>65</comment_count>
      <attachid>446967</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-12 21:57:27 -0800</bug_when>
    <thetext>Created attachment 446967
Patch for EWS

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823390</commentid>
    <comment_count>66</comment_count>
      <attachid>446968</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-12 21:58:41 -0800</bug_when>
    <thetext>Created attachment 446968
Patch for Landing

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823535</commentid>
    <comment_count>67</comment_count>
      <attachid>447004</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-13 08:25:24 -0800</bug_when>
    <thetext>Created attachment 447004
Patch

fix GTK crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823778</commentid>
    <comment_count>68</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-13 14:35:56 -0800</bug_when>
    <thetext>Committed r286983 (?): &lt;https://commits.webkit.org/r286983&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447004.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445253</attachid>
            <date>2021-11-28 23:55:55 -0800</date>
            <delta_ts>2021-11-29 00:45:54 -0800</delta_ts>
            <desc>SharedBufferBuilder for EWS</desc>
            <filename>bug-233442-20211129185552.patch</filename>
            <type>text/plain</type>
            <size>498664</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2YjlmZjNlYmEyYjYw
MmE3MzVjYzQ5OGY1NjBjNzk4NjgxOTBhZC4uMGY4YTE4Zjc4OWI3ZjU4MjNhNDQyODMwYWM1MGVj
MzE0ZGJkYjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxMSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBi
ZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZl
cmVkRGF0YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICogbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVk
QnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051
bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3
YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWlu
ZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAg
ICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVl
IHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisg
ICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVy
IHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hh
cmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5
cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQg
dG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJl
ZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJl
CisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2Vk
OyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4
cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBU
aGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZl
cnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAg
ICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90
ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1p
dCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBk
ZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBj
b3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUK
KyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNv
bnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJl
ZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBo
YXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFs
IGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQu
CisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ug
b2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVu
ZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0Miwg
YSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3Jl
YXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBi
eSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJ
REJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2Nl
bmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZv
ckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZG
b3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0
aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxp
emVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0
YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
VUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdS
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6
Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5k
RmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxl
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJs
ZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNj
cmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJv
YXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEtMjYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFk
ZCBpbXBsZW1lbnRhdGlvbiBvZiBzZWxlY3Rpb24gaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0
aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1NzQ4ZGJlMjllYWJjYmVjNDJiMjQ5ZjhjNjVjZTI2NDg3M2I2
NzUxLi5mZDQ5MmZjZDZhZmVjNDM1YTg1Y2FlY2E2YmYxZjdiOGE5MTQ4ZmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdp
blZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRv
U3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVx
dWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToK
KyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1h
Z2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0
KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1v
cnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSB3
cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAgICAgICAgU2hh
cmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAgTm8gY2hhbmdl
IGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5IHNpemUgcmVk
dWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdoZW4gbWFwcGlu
ZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEgY291cGxlIG9m
IHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFj
dG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBjb2RlIGFuZCB1
c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisKKzIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBh
bGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFy
ZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1l
bW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxl
IGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAg
ICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1v
cnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtlIFNoYXJlYWJsZVJlc291cmNl
IHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBTaGFyZWFibGVSZXNvdXJjZSBv
bmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVkTWVtb3J5IG9iamVjdAorICAg
ICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcuIERlbGV0aW5nIHRoZSBvYmpl
Y3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgc2FmZS4KKyAgICAgICAgTWFr
ZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIp
OiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29k
ZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQuCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHku
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCiAy
MDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zIHNob3VsZCBoYXZlIHNlcGFyYXRl
IGNsYXNzIGRlZmluaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAxZDUw
MWFiMzgwMTdmMWQ4ZjllODFjOWJlZmRjMmQ3ZjZmMTZmZS4uZjM1MjlkZWI3MmYxZWY1ZGQ3ZTE4
NDg5YjA0YWJkYWU0ZTQzNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29k
ZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0yNCAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxl
IHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIxMzk2
OTY2YmI2MGFjLi41Mjk0OTMxOTgyOGU0ZTE1NjM4MmI5MzdhZjliYzJjYTVlYmU0MWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTEtMjUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBj
b250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFu
dGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAg
ICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVh
bTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAq
IFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJj
ZS5oOgorCiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZk
YTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRi
MWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJ
Zk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAg
ICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwot
ICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3Ry
aW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0K
aW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFl
NjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21p
bWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdl
UE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBC
bG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMx
Y2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZl
OGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAi
aW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYg
KGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0
Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRv
cHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7
CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0
MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
b21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2
NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3Jt
RGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewog
ICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpu
dWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjg2
NzUwZGZlZWZlYzU1NWNhZjlhMWJiZjg1MTA2MGE1OWFmZjI4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBET01D
YWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQ
b3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVl
c3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRs
ZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3Bv
bnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0g
V1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OCwxNSArMjk4LDE1IEBAIHZvaWQgRE9N
Q2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVz
cG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRp
b24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNl
Qm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcsNyArMzE3LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAt
Mzc0LDcgKzM3NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9u
c2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVm
ID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2
ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMt
PnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5
KCkpOwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRX
aXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIu
LmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNl
PiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNw
b25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYu
LjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMx
LDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9k
eSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8
Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZv
cm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5
KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBh
cy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9
KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25z
dCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwg
W10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRy
X3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4u
Y2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBF
eGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBX
RUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7
CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVl
YWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIw
NDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zv
cm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyAr
MTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAg
ICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJh
eSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBr
ZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
ICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAh
PSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNt
cChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJv
b2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6
VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBw
YWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUo
KSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBh
aXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi5mMTJj
ODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRj
aEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYg
KGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewot
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25l
ci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5z
IGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIs
NyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAog
ICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0
YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0
YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6
VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25z
dW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
ICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlz
QmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRj
aEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAo
aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
ICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9T
dHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJs
U2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFk
MWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3
ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0
YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEg
dGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4NjUwODU4
NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMzc5OThlZjk2OWEyYTU5M2NmYjk1ZmZhMDAyN2MzNzZjNzhk
ZWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
ICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0y
NjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJl
YW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29s
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTog
ewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZv
cm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisg
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICsz
MjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5k
KGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit7
CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRh
KSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0
YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIHJldHVybiBtX2J1ZmZl
ci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0NSw3IEBAIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxw
dHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZm
ZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsK
IH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUzLDcgQEAgUmVmPEJsb2I+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0
LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVu
dFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVs
bHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVy
biBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7Cisg
ICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3RE
YXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpAQCAtMzYyLDggKzM2Miw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1f
YnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgz
LDEwICszODMsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNl
KCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNl
PiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAo
bV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAg
IGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0
M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZk
OGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEo
KSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQor
ICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdl
dCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToK
IAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBS
ZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQ
dHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2
NDYwMDQ2ZTQ2YmQ1MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFiN2MxZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0
MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9y
bURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4uYTE2MDc0
N2RlMGNlYWNlZWNjNzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAK
LSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAg
dm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFk
ZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEz
N2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
aGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhp
Z2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4u
ODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29k
ZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAg
ICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMx
MmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
S2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0
byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEz
IEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9u
KTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQs
IElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3
ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAx
MTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
SURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRj
MDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBv
YmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxp
dGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7Cisg
ICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0
ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcs
NyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyAr
MTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5k
ZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFs
c2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3Jk
IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RT
dG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBp
biB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBk
YXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBp
ZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBp
biBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBv
YmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9k
ZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcg
KzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVj
dCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwog
ICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93
ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6
bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAg
ICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXko
aW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgp
ICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpL
ZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwx
NCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1
dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmlt
dW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBj
b3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2Uu
dXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThj
ZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJD
dXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1
cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1f
Y3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRC
aW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3Vy
cmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkp
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmNwcAppbmRleCBhZmVmNDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJiOTY3YWEzLi4wMDI3
NTcwODAyYjE0YjA5ZDFhYTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsK
IAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1Jhdywg
bWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3
LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1f
aXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgw
M2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2Fn
ZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5n
ZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2IyZTJmY2EwZDM3YWE1
Mzk5OWZhNjI4NGE0NTlhNGU0NzMxYWMuLjAyOGE5MTk4NTgxN2ZkMzY5ZTcwZjRjYWFiOTRlMWEx
NGY1ZDBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291
cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQo
KTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291
cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMp
OwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikK
QEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAg
ICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRl
UmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRy
dWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCku
Z2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVs
ID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCBy
ZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVz
b3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAzNjM5
M2EzYjZmOTI3ZmYwNGZiYzI1ZWQ1N2FkZGFmYzM5MjllYWYzLi45YzQ3MjZmMjY0MmRmMDFkMzNh
YmNkZjRlMzFlYzgyZjRjOWE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8
TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21p
c2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGEx
OWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMz
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0x
MDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZp
bGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6
Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwog
Ci0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5k
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVI
YW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5
dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2Qy
MjRhMWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZh
aWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9
LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFs
aXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkx
OGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBA
IC01MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYg
KCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRh
aW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFp
bnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJ
ID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWlu
c09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1f
c2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAg
ICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAg
ICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICgh
bV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5n
ID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVm
ZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZm
ZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRI
YXNoIHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4
Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJh
N2ZkYTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0x
NjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRv
d25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZv
bnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1f
Z2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpA
QCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2Ut
PmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1f
aW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEo
YnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9
IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAg
ICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4
IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1
OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3Ry
dWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlh
bnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkz
LDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250
U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxz
byBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJh
YTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRj
Njg5YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0
MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVu
dEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3Rl
Ym9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywg
YWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZl
MGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1
MjBlNjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkg
KzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNs
YXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRl
QnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRD
b21wb3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVw
bGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBi
b29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyAr
NTc0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50
SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAt
NjE4LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0
KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYp
OwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVk
U3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYu
LjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIg
KzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVj
NDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAt
NzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRl
cy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
TlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJp
bmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVk
RGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5n
OllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRN
TEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRN
TEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRv
cjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBl
bGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXRE
YXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAg
aWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdl
KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQ
Ym9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0
ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAg
ICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hp
dmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYg
KCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhh
dCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBi
dXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAx
LDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQog
ICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxl
bmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4u
M2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcg
QEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRh
dGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBl
ID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVy
IHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAg
ICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1p
bWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9
IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAg
ICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZp
bGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAg
ICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVy
bCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBl
bGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzku
LmFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBA
IC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0
YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAg
IFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVt
ZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRv
JiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0
YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291
cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVk
QXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJl
c291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7
CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpA
QCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7Cisg
ICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJl
c291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAs
NyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1l
bnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+
bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVu
dEluc2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXIm
IGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6
OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRh
KCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFz
ZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9t
VVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBh
cmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1l
bnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNv
TGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5T
aG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5p
dGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9u
RG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVV
UkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBz
dWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAg
ICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVU
Rjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZy
YW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVm
KCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFy
Y2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlz
dFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2
MTcsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0p
OworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAo
IWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQx
OWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBj
NzIyNzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAg
ICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYg
aW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlm
ICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFS
ZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhN
RTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFi
bHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhp
cyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUg
bWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNo
IGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNi
NzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThh
NWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpw
YXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5k
RW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJl
c3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJl
c3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3Qg
U2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRo
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBs
YXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVy
OwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29s
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0g
ICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1w
bGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAg
c3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigp
OwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJl
IG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8g
dGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwg
dGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLjhh
NjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVkMDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcs
NyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
ID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2Fk
ZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhh
c0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3Vs
dCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRy
OworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0Nv
bnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRl
bnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisK
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkg
OiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAg
ICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZm
ZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9k
ZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2Nv
bnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAg
ICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRl
bnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRm
YjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5ZmU5
N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNw
b25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAg
ICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9u
c2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5
LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsK
ICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1
ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZl
cjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0
Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApA
QCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1l
VHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNw
b25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJl
c3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41
Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC0xMDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNl
Q29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRh
dGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJu
IGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCBy
ZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRm
MjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50Rmls
dGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigp
KQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUw
N2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZh
NjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBj
cmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJp
dHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwg
eyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgw
ZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNo
aXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNv
dXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7Cisg
ICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7
CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWlu
UmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1
Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAg
bV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyAr
MjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFy
dENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1f
Y29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
ID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRh
KCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRj
YmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFz
cyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZv
cm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3Vy
Y2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFC
TEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0
cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZk
MjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYz
NTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1
cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTog
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9y
IHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRp
ZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCAzYTA2NGJjNzIzMWEzNjAwY2M4M2RjNThhOWEyZTdmZjJlZTk2YjM1Li40ODBm
MjJhYmUzNTVkMTA5YzIwODYyZWZhZTlkYmQ1ZDA4NTdjOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAg
IHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNw
YWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2
NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBG
cmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBk
YXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZl
cnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9j
dW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJl
cigpKTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAg
ICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxv
YWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAg
ICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgq
dGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0
aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwot
ICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9u
c2UsCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2
ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBi
ZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAt
NTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwog
I2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQs
IGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3Qg
U3lzdGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1l
TG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3
NmFjMjM1Li4xNGU1ZmQxZDBkMWIyMDUzMzk2OGE0MDQ2YTE0NDQ0MzE2MDkxOGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVG
SU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNv
dXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVu
dExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwg
bV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERl
ZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRl
ZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3
ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAg
IG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAg
ICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJp
bmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1
YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyMyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVS
ZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNv
dXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVy
KQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitTaGFyZWRC
dWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwog
fQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAg
LTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIs
IHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0
IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lh
bnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNl
bmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRp
Y19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjQwNjUwMWVlNTMxNWE4
Njg2MTFlZWNlMjZjMTk0Njk1NWUxZTc5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBG
cmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNs
YXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+
LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAK
LSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2VEYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2
NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291
cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJj
ZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2Vi
Nzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1
ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRC
dWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsg
fQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9u
c2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAg
IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0
OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1
LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
TWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBw
YXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVz
b3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFu
aWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21h
bmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRp
bWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlz
IHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNo
ZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxk
IG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVl
Ni4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0
ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNv
dXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNv
cHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgp
IG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBp
ZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRh
dGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNo
ZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1h
bCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhl
ciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4
eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0
d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwg
dGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFs
bGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jgog
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAo
Z2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7
CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAg
ICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25j
ZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4
NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQy
LDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpA
QCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVM
b2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7
Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hl
SW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2Ux
NzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3
NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uo
VVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
LmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkp
OworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2
NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChk
YXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMz
YWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5iZGEyYTJjNzY2OWUxOGM1MjQ3
YWM4MGExMmYxN2JkMjZiMzQ4ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4NCw3ICs3
ODQsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGlmICghZGF0YVN0YXRlbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAg
IGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQt
PmJpbmRUZXh0KDIsIEZpbGVTeXN0ZW06OnBhdGhGaWxlTmFtZShyZXNvdXJjZS0+cGF0aCgpKSk7
CkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0
YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+Ymlu
ZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5i
aW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAg
IH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAg
LTg3OCw3ICs4NzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2Ug
dGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3Vu
dAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsK
IAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMTEzLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAg
IGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAg
ICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVu
dC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxv
Yig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5j
b2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4
IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4
ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3Bl
cnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1w
dHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1
dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0
eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJM
IGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZv
ciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAg
aWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3Bv
bnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNl
KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRh
dGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJl
c3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25L
ZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlE
KHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAg
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9u
c2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlk
IHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJv
cGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNp
b24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFy
Y2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAg
ICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAg
IENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
Q0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5
TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYg
TkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAg
ICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25h
cnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3Rh
dGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBt
YWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpA
QCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRv
IHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAg
ICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFj
dChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2
ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENG
RGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3Vi
ZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRk
U3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYx
LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNw
b25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3Bv
bnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1Pgog
ICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihG
cmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAg
IHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRv
Y3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90
aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBv
d24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJu
b1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBo
ZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXgg
ZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRh
NmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTkzLDkgKzE5MywxMCBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29udGlndW91cygp
OwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9
IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1F
SGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVE
ZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0g
cXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRl
bnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRN
TCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250
ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0
byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBi
ZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNw
ZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkg
c2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5k
ZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZh
MmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIs
MTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFl
NjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2
N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVj
a0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24n
dCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNh
biB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBl
bmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5
KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRh
IHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQg
ZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0
cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0
byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMy
YTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdh
NDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRh
LmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcg
Q2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJu
IHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVk
KCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAg
LTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdl
dCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVk
Rm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07Cisg
ICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0
cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRG
b250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVu
dCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRj
NTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFh
YjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9h
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
Zyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZp
cnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZy
b21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDli
ZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3
MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdl
KCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVy
VXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRh
QmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8
fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJl
c291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBM
QVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkp
OwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNl
bGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQg
dG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODVi
YTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFn
ZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNl
ZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1f
ZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAg
IGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEu
c2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewot
ICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0
YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5z
aXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAg
ICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGlu
Y3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09L
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggOGI4M2U1MzMxOTBhNzc2YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRjN2Q3
NTRlMTliNzU1YTljYWM1NzRiZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZl
cikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1f
ZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250
ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4
MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlm
CiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhh
c2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQg
YnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2Fj
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdm
NDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBA
QCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVu
dCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9
IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwo
KSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5z
ZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1
NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAt
ODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAg
ICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkx
LDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZG
b250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRG
b250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3
ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01
MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6
ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAg
ICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVt
ZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRp
bmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5l
ZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5z
aWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMy
MDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
LSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmlu
ZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0
OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBA
QCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5k
YXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2Zl
YmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2Ni
NWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRC
dWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRT
aGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
KTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQg
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2Rm
NTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
VGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVz
b3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0
YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1
ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVk
UmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRv
cjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0g
X0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVC
YWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25z
ZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNh
Y2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVz
cG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lk
IERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXIm
IGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewog
ICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9y
UmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3Vy
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2
NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcg
QEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAg
ICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3Vy
Y2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4
IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjliYTFkMTJiNGIwYjM3
MjAyMTU0YTViNzQxMjYzNmNjMmU0OTE5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJl
dmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJl
c291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9j
b252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQog
CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsK
QEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xv
YWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25z
ZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVy
dGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAg
ICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3Jp
Z2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAs
IG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2Nm
Li5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRo
U29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1MzVjNjMyZDlkMmRhYzkxM2VmLi41ODcxYThlYTZhMzEx
OThjOTBhNGY0OTQxYmMyM2RlOTg0OTViMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTEs
NyArMTk1MSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAog
ICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBl
c3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmly
ZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlv
dXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAg
ICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNm
Zjk2NDIzMDA1MmY3OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsK
LSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlw
ZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsg
dXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAo
YXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFs
aXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBj
b25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hh
cnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAg
ICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5j
aGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAg
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsg
dXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5j
b2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25z
ZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5k
KHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91
cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFm
NDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1p
bWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQg
UGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgK
aW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFi
YjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5o
CkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7
CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAg
CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQy
ZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0
YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZp
bmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAg
ICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFy
cmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVz
dWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZp
bGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVm
ZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0
YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwot
ICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3Bl
bmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xl
YXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgw
ZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
MTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3Ry
aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5n
JiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2Qy
NDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNk
NzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04Miwx
NCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VY
UE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsK
ICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdG
b3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAg
ICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFz
dGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUlu
SFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVS
TCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlw
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1l
OwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhh
c2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAg
ICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBW
ZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3Ry
aW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JU
eXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0
YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBk
NmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6
OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRh
dGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3Rl
eHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwog
CkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAg
ICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIg
PDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIp
CkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRD
dXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3Rl
bmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2
ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYw
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
aApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9h
cmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFy
ZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVy
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4
OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1
YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVy
bFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAg
IHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+
IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRl
VG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcy
ZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3
NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9y
aWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJp
bmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3
NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYw
YmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0
YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3Qg
UGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVi
b2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFz
dGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
U3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdy
aXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1h
Z2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVS
TCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwo
c2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4u
NGJlYTRmMThlNGM3OWRlYjU3NDRmMjgwZTlmOGY5YmMxODNjNmYzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgY29u
c3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QK
IAogY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3By
ZXZpZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWlu
UmVzb3VyY2UoKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVw
bGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5w
cmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlmICghbV9w
cmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGll
bnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdl
dCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhp
cywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
b252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2
YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIuLjA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRl
YTlkMzQ5YWI3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0
cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlcjsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29u
dmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsK
KyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBS
ZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmln
aW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRl
eCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYz
ZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5
cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7Cisg
ICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7
CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1NWI5YWZkMzkw
MDM1MzUzODVkLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQwNTg3ZGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEzICs1MCwxMyBA
QCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0p
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkK
IHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAgU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBhcHBlbmQoV1RG
TW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewpAQCAtNzMs
MjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1h
cHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBl
ZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50
OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmls
ZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmICht
YXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJv
b2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1h
cHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwot
ICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQot
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4m
JiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1v
dmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50
c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNp
emVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMs
MzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShj
b25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVk
RGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNv
bnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGln
dW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3Vn
aHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMg
ZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2Fs
bGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSBy
MjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwot
I2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsK
LQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nh
c3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhp
cykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9
PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2Vn
bWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29t
YmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xl
YXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEp
OwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVu
dCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9z
ZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiArMTU2LDIxIEBAIFN0
cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpzaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVy
Ojppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisK
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKQEAgLTIwMiwx
MCArMTkyLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVT
ZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUo
KSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVu
dCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0p
OwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywyMyArMjAyLDI2IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAg
ICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXpl
KCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsK
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisK
IHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKQEAgLTI0Mywx
NyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0
CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNo
ZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVt
ZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNT
RVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRl
cikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAg
ICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTUsOCArMzQyLDcgQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBj
b25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAm
JiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQog
CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3Miw3ICszNTgsNTcgQEAgYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkg
Y29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQor
eworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7Cisg
ICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwg
V1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+
aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9z
aXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVy
LT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGln
dW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9
CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1h
eVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VG
aWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBw
ZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3Mp
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
V1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVu
dC0+ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRh
QXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBj
b25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtd
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4g
ZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyArNDI3LDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQo
dmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6
OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEp
OwogfQpAQCAtNDAyLDcgKzQzOCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90
TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4g
e3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19Owog
fQpAQCAtNDU2LDcgKzQ5Miw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVf
dCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2Vn
bWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyBy
ZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTExLDcgQEAgc2l6ZV90IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZp
c2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6
ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAg
ICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAs
IG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGlu
U2VnbWVudCkKQEAgLTQ5OSwxNiArNTM1LDIxIEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVu
dCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4g
c2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0g
ZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6
ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1
cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZm
ZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXpl
X3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU3NSw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAg
ICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEo
KSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFk
Li4xZDRmYTQ0ZTAzMTBlMGFmMGVmZjYyMThjZTQ1NmYzZGUxZGQzYWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTQ2IEBAIGNs
YXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVk
QnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1t
dXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8v
IFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVu
dC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFT
ZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywg
WWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5n
ID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hy
aW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBj
cmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lm
IFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9p
ZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5
dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVy
Jik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFs
bCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5
IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdp
bigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRl
cyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9z
c2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIq
IGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVu
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAg
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAg
ICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBk
YXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8g
RGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNl
IGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAg
ICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxp
Y2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQot
ICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWlu
dDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAg
ICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRl
ciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
cHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVu
dChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3Zp
ZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlk
ZXIpKSB7IH0KIAotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsK
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAg
ICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8
R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxl
RGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElP
TikKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0
ZUNGRGF0YQogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKKworY2xh
c3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZl
cj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3Zp
ZGVyKSkpOyB9CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3Jl
YXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJ
QikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisg
ICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0
YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlz
IG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAg
Ly8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3Mg
Y29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdt
ZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwogCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
IHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OworCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lm
IFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAq
KTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChD
RkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5n
dGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0
aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1
c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3
YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAK
ICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdp
blBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAsMTY4IEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRh
U2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFz
T25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVu
dCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0
YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0
YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJp
bmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhT
dHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25z
dDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50
OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNp
emVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMo
KSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1f
Y29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5k
aWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNl
Z21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3Ig
YW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50
cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRh
YmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2Ug
fTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAK
Ky8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93
cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0
ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVk
QnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBz
dGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAg
ICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAg
JiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEVuc3Vy
ZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIg
ZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgaXQgd2ls
bCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBl
bmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4
X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5n
IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBp
bmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRh
aW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBj
b25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8
R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdF
QkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAv
LyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIg
YXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2Ug
Y3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5oYXNPbmVSZWYoKSkgewor
ICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOworICAgIH0KKyAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
IHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUg
U2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAg
ICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpKSB7
CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIuZ2V0KCkpKTsK
KyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7
IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQg
ZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7
CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQor
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVy
KCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAgICAgICBpZiAoIW1f
YnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhh
c09uZVJlZigpKQpAQCAtMjY4LDIxICszODEsMjEgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBT
aGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRo
aW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBz
aXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAg
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRl
OgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7Cisg
ICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1f
cG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4
OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5
MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBA
IC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1Bs
YXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0Vs
YXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlp
bmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0g
ICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRh
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5m
by5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9B
cnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6
bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2Vj
YTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZv
aWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFz
dCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5j
b2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpm
aW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlz
dENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwg
a0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJm
MzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJl
ZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29k
ZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFj
ZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5ZmMyMjhhNmQ5YWJiYzMyMGVmN2Y2
YzhiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVm
IGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmlj
aWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhp
cyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBj
b25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGlmIChh
dXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRz
WzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
aWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2Fy
ZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBm
MDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDEx
IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGlu
Z3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNv
bnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1
ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhE
YXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJp
dG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJl
dHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZl
ciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9y
VHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBj
MGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3Njkz
OTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZm
ZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRp
b246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50Jilk
YXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2Vy
KXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7
Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9k
YXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRh
U2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXpl
OwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNV
SW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21l
bnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBA
IC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEp
CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxO
U0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0Rh
dGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0
YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0
YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAg
ICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQog
ICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkp
OwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdl
X2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2
LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0
YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+
IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5T
KFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRo
aXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNi
NDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5
MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046
OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVk
MmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERh
dGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtl
eUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBj
b250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8q
IGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0
YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVu
c2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0Nl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xv
Y2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3Vu
dCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0
RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5
SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBp
bml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRh
dGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYs
MTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtp
ZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVj
dC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRh
dGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRz
LmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4g
a2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJ
ZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMg
YSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5p
dERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAg
ICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAg
IGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0Fy
cmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29u
dGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4g
YXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0
dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQg
dmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+
cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgi
a2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2Jq
ZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEu
ZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJ
ZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVy
biBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVh
cktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIz
Y2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdj
MGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5j
b2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVy
aWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNv
ZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
aW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgz
ODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0
ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApp
bmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1Mjgz
ZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBA
IHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1v
dmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZp
bmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRl
clN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFu
dD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAg
ICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFy
aWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxw
dHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxw
dHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRk
ZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5
NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsK
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNv
ZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0
Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0
MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
U2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVm
UHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMo
ZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8
U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRC
dWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVk
QnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7
CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50
cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQy
NzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2Ni
NGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZp
c2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZl
cnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250
Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZv
bnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7
CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5
ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRh
dGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hl
KiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6
Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlv
bkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3
Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5
OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9u
dEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRh
YmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFu
IG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsy
MjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3Jt
T3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3Jp
cHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8
U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwog
I2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250
UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5k
ZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5
YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEs
IFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92
ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVy
bCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3Zl
KG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0
M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5
cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAg
CkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGlj
aXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07
CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2Rl
ciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0
dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRj
MTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUg
PSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
Ym9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWlu
dDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNT
RVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVy
LnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRp
YyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1
aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRV
SW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFs
dWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9m
ZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0g
b2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3Jp
dGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0
aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAq
LwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAg
ICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAj
ZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkco
c2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAg
ICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29s
IGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1
ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4g
Y29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVy
dGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZm
ZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRl
OTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAg
LTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhl
ciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7
Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFs
c2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZl
cnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBt
ZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9h
ZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwg
VmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhl
IGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFz
IG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50
LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252
ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9v
bCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citi
b29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4Mjlj
ZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5
MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7
IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1
cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkg
fTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAg
IGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFj
NTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVh
OGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcg
QEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2Ug
dGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChp
ZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlv
bkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFU
eXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBp
ZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7
CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
RGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5H
X0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVn
aXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAg
IGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJw
c3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5
UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3Jl
YXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAg
ICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRp
bmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VV
UkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9y
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0
byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0
b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNl
OltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VX
aXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtl
eVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRh
LCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkg
cHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNs
YXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VE
YXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
XTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNo
IHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBv
cnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5
cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVj
dG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRh
IGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vz
c2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VE
aXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5T
U3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAt
OTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9u
c0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAg
IEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGly
ZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5k
aW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5n
ZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4
Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBh
cHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNl
cnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlE
c0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEw
OTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlE
cy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50
SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRL
ZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVy
OmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVx
dWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0
YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9y
PFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChh
dXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0
cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFj
a0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tB
Z2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRh
aQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0
byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRT
dHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQt
PnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRF
bmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6
ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5j
b2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsK
ICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAg
ICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAg
ICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVz
dHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0
LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92
ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0g
a2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmll
ciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAg
IFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRl
bnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBv
cHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdn
cmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdh
dG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWlu
UHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0
OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
YXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5z
ZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURz
Rm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5T
RGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3Qo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAg
IFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRl
bnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBv
cHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgz
ZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1
YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFn
ZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAog
ICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRl
ckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJl
c3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7
Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21w
bGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQo
KS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRj
aF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsK
ICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3Mi
XSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11
dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0
RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9p
ZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29t
cGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAg
ICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRi
ZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRk
ODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7
CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAg
ICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBu
c0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRp
c2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5n
ZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHld
OwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2Jl
Mi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcg
KzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4
NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+
IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJj
ZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBs
b2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZv
aWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIp
Ci0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAg
bV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigq
bV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAt
MjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNSw3IEBAIERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6
ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNl
NjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVz
cG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsK
ICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRh
dGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2
YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJl
Y18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2Ny
aXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVk
M2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+
IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2
b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7
Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZm
ZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBz
dGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNv
dXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291
cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNv
ZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAg
ICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0lt
YWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdl
dFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgp
LCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAg
Y29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01
NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEg
aW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhv
dXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVm
ZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQg
dGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQg
dGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURl
Y29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRh
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQp
OwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFy
ZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0
YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwogICAg
IC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRo
ZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5v
dCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50
ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9y
IHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRp
cmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVy
R2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRy
PENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVy
Q3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUo
KSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92
aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJl
Y2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcw
MzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRm
MGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERG
RG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhD
RkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJv
dmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2Nv
YS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRh
YzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3Jt
RGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJl
dHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXgg
MzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYz
MTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVl
RGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAg
YXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRh
U2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQy
ZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4
NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRm
b3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVj
dEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+
IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRU
YWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRh
YmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLmNj
ZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGli
cmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFy
eTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFy
eSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4
OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2
OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6
aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1h
cChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFj
ZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0Zh
Y2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyAr
MjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9
IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhB
UkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2YuLjE0NzQ4
MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1
ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hh
cmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1
ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIq
IG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcxNWJkYTc3NTk4OTAxMzM2
YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIyMDQ3YTkxYmM3M2Qw
ODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tW
ZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xODIs
NyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdz
dE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1
MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2Ez
NTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4
ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVy
RGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIEltYWdlRGVjb2RlckdT
dHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewor
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAg
IG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVm
ZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVj
b2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBz
aXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVj
b2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwog
ICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhp
Y3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCA5MTEyNjU5MmM4YmE3NmJkNjYzNzMzMjRkNWJiMjk2YjMxZGUwM2JlLi5kZjFjYmI4NWYy
MmNjZjQ2M2JkNTU3YmExN2UwOWE1Y2UzOTAwYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY1NCw3ICszNjU0LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVk
KEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5w
YXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBpbml0RGF0
YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRh
KCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJp
bml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5
bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNp
emUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9h
ZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3
ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUxODAx
ZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdNYXJrdXBQ
YXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3RhcnRFbGVtZW50KEdN
YXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFy
KiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3
LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFyc2VDb250ZXh0Kiwg
Y29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAodXNlckRhdGEtPmlz
UGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBz
c2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAgIGlmIChwc3NoLmhh
c192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAgICAgfQogfQogCkBA
IC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRl
eHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFy
c2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBt
YXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBh
cnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJ
Zk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQ
YXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdU
Rk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNp
emUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJh
NDY0N2QyZjEuLmQwNDQ0NjhkMzFiOTYwOGJlYjIxMzdjNjFiODIzOGRiNjQ4MzA3ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgsOCArMzgsNyBA
QCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlv
bl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5p
dERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBtX3BheWxvYWQoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1bHQ7CiAKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1aWRzIGZvciBi
ZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwg
R3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVj
cnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAiY2Fubm90IG1h
cCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fcGF5bG9hZCA9
IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
KTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQo
bWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAgICAgIHBheWxv
YWQuYXBwZW5kKHBhcnNlUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKICAgICBJ
bml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBh
eWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxv
YWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKICAgICB7CisgICAgICAg
IGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0
cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAgICAgICAgICAg
ICAgICBwYXlsb2FkLmFwcGVuZChwYXJzZVBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGluaXREYXRhKQpAQCAt
NzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3QgdmVyeSByb2J1c3Qs
IHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGluaXREYXRhLm1fc3lz
dGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7
CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQog
Ci0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVy
biBtX3BheWxvYWQ7IH0KKyAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lz
dGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRD
b250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5
c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVu
dHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5
YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZi
NGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShm
b250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQs
IGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMu
LjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3Jt
RGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZE
b2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMx
MWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3Vt
ZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAg
ICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdp
dGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0g
YWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZE
b2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRm
OTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3ND
b3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBp
dGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQg
aXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0
aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBp
bnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBA
QCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxp
Y3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0
cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5k
ZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4m
IGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFz
c2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBh
cnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENv
bnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5j
ZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJl
IGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBn
ZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4m
IHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBA
IC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ld
LnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBh
cnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRh
OjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhB
c3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1
ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDog
VGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBo
Q291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0
WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRy
dWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rp
b25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1
Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVy
dGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhD
b25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBn
bHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291
bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEds
eXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29u
c3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRI
VGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09m
ZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNv
bnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpA
QCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRo
R2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1h
dGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBo
SW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1
Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zm
c2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0
NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkz
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBP
cGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpA
QCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0
YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAg
ICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlw
ZXMuaAppbmRleCBjODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5
NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
CkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQz
Ml90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWlu
dDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50
MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIg
fHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCog
dmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxl
QmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wg
aXNWYWxpZEVuZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZv
aWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVz
ZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Rh
dGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0
ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0
IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
dWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRy
PFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNl
dCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENv
dmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0
aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdl
SW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNv
dmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAg
Ym9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYg
Y292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNv
dmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTky
MzA1NmFjYTNmY2JmOTJkMWEuLjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgw
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2
b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0
byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFi
bGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1l
IHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24g
ZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRh
LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnRE
YXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnRE
YXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZv
bnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgp
OwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNm
bnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVu
YW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnRO
YW1lLCBWZWN0b3I8dWluCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUg
bmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lKQorUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250
RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5G
b250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0
MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3
ZDM3MmMyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9y
eVJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRl
OgogICAgIFZlY3Rvcjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVG
b250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYp
OwotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsK
K1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4
NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNh
M2JjMTAzMjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5j
cHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJs
ZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVy
YWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0
IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVy
LCBjb3ZlcmFnZU9mZnNldCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3Vi
VGFibGUgOiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0
IExvb2t1cFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxl
T2Zmc2V0c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRo
aXMgZmllbGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJt
aW5lZCBkeW5hbWljYWxseS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEds
eXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Ym9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudFN1YlRhYmxlID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyAr
MTk0LDcgQEAgc3RydWN0IExvb2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFd
OwogCi0gICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1
cCh1aW50MTZfdCBpbmRleCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAg
ICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNl
dHNbY291bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBl
OjpVSW50MTYgbG9va3VwTGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1
dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhT
dWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEds
eXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAo
IWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyAr
MjI5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5
cGU6Ok9mZnNldCBmZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFn
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAg
c3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRh
ZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRh
YmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0g
MDsgaSA8IGZlYXR1cmVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChi
dWZmZXIsICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBA
IC0yNTUsNyArMjU1LDcgQEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0
dXJlSW5kZXhbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6
OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShP
cGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZmZWF0dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3Qg
U2NyaXB0VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdT
eXNPZmZzZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IGxhbmdTeXNDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNS
ZWNvcmRzW2NvdW50XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBU
YWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9
IHNjcmlwdHNbMV07CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpU
YWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3Jp
cHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNj
cmlwdENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3Vu
dF0pKQpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1
bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2Ny
aXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsK
ICAgICAgICAgaWYgKCFjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50
XSkpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2Ugewog
ICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0
c1swXS5zY3JpcHRPZmZzZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVm
YXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0
VGFibGUgPSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUp
CkBAIC0zMzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgbG9va3VwTGlzdE9mZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3Qo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0
dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zm
c2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1
ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRM
aXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4g
dmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQor
ICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0
PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxv
b2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQp
OyB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExh
bmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsK
ICAgICAgICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMo
YnVmZmVyKTsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5
cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwog
ICAgICAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIp
OwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAg
ICAgICByZXR1cm4gZmVhdHVyZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25z
KEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRp
Y2FsRmVhdHVyZVRhYmxlID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZl
cik7CiAgICAgICAgIGlmICghdmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcg
QEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4
VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2
X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsK
ICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRl
VGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhp
cyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpW
aGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRh
YmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcg
KzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZm
ZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAg
Y29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxl
PE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdz
dWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpi
dWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdl
ZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYx
YWMzNDM0YmM4N2E3ODNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEw
Niw3ICsxMDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICBy
ZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAg
ICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9u
dFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIx
ZWU5OTcxYzRlZi4uZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1
Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBG
b250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVj
dCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2Vk
U2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07
CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4
MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFl
MDU4OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3
LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0
dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAg
U3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRS
ZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4
NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
Ym9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJ
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0
YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQ
bGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQs
CiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMo
MCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAK
ICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250
RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAg
IFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUy
NTgwOTg2YS4uN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVw
bGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wg
Y2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAot
ICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1
c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURh
dGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1
c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9t
RGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1
c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29s
IGhhc0N1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZv
aWQgY2xlYXJDdXN0b21EYXRhKCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2
LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAg
ICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZh
bHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmEx
NGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5
MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERh
dGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRh
LmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMg
YWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAg
ICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAg
ICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygp
OworICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0
YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAg
aWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFi
bGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAg
ICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJm
MzA1Yy4uZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wg
aXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFy
a2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNz
X3N0cnVjdCogaW5mbykKIHsKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2Vy
X2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CkBAIC0yNDIsNyArMjQyLDcg
QEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21w
cmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBK
UEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJv
ZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rl
cjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4u
YzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikg
eyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAg
dm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lk
IHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlm
CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0
ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFjNGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Omdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3Ry
aW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0
YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGll
bnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50
LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGll
bnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQu
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0g
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3
ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAg
ICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlm
IChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2
ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJp
YnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlm
IChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2
ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJp
YnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVs
bHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNl
bnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29u
dGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0
b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9h
cmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsK
IH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0g
cGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBk
YXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBp
ZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291
cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRV
VEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1J
TUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1h
Z2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlv
blNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5h
bWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYg
Ly8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQog
CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
KSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7
CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSku
Z2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAg
ICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJ
dGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5s
aW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEu
b3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRC
dWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAg
ICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAg
IC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVh
bURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAg
ICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxv
YWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAg
ICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVk
IHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMs
NyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0K
IAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1
ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlw
ZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAg
LTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5n
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilp
bmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRl
bXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFz
dGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAK
IFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkz
NjkxYmZlZGNjOTJiNDIuLjdhNGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJl
dmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJl
dmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEg
eyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5h
bFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAg
ICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYy
ZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2Mz
MTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYg
Y29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0
byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZp
bGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwu
dXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFw
cGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyBy
ZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJl
ZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
aWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0z
NjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
IHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAg
ICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lS
VEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAg
dGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0
ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2Yjkw
Y2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1
NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndl
YkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJp
bmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGll
bnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRh
OndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07
CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnRE
YXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwog
CiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3Rv
bURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFzdGVi
b2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFk
eVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwog
ICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4
MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUx
YTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlw
ZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBh
c3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtk
YXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9m
RmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBv
CiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYg
KE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBl
OkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBk
YXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlm
IChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBl
IDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlw
ZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0
Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAg
ICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBA
IC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdy
aXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9
IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2Fy
ZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShw
YXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURh
dGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRl
RGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVd
OwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
Y2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVN
SU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1U
eQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAg
TlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0
ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYg
KE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8g
bnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4g
Y3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0
YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAg
YXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjEx
Zjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUy
MzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRh
TG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsK
IAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNm
NS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3
LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAv
LyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0
YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhv
dXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVy
RGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUs
MTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEo
KQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9j
ayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+
YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0
YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEg
PSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50
YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggMzczMWEx
YWQ4NTRhNmM4M2Q2Y2YwNGU2ZTEyNjJlN2QwMDhmNzkwNS4uYzdkMThiZTFkNmFiYzNmMGNjYTM1
MDZiNjVmYzNkOTgxNmQyNGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAKQEAgLTQxMSwxMyArNDExLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjps
ZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBj
b25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAg
aWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRh
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2
ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQx
NjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
VGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjks
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYg
Ym91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZl
cigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fs
d2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFt
KSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4
IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3
YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVE
YXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMz
NWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVj
dCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQor
ICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2Uo
JnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4
IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90
U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlv
bkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZ
ZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVm
ZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNs
YXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9
OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIy
ICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRh
dGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRh
dGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAg
Ly8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBh
ICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdl
cy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBs
ZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20g
dGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsK
ICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tE
YXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRh
aW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdl
bmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFz
ayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRh
ID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3Rh
dGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVz
cG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0
byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRh
c2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAg
ICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUlu
ZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4g
cmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMp
Ci0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0
YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpl
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVk
Q29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0g
bV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJh
bmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEw
YTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4
MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcg
KzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYu
c2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNl
bGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRh
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9m
Qnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRh
dGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4p
c3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlk
UmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4
M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkz
NmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3
IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAg
cmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGlu
Zy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0x
MzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAg
ICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBh
cmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1
c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9i
dWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRp
cGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsK
ICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwx
MyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAg
ICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkg
JiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBm
aW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0
Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNo
KSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxN
YXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhl
cmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwg
cHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91
bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRh
cnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1f
Ym91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5
OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAg
IGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmls
ZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xv
c2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5k
ZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkz
MjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUK
ICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
QnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1
cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZl
ci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERp
ZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0
NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi5jNDYwZjVmYTQwZGRhMjFkZWI0
NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDggQEAgc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1v
cnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRh
dGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayht
ZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAog
ICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdP
UkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAg
ICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9
IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3
cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBX
cml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xv
c2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRl
ZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1
MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7
CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9S
ZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0g
R2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAg
IERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZl
ci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBi
eXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFz
dEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7
CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmlu
ZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFi
Y2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1
dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3Rl
cnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3Ry
aW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3Bv
bnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlu
cyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NE
TUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRp
ZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNl
cnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6
ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNh
bGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFs
aWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNl
LT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3Ig
PSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNp
emUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJp
bmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQx
YzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5
M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2Ny
aXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmlu
Zy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAt
NDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICBy
ZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0
cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAg
bV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21l
bnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAg
LTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAK
IGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAm
JiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwor
ICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYm
IG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRh
KCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIt
PmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5k
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMx
MzRjNjY0Ni4uZDFhNzdiNThiNjQ0YTkwYjkwNGVmZGMxZmViYzZjMDY3NDRmOTIxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
KTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIq
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBT
Y3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1f
YnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRy
KTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3Jp
cHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkp
IDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1
ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBj
b250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQo
Y29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3Jp
cHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2Ny
aXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0
NS4uZTVmMzQ5YjQ4Mjc0NmY5ZWRiOWM1ZjYzMWJmYWQ0YjQxOTk4YmEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiAr
NDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6Oldvcmtl
ckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRh
KG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzgsOSAr
NzksMTMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0g
ICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYg
KG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNv
bnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBp
ZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1
b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSkKICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAg
ICB9CkBAIC0xMTcsOSArMTIyLDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmICht
X2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAg
ICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2
ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5YmI1MTAyNmY1ODNhMDliMTg0N2E3MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAt
MzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9v
bCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJy
b3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlz
TnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
TG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9u
dExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsK
IAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYyNzg5Li4xYzBiNTc4
YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUyNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVm
PENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1
dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9k
eSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJl
Y2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZd
IChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBk
NjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDVi
Y2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2Ny
aXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0
byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28g
bWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVm
ZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFw
cGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVT
aXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVy
biBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5
Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRw
UmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
ICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkp
CiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRp
bWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3
LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9i
KCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29y
a1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50Lgog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIs
IG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRh
a2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0g
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlw
ZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2gg
bWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAg
LTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVz
cG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkp
OwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNy
ZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7
CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6
IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VC
dWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0
ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0g
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsK
IH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1
aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2Ugewog
ICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBl
bmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5k
ZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1
NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJv
dHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBV
UkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jl
c3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMw
ZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGlj
IHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0g
Z2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwog
ICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3
YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0
Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGlj
IHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxE
ZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAK
aW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBl
Yzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcs
NyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJs
ZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNv
cmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNl
JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNo
RGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVy
ID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
ZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRh
UmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVh
YmQ4NDE4NGM2MzM2YzguLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQK
IAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYm
IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBk
YXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtM
b2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3Rh
dGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpTeW5jaHJvbm91c0xvYWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291
cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJl
cGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFy
YW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1
ZmZlcmVkRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAg
LCBtX2ZpbGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFy
YW1ldGVycykpCiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9w
YXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7
ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAg
ICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkgfQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3Mo
bV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAg
ICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6Omdl
bmVyYXRlKCkgfQogewpAQCAtMzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RM
b2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlz
U3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3Mp
Ci0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNl
Q2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMg
PSBtX3BhcmFtZXRlcnM7CkBAIC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJl
c3BvbgogICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYg
bV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9u
Zz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAg
ICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAg
ICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1
ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJp
bmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAg
ICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3Vs
ZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYg
bV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxw
dHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9u
c2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxw
dHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAo
bV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNj
ZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1v
ZGlmaWVkCkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAg
ICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051
bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJl
YW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAg
ICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0
eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1
ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9z
c09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVh
c3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhh
bmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUo
KTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEt
PmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgp
KTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0
YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDks
MTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAo
aXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgq
bV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRN
ZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hy
b25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1l
dHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVm
ZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVt
b3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZl
cigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVy
ZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNz
KSk7CiAgICAgfQpAQCAtMTI1NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVk
RGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VS
VChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBl
bnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xP
RygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2Ug
bV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMjg3LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlT
dG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBj
YWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0
d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdU
Rk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJl
ZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCks
IFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIp
OwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1f
cmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYg
eyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9y
ZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBw
ZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAg
ICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBh
OWYxNTk1OTdmOTcuLjM0NWMyZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNw
b25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYs
NiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsK
IGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAg
fTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9u
b3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6
OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+
IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERh
dGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hl
OjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsK
ICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRp
cmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJm
ZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3
ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRv
IHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6
ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJh
MmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENh
Y2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBj
b25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJv
ZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0g
eyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6
Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFs
PFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUo
cmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgp
KTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwog
CiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZh
MDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYy
ZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3Rv
cmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAg
RGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAg
IERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVy
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAg
ICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9
IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVy
LmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJu
IHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2
ODM1MzZlYTBkYzgxOTMuLmZlNzU5Y2VkYTJkN2JkMmVhZTg3ODk5NzgzZWZmMzM5OTJhNzNjMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAg
U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9i
YWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAgICAgLCBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV9vcmln
aW5hbFJlcXVlc3QocmVxdWVzdCkKLSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSkKICAgICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlG
b3JWYWxpZGF0aW9uKSkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50
cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKQEAgLTEwOSw3ICsxMDgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJl
c3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYg
KG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAog
ICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRl
ZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFBy
ZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBj
b25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0g
ICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUo
KSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0
KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAg
ICB9CiB9CiAKQEAgLTEzOCwxMSArMTM3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
aWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1fY2FjaGVFbnRy
eSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1f
Y2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICBpZiAo
IW1fY2FjaGVFbnRyeSAmJiAhbV9idWZmZXJlZERhdGFGb3JDYWNoZS5pc051bGwoKSkgeworICAg
ICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9y
ZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9k
eSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdl
IGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVD
YWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAg
ICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwg
bV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1f
cmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBk
aWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUx
NGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFi
NTUxZDdhMDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBA
IC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IG1fcmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gbV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1
MjA1YTMuLmY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYm
CiAgICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNw
b25zZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBi
eXRlcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0
ZUdCeXRlcygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0
cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0
ZXMuZ2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhl
ZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4
ODI4MTAxZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAy
YmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1
MWQ2MGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaApAQCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkg
PSBkZWZhdWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAg
ICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5k
KGJ1ZmZlcik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91
cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7
IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7
IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZl
ci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShE
ZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEy
N2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNv
bnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFy
ZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8
PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJv
dGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIu
Ljc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5z
aWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAog
cHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjVi
Zjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyAr
NjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25l
ZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJl
c291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2Fy
Y2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVs
ZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNi
YTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAg
ICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwg
c28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0
LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVl
KCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURh
dGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4
IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUy
MDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAl
bGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChk
YXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7
IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYg
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2YTlk
NDJlYzlmOTZiYTM4ZmJlNTEyNTU2ZTE2NC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3
MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cApAQCAtNTUsNDkgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLSNpZiBVU0UoQ0YpCi1zdGF0aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxs
b2NhdGUodm9pZCAqcHRyLCB2b2lkICppbmZvKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHN0YXRp
Y19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5
IHJlZigpIGluIGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQotfQotICAgIAot
c3RhdGljIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VE
ZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxvY2F0
b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsCi0gICAgICAgIHJlc291cmNlLAotICAgICAgICBOVUxM
LCAvLyByZXRhaW4KLSAgICAgICAgTlVMTCwgLy8gcmVsZWFzZQotICAgICAgICBOVUxMLCAvLyBj
b3B5RGVzY3JpcHRpb24KLSAgICAgICAgTlVMTCwgLy8gYWxsb2NhdGUKLSAgICAgICAgTlVMTCwg
Ly8gcmVhbGxvY2F0ZQotICAgICAgICBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUsCi0gICAg
ICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUKLSAgICB9OwotCi0gICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKLX0KLSNl
bmRpZgotCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hh
cmVkQnVmZmVyKCkKLXsKLSAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFy
ZWRCdWZmZXIgaXMgZGVhbGxvY2F0ZWQuCi0KLSNpZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFsbG9j
YXRvciA9IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0
byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBkYXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2Nh
dG9yLmdldCgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQo
KSk7Ci0jZWxpZiBVU0UoR0xJQikKLSAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdS
ZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRh
dGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVy
ZWYoKTsKLSAgICB9LCB0aGlzKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5
dGVzLmdldCgpKTsKLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci0jZW5kaWYKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMg
fV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRo
aXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KKyAgICB9KTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0
cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0
aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CkBAIC0xMzgsOSArMTA0LDcgQEAgU2hhcmVhYmxl
UmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVt
b3J5LCB1bnNpZ25lZAogewogfQogCi1TaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291
cmNlKCkKLXsKLX0KK1NoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9IGRl
ZmF1bHQ7CiAKIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhh
bmRsZSkKIHsKQEAgLTE2Miw3ICsxMjYsNyBAQCB1bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJjZTo6
c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KLSAgICAKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFkOWRl
MzJkMWMzYTU0NzA1MTYwYWE0ZjdjNmNiNy4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2Ni
NGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBA
IC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxlUmVzb3Vy
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJjZT4geworY2xhc3MgU2hhcmVh
YmxlUmVzb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3Vy
Y2U+IHsKIHB1YmxpYzoKIAogICAgIGNsYXNzIEhhbmRsZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFu
ZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEyICs4
MCwxMiBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJl
ZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZl
cigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1bnNp
Z25lZCBtX29mZnNldDsKLSAgICB1bnNpZ25lZCBtX3NpemU7ICAgIAorICAgIGNvbnN0IHVuc2ln
bmVkIG1fb2Zmc2V0OworICAgIGNvbnN0IHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggYzBiNmVmM2ZhM2EyZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4u
NjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcg
QEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAg
ZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0g
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUp
KQpAQCAtMjM0LDEzICsyMzQsMTMgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAo
c2hhcmVkTWVtb3J5QnVmZmVyLT5zaXplKCkgPCBidWZmZXJTaXplKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBidWZmZXJTaXplKTsK
KyAgICBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZm
ZXJTaXplKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMg
dm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAg
ICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29k
ZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkp
OwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRh
KERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEw
ICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5k
RGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUg
PT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6
ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5h
cHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0
ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXpl
OwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3Bv
bnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVy
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgp
IH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
QEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0
aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9p
ZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29k
CiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZi
NTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRl
SW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vy
c29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUo
RGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdm
MzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBl
NzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2Vs
ZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRD
dXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9u
LnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAg
ICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUy
YzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1
MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dl
YkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9w
dGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3Jl
YXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1
ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNl
RGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAg
IGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRl
YzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4
ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1l
bnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNk
MjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0
MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNf
Q0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJ
bWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBi
b29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFn
ZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQg
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0MTky
ZjE5YWExYzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5ZDEz
NTA0NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRl
bXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0
aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1l
bnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUz
Yy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QK
ICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApA
QCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNl
cmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9
CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2Mw
NzZlY2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEy
OWE2MDEzOGExYjdhZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBw
SGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlm
IChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7
CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxv
Y10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9w
dE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQu
aGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRl
eHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFw
cEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dy
b3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3Jl
OjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDky
YmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2ZkM2Zm
YmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRh
cmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEq
IGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1
c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwg
Jmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rp
b25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0
YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRh
LT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRh
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43MjVi
NzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEyMzIs
NyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZp
Z2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2Fz
dDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAx
NzQ3MGM2MmM3MjBkZGU4MmI3OTE1YjdiM2I1ODIwMjNlYjUxZWM3Li5iYmVmNjY3MzUxYTBhMmJm
NThkZmFmNWE3MjEwMDA2YTMxOGVhZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtNDE5LDcgKzQx
OSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKDApOwotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIg
Kj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlwY0hh
bmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiAgICAgICAgIGF1dG8g
bmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1
ZmZlckZvclR5cGUoYnVmZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgICAgIGRpZE1v
ZGlmeUNvbnRlbnRzT2ZQYXN0ZWJvYXJkKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lLCBwcmV2
aW91c0NoYW5nZUNvdW50LCBuZXdDaGFuZ2VDb3VudCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG5ld0NoYW5nZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2Fj
OS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3
IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0
SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCld
KQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0
aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChb
dHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2Fy
ZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9y
VHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcw
LDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShX
ZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxU
eXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJv
YXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0g
YXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJj
aGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5z
RGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZl
XTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2Fy
ZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0
eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5k
YXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdl
LT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilw
bGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1
NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRB
dERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0
YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1l
ZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0
cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9N
UGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRh
dGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdl
dCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3Jh
bnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7
CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3Jh
bnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0
ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5
ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNp
bmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJv
b2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3Jl
OjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRp
ZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1M2Ji
NmQ1ZGQxMGNiNjM1M2FhZWY5MzU4ZTAzYjA0MDAzMmY5Njc3Li44ODgyN2ViMjkxMmE1MzRlOTI1
YmI1ZmE4Zjk2MjNhZWMzYTEzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTE3OCw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVu
VG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wg
cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBh
c3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYy
MDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3NjcwMzU0
ZmVhZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhX
ZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcmVx
dWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5mbyhBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAmcGFnZSkp
CiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTg3LDEwICsx
ODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwog
CiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAg
ICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0Rh
dGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9u
VHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsK
LSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQot
ICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXpl
KCkgfTsKLQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVy
KG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0Rh
dGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRp
ZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTky
NDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVmZGFhYjdh
NWExYmU2YWRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBAIC00NCw2
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE3LDcgQEAg
cHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlv
bkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1
ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9v
bCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2
OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBp
c0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hh
bmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRS
ZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMy
ZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2Ri
NTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlk
Q2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShp
bWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBhOGU5
MGU0MjlhNmVjZTEzNjg3YjlmOTFiYzczODJjYTdjYjBmZjNkLi42NWU1ZDgyYTM1N2JjYmFhZjk1
MDkwMzg1ZDJhZWRhMmVkZjM0MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3
IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNl
bmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERh
dGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAg
Zm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWRE
b2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBA
IC02NTk0LDcgKzY1OTQsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNN
YXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICgh
ZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAg
ICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAg
IHJldHVybiBOTzsKIApAQCAtNzU2NSw3ICs3NTY1LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFz
c2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRX
aXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAg
ICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBu
ZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFt
ZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNp
dCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0g
fTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9
IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYg
Y29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggNDY3OWQ3YjA5ODFhYTdkM2ZjZDliZGU5MGVkNmZmMmFjMjMy
ZWUxNS4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyAr
MTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYgaW1hZ2VIYW5kbGUKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFTaXplKSk7CisgICAgYXV0byBidWZmZXIg
PSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRh
U2l6ZSk7CiAgICAgcGFnZUNsaWVudCgpLnNhdmVJbWFnZVRvTGlicmFyeShXVEZNb3ZlKGJ1ZmZl
cikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQppbmRleCA2ZDMzMzg2OWU0ZTAwMTJkMjdkM2ZlODVkODVlNTNhNGVkOTY5NjBhLi5hN2Zi
NGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBT
dHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJv
eHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTI0MCw3ICsyNDAsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cgogICAgIGF1
dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRN
ZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1
ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4gc2hhcmVkTWVt
b3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAog
Ym9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjc1LDE1ICsyNzUsMTQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFMKICAgICBhdXRvIHNoYXJlZE1lbW9yeUltYWdlID0gU2hhcmVkTWVtb3J5OjptYXAo
aW1hZ2VIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
ICAgICBpZiAoIXNoYXJlZE1lbW9yeUltYWdlKQogICAgICAgICByZXR1cm47CisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VI
YW5kbGUuZGF0YVNpemUpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJbWFnZS0+ZGF0
YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7Ci0KICAgICBpZiAoIWFyY2hpdmVIYW5k
bGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9
IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUFyY2hpdmUt
PmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSkpOwor
ICAgICAgICBhcmNoaXZlQnVmZmVyID0gc2hhcmVkTWVtb3J5QXJjaGl2ZS0+Y3JlYXRlU2hhcmVk
QnVmZmVyKGFyY2hpdmVIYW5kbGUuZGF0YVNpemUpOwogICAgIH0KICAgICBwYWdlQ2xpZW50KCku
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIFdURk1vdmUoaW1hZ2VCdWZm
ZXIpLCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShmaWxl
bmFtZSksIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgV1RGTW92ZShhcmNoaXZl
QnVmZmVyKSwgb3JpZ2luSWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5
MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVj
dGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAg
ICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJD
b3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29s
KSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpp
bmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdm
ZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRl
OihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAg
ICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJh
bmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgp
KV07CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdE
ZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0Rl
bGVnCiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGlu
Z0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Om1fY29udHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVh
dGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBl
IGluIGRhdGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5k
KHR5cGUpOwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAg
cGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUz
NjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4
MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2Us
IGNvbnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFn
ZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYg
cGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0x
NTYsNyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3Rl
Ym9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBp
dGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRl
bS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBw
YXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUx
Mzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJh
NThkOWM1OGU4ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRD
aGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZp
Y2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0g
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChX
ZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBs
ZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZl
N2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3
MmI5ZjdkZTNhODljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0
YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQq
IGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hh
cmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSkt
PmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZm
ZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6
RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1
ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwg
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsK
KyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVu
c2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+
c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAg
ICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9B
UEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0
b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5n
KCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFi
MDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3
OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
TWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYg
KGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0g
ZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYx
M2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMxZmUy
NzBjOGEzOWYxMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsyNzUs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIg
ZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5
OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBz
aG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7
CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5n
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3Jl
TG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCBkNTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li41OGMx
YzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0NjE1ODUyYTAyMDg3Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBA
IFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQs
IFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdp
bkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBt
X3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZp
ZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURh
dGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFn
ZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdp
blZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVCht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3Bv
bnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFu
dWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNDM3LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZh
aWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQp
IHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5p
c2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJl
c2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjcsOCBAQCB2b2lk
IFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAm
JiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAg
ICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVh
bFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAg
IHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRl
bGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobV9t
YW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAgIGlm
IChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+aXNO
dWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRha2Uo
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAg
ICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgp
LCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9
IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFs
U3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgw
MjNmMjMuLjM0YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBkYjNjZDYwMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQx
LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1F
OiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMjUyLDcgKzI1
Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFs
U3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVh
bUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFt
RGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9tYW51
YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNp
ZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAg
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5
YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uNGQyNjFkODJjZWNkZTA5YWFhNDVlZGNhNGUwNTQx
OWY1NzEzNDBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAg
LTc3LDEwICs3Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
IHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+
Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAg
aWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9u
c2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRl
cigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0
YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwg
W3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAg
ICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0s
IFt0aGlzXShTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2
ZURhdGEoYnVmZmVyLmdldCgpLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1E
YXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRl
eCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi4xMWJiYWRiNDEyOGRm
MWM4YjkyZGU0NDNhOWQ0NmFjYTAzM2ZlMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9i
TG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZv
cm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0
YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFNoYXJlZEJ1ZmZlckJ1aWxkZXIs
IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Pj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFh
NzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1f
cGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYu
LjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmco
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAog
ICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAg
IHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEw
OWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3Vy
Y2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1
c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUo
KSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKaW5kZXggNWQwNWMwZWFiNzZiNjJiNGY4MzZjODU4MjIxZmVhNDQ3MmUwNTU2ZS4u
NmYzZjU2NmM1MmYxZTM5ZGVmMDBiNWYzMTlmZWJhZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMp
LCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50
OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hh
cmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7
CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2
ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFu
ZGxlOwpAQCAtMTQ1LDcgKzE0NSw5IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmCiAgICAgaWYg
KGlwY0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6
bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsK
KyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRs
ZS5kYXRhU2l6ZSk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFt
ZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQpAQCAtMzIyLDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA0
LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlw
ZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5k
bGUpLCAwKTsKQEAgLTQxMiw3ICs0MTQsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1l
bW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0
YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+
Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIFVSTCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5
OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgwOGUxZDZlYjJhZTMy
YjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAg
LTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0
TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcg
Kzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxT
dHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsK
ICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04
OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAK
aW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4
MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJD
bGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkg
fQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmll
d0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7
CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXIt
PnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBh
c3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5
YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLjc2ZmZhMTExMzkyYTlkM2I0Zjg1YjU5OGNk
NmFiY2NlNTE4OGYwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
CkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7
CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmlu
ZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUz
N2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAg
TlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNl
KCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+
aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+
ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmlt
YWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQog
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hp
dmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVy
LmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjky
OWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBT
dHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAg
ICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
cmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEo
KSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2Rp
bmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
YWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRz
QXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggMWNhOWMyM2Q2NzdmMDNhMjljNjBmNWIyYThiYWM2ODBkNmI1Yzg0My4u
MmI3NGY3NTE1NmFiZjZjMDExMDgwMDEwMWVjN2E1ZjcwOGQwYmUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3MzcsNyArNzczNyw3IEBA
IHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0
IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3Jh
Z2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgaXBjSGFu
ZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3Jv
bGxUb0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChzaGFyZWRNZW1vcnktPmNyZWF0ZVNo
YXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdo
bGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJk
MDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyAr
NTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9u
KCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBl
MThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4
OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsy
MjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2Ny
ZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJ
VF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsy
MzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2Ny
ZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRF
eHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5z
aW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42
MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICsz
ODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRh
CiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1
ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVm
N2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2Iz
NTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNz
UmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0
dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0
Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6Ondp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIK
ICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRl
NjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVz
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5n
IHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjEx
MDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
YgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDks
NyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwg
dHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4u
YzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2
Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVs
ZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXBy
ZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0
Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYz
ZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAt
IChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UK
IHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAg
Ci0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRh
dGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAg
YXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50
TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJj
aGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYy
NDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFl
Yzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBj
cmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAg
IGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAg
ICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRX
aXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZl
ci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdl
dCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNF
bXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDEx
YjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9p
ZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3Vy
Y2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0
YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9
IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWws
ICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0g
ICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJj
ZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAg
ICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJh
bWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291
cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIg
ZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlw
ZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2Vi
UmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0Rh
dGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmluZyAq
KV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygp
OwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291
cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0
dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0
YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6
ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkg
OiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNj
YjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0
ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNw
cApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5
U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJl
YW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5
U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3Ry
ZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3Zl
KGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAy
YmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIx
MTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVi
bGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4g
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3Rh
dGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01f
T3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0o
KTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXpl
X3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFiZTlm
ZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlh
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0
LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoq
IHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRh
dGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRh
dGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhz
dHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFj
YzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2Zi
M2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZWVh
OTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2
NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlv
bkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBi
NDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIx
ZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
YXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6
ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRl
cikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZU
byhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJl
YW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0
cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZk
YWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBA
QCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJj
ZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRh
YjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNl
IGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJl
c291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNl
KiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24K
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0lu
XyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYzZGRkODA3ZGMxYmQz
OTc2ZTY4ODM2ZjkzYzY0MzkwYjUyY2VlNGMuLjZjY2YyOTdlZDdhZWI0MWViYzE5NzAyN2Y5OGMy
ODQ0ZDk4ZmU2YzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAg
ICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAy
MS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERp
c3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25l
IGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIw
MjEtMTEtMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBzZWxlY3Rpb24gaW50ZXJm
YWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZh
YmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li42MWExMWZmNWJmNTVhYTJkOThlNWJkYWI5N2RiYjNmOWQ2
MWFhN2ExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQzLDQ1
IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3Ry
aW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3Ry
aW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNp
emUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUo
KSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1
ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVY
UEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgp
LCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBl
bmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1j
bXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsK
KyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTYsMTAgKzg5LDEwIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFy
IHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsK
ICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVu
KHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVu
KHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVu
KHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFy
ZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRl
c3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNo
YXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFT
U0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24s
IGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBA
IC0xMTEsMTAgKzEwNCwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAw
MCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZl
Y3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3Zl
KHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAg
ICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMHg0MDAwOyArK2kpIHsKQEAgLTE1MSwxNyArMTQ0LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVy
bmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVs
dmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0
IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEu
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFu
IHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShs
ZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICog
NCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgp
LCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5z
aXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVD
VF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRl
cjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBi
dWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAg
IEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBp
cyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAg
ICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7
CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigp
LCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBF
WFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQg
aXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0
YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xNzUsNjAgKzIwNCw3MCBAQCBz
dGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21l
RGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsK
LSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0
b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywg
J2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdo
JyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RG
TW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsK
ICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8g
Z2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1
dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7
Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29u
dGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2Rl
ZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAg
ICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hl
Y2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdo
MS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBo
LnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCks
ICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwog
ICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlq
a2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAg
ICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7Cisg
ICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdo
MS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVm
ZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rv
cjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAg
ICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4g
YnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7
J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7
ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBi
dWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydh
JywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsK
LSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQ
RUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywg
J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9
fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydh
J319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVm
ZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAn
YycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsg
eyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKwor
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdj
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1
aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
dDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1
bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUx
MiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVm
ZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmco
KSwgIiIpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2
OGNmYjE4ODVkNGViMTEwLi44YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0Rh
dGEgKj4KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAK
ICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxv
IiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0Rh
dGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxv
RGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRh
IF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAg
IE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3Ro
OjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0
YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
d29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29y
bGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBh
dGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgo
KV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAg
ICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVu
Z3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5
dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNo
YXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRh
ICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0g
ICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAg
ICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07
CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdv
cmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwot
ICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAo
YXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUo
W3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERh
dGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291
bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAg
ICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+
IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBw
b3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdl
dCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5j
cmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3Nl
Z21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRh
LnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50
LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNv
bWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRl
ci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9U
UlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2lu
Z0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFM
VSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="470403"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445256</attachid>
            <date>2021-11-29 00:45:01 -0800</date>
            <delta_ts>2021-11-29 02:03:24 -0800</delta_ts>
            <desc>SharedBufferBuilder for EWS</desc>
            <filename>bug-233442-20211129194458.patch</filename>
            <type>text/plain</type>
            <size>499016</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2YjlmZjNlYmEyYjYw
MmE3MzVjYzQ5OGY1NjBjNzk4NjgxOTBhZC4uMGY4YTE4Zjc4OWI3ZjU4MjNhNDQyODMwYWM1MGVj
MzE0ZGJkYjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxMSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBi
ZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZl
cmVkRGF0YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICogbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVk
QnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051
bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3
YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWlu
ZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAg
ICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVl
IHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisg
ICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVy
IHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hh
cmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5
cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQg
dG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJl
ZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJl
CisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2Vk
OyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4
cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBU
aGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZl
cnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAg
ICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90
ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1p
dCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBk
ZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBj
b3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUK
KyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNv
bnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJl
ZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBo
YXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFs
IGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQu
CisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ug
b2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVu
ZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0Miwg
YSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3Jl
YXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBi
eSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJ
REJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2Nl
bmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZv
ckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZG
b3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0
aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxp
emVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0
YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
VUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdS
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6
Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5k
RmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxl
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJs
ZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNj
cmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJv
YXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEtMjYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFk
ZCBpbXBsZW1lbnRhdGlvbiBvZiBzZWxlY3Rpb24gaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0
aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1NzQ4ZGJlMjllYWJjYmVjNDJiMjQ5ZjhjNjVjZTI2NDg3M2I2
NzUxLi5mZDQ5MmZjZDZhZmVjNDM1YTg1Y2FlY2E2YmYxZjdiOGE5MTQ4ZmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdp
blZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRv
U3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVx
dWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToK
KyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1h
Z2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0
KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1v
cnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSB3
cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAgICAgICAgU2hh
cmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAgTm8gY2hhbmdl
IGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5IHNpemUgcmVk
dWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdoZW4gbWFwcGlu
ZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEgY291cGxlIG9m
IHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFj
dG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBjb2RlIGFuZCB1
c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisKKzIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBh
bGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFy
ZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1l
bW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxl
IGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAg
ICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1v
cnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtlIFNoYXJlYWJsZVJlc291cmNl
IHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBTaGFyZWFibGVSZXNvdXJjZSBv
bmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVkTWVtb3J5IG9iamVjdAorICAg
ICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcuIERlbGV0aW5nIHRoZSBvYmpl
Y3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgc2FmZS4KKyAgICAgICAgTWFr
ZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIp
OiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29k
ZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQuCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHku
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCiAy
MDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zIHNob3VsZCBoYXZlIHNlcGFyYXRl
IGNsYXNzIGRlZmluaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAxZDUw
MWFiMzgwMTdmMWQ4ZjllODFjOWJlZmRjMmQ3ZjZmMTZmZS4uZjM1MjlkZWI3MmYxZWY1ZGQ3ZTE4
NDg5YjA0YWJkYWU0ZTQzNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29k
ZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0yNCAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxl
IHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIxMzk2
OTY2YmI2MGFjLi41Mjk0OTMxOTgyOGU0ZTE1NjM4MmI5MzdhZjliYzJjYTVlYmU0MWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTEtMjUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBj
b250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFu
dGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAg
ICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVh
bTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAq
IFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJj
ZS5oOgorCiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZk
YTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRi
MWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJ
Zk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAg
ICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwot
ICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3Ry
aW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0K
aW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFl
NjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21p
bWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdl
UE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBC
bG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMx
Y2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZl
OGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAi
aW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYg
KGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0
Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRv
cHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7
CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0
MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
b21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2
NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3Jt
RGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewog
ICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpu
dWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjg2
NzUwZGZlZWZlYzU1NWNhZjlhMWJiZjg1MTA2MGE1OWFmZjI4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBET01D
YWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQ
b3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVl
c3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRs
ZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3Bv
bnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0g
V1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OCwxNSArMjk4LDE1IEBAIHZvaWQgRE9N
Q2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVz
cG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRp
b24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNl
Qm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcsNyArMzE3LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAt
Mzc0LDcgKzM3NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9u
c2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVm
ID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2
ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMt
PnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5
KCkpOwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRX
aXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIu
LmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNl
PiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNw
b25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYu
LjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMx
LDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9k
eSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8
Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZv
cm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5
KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBh
cy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9
KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25z
dCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwg
W10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRy
X3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4u
Y2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBF
eGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBX
RUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7
CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVl
YWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIw
NDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zv
cm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyAr
MTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAg
ICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJh
eSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBr
ZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
ICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAh
PSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNt
cChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJv
b2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6
VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBw
YWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUo
KSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBh
aXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi5mMTJj
ODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRj
aEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYg
KGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewot
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25l
ci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5z
IGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIs
NyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAog
ICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0
YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0
YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6
VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25z
dW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
ICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlz
QmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRj
aEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAo
aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
ICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9T
dHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJs
U2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFk
MWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3
ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0
YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEg
dGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4NjUwODU4
NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMzc5OThlZjk2OWEyYTU5M2NmYjk1ZmZhMDAyN2MzNzZjNzhk
ZWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
ICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0y
NjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJl
YW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29s
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTog
ewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZv
cm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisg
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICsz
MjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5k
KGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit7
CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRh
KSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0
YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIHJldHVybiBtX2J1ZmZl
ci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0NSw3IEBAIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxw
dHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZm
ZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsK
IH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUzLDcgQEAgUmVmPEJsb2I+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0
LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVu
dFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVs
bHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVy
biBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7Cisg
ICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3RE
YXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpAQCAtMzYyLDggKzM2Miw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1f
YnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgz
LDEwICszODMsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNl
KCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNl
PiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAo
bV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAg
IGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0
M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZk
OGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEo
KSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQor
ICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdl
dCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToK
IAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBS
ZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQ
dHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2
NDYwMDQ2ZTQ2YmQ1MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFiN2MxZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0
MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9y
bURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4uYTE2MDc0
N2RlMGNlYWNlZWNjNzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAK
LSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAg
dm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFk
ZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEz
N2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
aGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhp
Z2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4u
ODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29k
ZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAg
ICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMx
MmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
S2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0
byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEz
IEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9u
KTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQs
IElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3
ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAx
MTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
SURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRj
MDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBv
YmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxp
dGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7Cisg
ICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0
ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcs
NyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyAr
MTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5k
ZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFs
c2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3Jk
IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RT
dG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBp
biB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBk
YXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBp
ZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBp
biBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBv
YmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9k
ZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcg
KzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVj
dCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwog
ICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93
ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6
bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAg
ICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXko
aW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgp
ICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpL
ZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwx
NCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1
dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmlt
dW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBj
b3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2Uu
dXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThj
ZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJD
dXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1
cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1f
Y3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRC
aW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3Vy
cmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkp
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmNwcAppbmRleCBhZmVmNDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJiOTY3YWEzLi4wMDI3
NTcwODAyYjE0YjA5ZDFhYTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsK
IAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1Jhdywg
bWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3
LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1f
aXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgw
M2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2Fn
ZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5n
ZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2IyZTJmY2EwZDM3YWE1
Mzk5OWZhNjI4NGE0NTlhNGU0NzMxYWMuLjAyOGE5MTk4NTgxN2ZkMzY5ZTcwZjRjYWFiOTRlMWEx
NGY1ZDBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291
cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQo
KTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291
cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMp
OwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikK
QEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAg
ICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRl
UmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRy
dWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCku
Z2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVs
ID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCBy
ZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVz
b3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAzNjM5
M2EzYjZmOTI3ZmYwNGZiYzI1ZWQ1N2FkZGFmYzM5MjllYWYzLi45YzQ3MjZmMjY0MmRmMDFkMzNh
YmNkZjRlMzFlYzgyZjRjOWE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8
TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21p
c2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGEx
OWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMz
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0x
MDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZp
bGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6
Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwog
Ci0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5k
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVI
YW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5
dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2Qy
MjRhMWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZh
aWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9
LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFs
aXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkx
OGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBA
IC01MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYg
KCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRh
aW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFp
bnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJ
ID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWlu
c09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1f
c2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAg
ICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAg
ICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICgh
bV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5n
ID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVm
ZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZm
ZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRI
YXNoIHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4
Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJh
N2ZkYTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0x
NjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRv
d25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZv
bnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1f
Z2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpA
QCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2Ut
PmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1f
aW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEo
YnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9
IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAg
ICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4
IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1
OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3Ry
dWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlh
bnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkz
LDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250
U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxz
byBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJh
YTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRj
Njg5YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0
MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVu
dEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3Rl
Ym9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywg
YWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZl
MGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1
MjBlNjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkg
KzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNs
YXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRl
QnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRD
b21wb3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVw
bGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBi
b29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyAr
NTc0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50
SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAt
NjE4LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0
KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYp
OwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVk
U3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYu
LjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIg
KzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVj
NDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAt
NzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRl
cy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
TlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJp
bmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVk
RGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5n
OllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRN
TEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRN
TEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRv
cjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBl
bGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXRE
YXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAg
aWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdl
KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQ
Ym9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0
ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAg
ICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hp
dmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYg
KCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhh
dCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBi
dXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAx
LDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQog
ICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxl
bmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4u
M2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcg
QEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRh
dGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBl
ID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVy
IHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAg
ICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1p
bWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9
IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAg
ICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZp
bGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAg
ICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVy
bCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBl
bGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzku
LmFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBA
IC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0
YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAg
IFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVt
ZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRv
JiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0
YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291
cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVk
QXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJl
c291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7
CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpA
QCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7Cisg
ICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJl
c291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAs
NyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1l
bnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+
bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVu
dEluc2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXIm
IGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6
OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRh
KCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFz
ZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9t
VVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBh
cmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1l
bnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNv
TGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5T
aG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5p
dGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9u
RG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVV
UkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBz
dWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAg
ICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVU
Rjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZy
YW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVm
KCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFy
Y2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlz
dFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2
MTcsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0p
OworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAo
IWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQx
OWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBj
NzIyNzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAg
ICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYg
aW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlm
ICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFS
ZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhN
RTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFi
bHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhp
cyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUg
bWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNo
IGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNi
NzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThh
NWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpw
YXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5k
RW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJl
c3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJl
c3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3Qg
U2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRo
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBs
YXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVy
OwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29s
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0g
ICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1w
bGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAg
c3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigp
OwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJl
IG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8g
dGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwg
dGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLjhh
NjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVkMDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcs
NyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
ID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2Fk
ZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhh
c0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3Vs
dCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRy
OworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0Nv
bnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRl
bnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisK
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkg
OiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAg
ICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZm
ZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9k
ZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2Nv
bnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAg
ICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRl
bnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRm
YjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5ZmU5
N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNw
b25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAg
ICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9u
c2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5
LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsK
ICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1
ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZl
cjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0
Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApA
QCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1l
VHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNw
b25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJl
c3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41
Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC0xMDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNl
Q29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRh
dGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJu
IGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCBy
ZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRm
MjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50Rmls
dGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigp
KQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUw
N2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZh
NjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBj
cmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJp
dHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwg
eyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgw
ZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNo
aXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNv
dXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7Cisg
ICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7
CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWlu
UmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1
Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAg
bV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyAr
MjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFy
dENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1f
Y29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
ID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRh
KCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRj
YmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFz
cyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZv
cm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3Vy
Y2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFC
TEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0
cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZk
MjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYz
NTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1
cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTog
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9y
IHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRp
ZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCAzYTA2NGJjNzIzMWEzNjAwY2M4M2RjNThhOWEyZTdmZjJlZTk2YjM1Li40ODBm
MjJhYmUzNTVkMTA5YzIwODYyZWZhZTlkYmQ1ZDA4NTdjOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAg
IHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNw
YWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2
NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBG
cmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBk
YXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZl
cnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9j
dW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJl
cigpKTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAg
ICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxv
YWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAg
ICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgq
dGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0
aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwot
ICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9u
c2UsCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2
ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBi
ZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAt
NTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwog
I2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQs
IGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3Qg
U3lzdGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1l
TG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3
NmFjMjM1Li4xNGU1ZmQxZDBkMWIyMDUzMzk2OGE0MDQ2YTE0NDQ0MzE2MDkxOGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVG
SU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNv
dXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVu
dExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwg
bV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERl
ZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRl
ZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3
ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAg
IG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAg
ICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJp
bmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1
YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyMyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVS
ZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNv
dXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVy
KQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitTaGFyZWRC
dWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwog
fQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAg
LTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIs
IHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0
IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lh
bnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNl
bmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRp
Y19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjQwNjUwMWVlNTMxNWE4
Njg2MTFlZWNlMjZjMTk0Njk1NWUxZTc5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBG
cmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNs
YXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+
LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAK
LSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2VEYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2
NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291
cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJj
ZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2Vi
Nzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1
ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRC
dWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsg
fQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9u
c2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAg
IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0
OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1
LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
TWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBw
YXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVz
b3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFu
aWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21h
bmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRp
bWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlz
IHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNo
ZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxk
IG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVl
Ni4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0
ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNv
dXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNv
cHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgp
IG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBp
ZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRh
dGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNo
ZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1h
bCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhl
ciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4
eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0
d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwg
dGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFs
bGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jgog
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAo
Z2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7
CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAg
ICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25j
ZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4
NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQy
LDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpA
QCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVM
b2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7
Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hl
SW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2Ux
NzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3
NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uo
VVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
LmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkp
OworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2
NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChk
YXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMz
YWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5iZGEyYTJjNzY2OWUxOGM1MjQ3
YWM4MGExMmYxN2JkMjZiMzQ4ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4NCw3ICs3
ODQsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGlmICghZGF0YVN0YXRlbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAg
IGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQt
PmJpbmRUZXh0KDIsIEZpbGVTeXN0ZW06OnBhdGhGaWxlTmFtZShyZXNvdXJjZS0+cGF0aCgpKSk7
CkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0
YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+Ymlu
ZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5i
aW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAg
IH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAg
LTg3OCw3ICs4NzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2Ug
dGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3Vu
dAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsK
IAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMTEzLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAg
IGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAg
ICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVu
dC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxv
Yig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5j
b2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4
IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4
ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3Bl
cnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1w
dHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1
dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0
eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJM
IGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZv
ciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAg
aWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3Bv
bnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNl
KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRh
dGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJl
c3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25L
ZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlE
KHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAg
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9u
c2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlk
IHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJv
cGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNp
b24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFy
Y2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAg
ICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAg
IENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
Q0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5
TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYg
TkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAg
ICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25h
cnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3Rh
dGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBt
YWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpA
QCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRv
IHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAg
ICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFj
dChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2
ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENG
RGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3Vi
ZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRk
U3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYx
LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNw
b25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3Bv
bnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1Pgog
ICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihG
cmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAg
IHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRv
Y3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90
aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBv
d24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJu
b1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBo
ZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXgg
ZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRh
NmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTkzLDkgKzE5MywxMCBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29udGlndW91cygp
OwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9
IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1F
SGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVE
ZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0g
cXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRl
bnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRN
TCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250
ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0
byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBi
ZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNw
ZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkg
c2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5k
ZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZh
MmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIs
MTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFl
NjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2
N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVj
a0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24n
dCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNh
biB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBl
bmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5
KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRh
IHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQg
ZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0
cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0
byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMy
YTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdh
NDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRh
LmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcg
Q2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJu
IHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVk
KCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAg
LTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdl
dCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVk
Rm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07Cisg
ICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0
cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRG
b250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVu
dCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRj
NTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFh
YjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9h
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
Zyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZp
cnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZy
b21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDli
ZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3
MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdl
KCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVy
VXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRh
QmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8
fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJl
c291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBM
QVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkp
OwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNl
bGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQg
dG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODVi
YTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFn
ZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNl
ZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1f
ZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAg
IGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEu
c2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewot
ICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0
YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5z
aXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAg
ICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGlu
Y3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09L
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggOGI4M2U1MzMxOTBhNzc2YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRjN2Q3
NTRlMTliNzU1YTljYWM1NzRiZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZl
cikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1f
ZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250
ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4
MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlm
CiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhh
c2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQg
YnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2Fj
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdm
NDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBA
QCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVu
dCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9
IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwo
KSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5z
ZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1
NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAt
ODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAg
ICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkx
LDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZG
b250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRG
b250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3
ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01
MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6
ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAg
ICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVt
ZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRp
bmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5l
ZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5z
aWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMy
MDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
LSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmlu
ZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0
OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBA
QCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5k
YXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2Zl
YmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2Ni
NWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRC
dWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRT
aGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
KTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQg
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2Rm
NTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
VGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVz
b3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0
YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1
ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVk
UmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRv
cjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0g
X0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVC
YWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25z
ZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNh
Y2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVz
cG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lk
IERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXIm
IGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewog
ICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9y
UmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3Vy
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2
NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcg
QEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAg
ICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3Vy
Y2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4
IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZkNTM3YmZkNjJm
ZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3Jp
Z2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJl
c3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcs
NyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBj
b252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252
ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxE
YXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCku
Z2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigp
ID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVn
YWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2Fj
eVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNy
ZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2Fk
ZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdV
VEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0K
KyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFi
MTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90
OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1MzVjNjMyZDlkMmRhYzkxM2VmLi41
ODcxYThlYTZhMzExOThjOTBhNGY0OTQxYmMyM2RlOTg0OTViMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hl
ZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hl
cyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxv
YWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4K
ICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hl
ZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1
MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2Rlcygq
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNs
dWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdn
ZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsK
IAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3
aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5k
IGFkZCBvbmUuCiAgICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+
Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFs
aWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7
CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZElt
YWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGlt
YWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5t
YWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVk
ZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4
MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAg
ICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAg
ICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2
NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1
Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0
YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2
ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRl
cihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRl
cjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFS
ZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisK
ICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFy
cmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5m
aWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEo
KSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1Jl
YWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nh
c3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdG
aWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBz
dGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThm
NDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5j
b2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0o
Y29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2
MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhX
TkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1l
bnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29u
dGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
REZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBk
YXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2Fy
ZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAg
UGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVz
b3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBz
dWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2Nv
YVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29j
b2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJp
bmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hl
Y2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4
IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhm
OTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9y
PEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZl
cnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwg
bV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwog
ICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4g
ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5Mzhh
M2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2Nk
ODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2
b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21E
YXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9t
U2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2Rl
cihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlk
NjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMx
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1
YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwg
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2Vs
ZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4
ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2
NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01
MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJp
bmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owog
ICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0
cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5k
ZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0
NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bh
c3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3Mg
U2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1h
Z2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBz
dHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMg
PSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
VVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4
NWM0ZTkxNDc2OC4uNGJlYTRmMThlNGM3OWRlYjU3NDRmMjgwZTlmOGY5YmMxODNjNmYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTY1LDcg
KzY1LDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vy
cm9yKCkgY29uc3QKIAogY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2
aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAg
cmV0dXJuICptX3ByZXZpZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVy
Ojp1cGRhdGVNYWluUmVzb3VyY2UoKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQog
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAog
ICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQot
ICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3By
ZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNl
aXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJh
MzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIuLjA2Yjc2ZjU5ODUxODJiOTcz
ZTYzZjM5NTkzOTRlYTlkMzQ5YWI3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAg
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9w
cmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3
RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNlUmVz
cG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBk
YXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVu
dEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5h
MWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8g
ewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4g
YWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRk
aXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQz
OWM1NWI5YWZkMzkwMDM1MzUzODVkLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQw
NTg3ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUw
LDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQog
ewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
ZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3Zp
ZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEg
QEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAg
ICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVy
KQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDog
bV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAs
IERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5k
aWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQot
ewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7
Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGlu
Z1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwot
ICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmls
ZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNv
bWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYg
c2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERh
dGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNl
Z21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0
dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25l
U2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBG
SVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5v
IGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRp
bmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3Jp
dGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21l
bnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAg
ICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYg
eyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVk
QnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21l
bnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmlu
ZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1f
c2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQot
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9z
ZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAg
ICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiAr
MTU2LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVy
OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wg
U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRp
Z3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAx
KTsKQEAgLTIwMiwxMCArMTkyLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6
OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAg
ICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7
CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywyMyAr
MjAyLDI2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdt
ZW50KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSAr
PSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXpl
ID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSAr
PSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKK3Zv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
K3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0g
MDsKQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9z
ZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5z
ZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkg
fSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIm
JiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkp
IGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTUsOCArMzQy
LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09u
ZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBp
dCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUo
KSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3Miw3ICszNTgsNTcgQEAgYm9v
bCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAv
LyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNl
Z21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGln
dW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHko
KSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250
aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9
KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0
YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91
cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZp
bGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGlu
ZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nl
c3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZp
bGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFw
cGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJu
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21l
bnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3Io
CiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyArNDI3LDcgQEAgY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wg
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2lt
bXV0YWJsZURhdGEpOwogfQpAQCAtNDAyLDcgKzQzOCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwg
c2l6ZSgpIH19OwogfQpAQCAtNDU2LDcgKzQ5Miw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVy
YXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3Np
emVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RG
OjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAt
PiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTExLDcgQEAgc2l6
ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBz
dGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVu
dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShz
ZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2Vn
bWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBv
c2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ5OSwxNiArNTM1LDIxIEBAIGNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25z
dCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1Jl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxE
YXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdt
ZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50
LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXpl
KCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxs
b2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAg
ICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU3NSw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
YnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0
NTQ5MTgzOTM2OGFkLi4xZDRmYTQ0ZTAzMTBlMGFmMGVmZjYyMThjZTQ1NmYzZGUxZGQzYWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkt
MjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiAr
NjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5l
dyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUp
KTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAg
ICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQot
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0
cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsK
LSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRh
dGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJl
Zik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0Uo
R0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAg
IEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRh
KCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2Vn
bWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50
cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0
aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVy
YXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAg
IGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRh
KCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEo
KSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4g
aXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8
dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIg
YW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBB
cnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQg
YnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVu
Z3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQg
Y2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1
aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9
OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsg
fQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0
YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAg
Ly8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdt
ZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBz
aXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAg
ICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9
CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNp
ZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQ
dHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rp
b248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgp
PiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikK
LSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRp
ZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+
IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFV
U0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsg
Ly8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3Zp
ZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsg
fQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNF
KENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisK
ICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlm
CisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0
YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWlu
ZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hh
cmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0
YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
IHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNv
bnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVf
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29u
c3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBU
byBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAg
IHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAsMTY4IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5
LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQot
ICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkg
dGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmll
dyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7
CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcigp
IGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29u
c3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFr
ZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsK
KyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIp
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21i
aW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGlu
dG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdt
ZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdt
ZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAj
ZW5kaWYKIH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZl
ciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRh
KCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBw
dWJsaWMgU2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdz
JiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQor
ICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYm
Li4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBj
bGFzcywgaXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5
VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgor
I2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVh
dGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQ
T1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
eworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBT
aGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAg
ICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5oYXNP
bmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOworICAg
IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVy
ZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGlt
bXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhh
c09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZm
ZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9
CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsg
fQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5z
dXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAg
ZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAg
ICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307
CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7
CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY4LDIxICszODEsMjEgQEAgaW5saW5lIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25X
aXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3Qg
cG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVy
RGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAg
ICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VO
REFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2Vu
ZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBt
X3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29u
c3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Np
emU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYp
OworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5n
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYw
YzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAg
aWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1h
Z2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29y
ay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVU
eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZp
ZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2Rl
ZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiAr
MTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3Rh
Y2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJD
Rjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihD
RlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlv
bmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIp
KTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBm
NTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5
N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVu
Y29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5
dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAg
ICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdm
ZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5ZmMyMjhhNmQ5
YWJiYzMyMGVmN2Y2YzhiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZl
biBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28g
b25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5E
QVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgp
IGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVDRkRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+
KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAK
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRh
R2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRl
MjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIx
MSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5
VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3Rh
dGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1
ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxv
Y10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9u
VXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hl
Y2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3
ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEg
QEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNl
Z21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXpl
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJ
bnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChO
U0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAK
LVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1Jl
dGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0
YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0
YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkg
Y29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVu
dHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwg
bnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICBy
ZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtMTI2LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0
YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFp
blB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0
YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
aW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRl
NThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJz
ZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3Qg
KGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2
YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgy
ZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2Vm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3Rh
dGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXRE
YXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7
CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNp
Z25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXgg
PSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0
aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJ
ZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5
SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWdu
ZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFs
aWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAg
ICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1
dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEg
PSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3Vz
SW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAt
MjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7
CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsK
KyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYg
aW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0Vt
cHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcs
MTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNP
TiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMi
CiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBp
cyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5n
IHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBr
ZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBl
bmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlk
czsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENE
TUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMy
YTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1
ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZv
aWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBl
OjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZm
ZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBk
MC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYy
Li5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwx
MiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJy
YXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92
YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1Jl
ZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50
QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFf
YXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUo
ZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUo
ZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3
MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5
NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5j
b2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVC
eXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4
IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5
Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5
dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYo
KTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0
aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAg
c3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3Rf
Y2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1
b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250
aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXgg
MTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2Zj
MTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRl
cnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZv
bnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9h
dCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9u
dENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRl
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2lu
IG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJv
b2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0
ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5
MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVk
NDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNp
YmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdp
biwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IElu
dGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxl
LCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBu
dWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRm
YWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVk
N2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFj
ZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNj
cmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0
dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBj
aGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpA
QCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBT
dHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewot
ICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5D
b2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNv
dXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4u
NWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6
OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5
cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShk
YXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9k
ZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9k
ZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1l
VHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQy
ZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNl
MDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAt
MzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5N
b2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2
YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7
CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmlu
ZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVS
TCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7
CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVs
PiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJs
KSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwog
fQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFk
MmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
bGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29m
ZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUp
CiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0
OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1
aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBB
U1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZm
ZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3Rh
dGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZh
bHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7
IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wg
aXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zm
c2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJp
dmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAg
IEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAg
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAot
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0
b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1
ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQog
ICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0
OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2Rk
ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJl
dHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hh
cmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8v
IFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQg
bm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24g
cmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhl
IHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1
ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1Nm
bnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsK
IAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQg
cGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVy
dCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVy
dGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBu
dWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRC
dWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5
MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUw
MjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJh
Y3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRo
ZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlm
IChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQog
ICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVm
ZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5
ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJj
YmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0z
MjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJv
b3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAog
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3
MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBp
bml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRh
ID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgp
KQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQ
TEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09
IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5n
ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUo
KSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05P
YmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05X
cml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcg
Kzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNl
c3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEp
IHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAg
YXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygp
IHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgp
IHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0
VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcg
Kzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFw
YXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05
MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3Np
bmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNl
OltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VX
aXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVl
c3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5
MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJl
c3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Np
b24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
S2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJl
ZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRp
bmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdl
dCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNz
aW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4
cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChO
U0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBw
SWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAg
LTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtl
eUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5
KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVh
bWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRl
bnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRp
b25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpj
b250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyks
IGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWlu
UHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
OwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmlj
YXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3Rk
OjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0
cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAg
ICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAg
IGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRh
dGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5
SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2Fk
IiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQo
KS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUo
ZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0
b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVx
dWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJ
ZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250
ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRp
Zmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3Zl
KGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9y
KTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5
SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3RE
YXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAt
MTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBt
X2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5
SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRy
eSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRp
Zmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciks
IGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEp
XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRl
eCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkw
NGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJB
VkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJS
ZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAg
LCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3Jl
YXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBb
bV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBx
dWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlz
OkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAg
IFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVj
ZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBk
OTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlh
MDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxh
Z3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRC
dWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBw
ZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1E
YXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURp
c2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4
YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3
OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEw
NzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNy
ZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTEg
KzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQo
KQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlm
ICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVs
c2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFy
ZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVy
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNSw3
IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRh
VVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpG
b3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
OjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAg
ICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0K
IAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21f
YXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFm
MzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7
CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThk
M2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQx
ZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9u
YXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVz
QXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXpl
X3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFy
ZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAg
ICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9z
aXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcg
QEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0g
YWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCku
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQp
IHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmll
ckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFj
IHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVu
ZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1
c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRv
IGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5
IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0
YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERh
dGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3
cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgp
LnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJh
dGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAg
ICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVy
IGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVx
dWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0Rh
dGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwg
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0g
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2Fs
bGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigp
LCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVw
ZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQo
KSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMy
N2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1
MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVD
RkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1
OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBj
b25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29u
c3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFk
YmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAg
IHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4
IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1
ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3Jt
RGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJl
Zj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAg
cmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFi
bGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTEx
MGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAt
MTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRf
TGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xp
YnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxp
YnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1
NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBs
YXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9T
ZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAg
ICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkp
OwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7
CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwg
dGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQog
CiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFl
NjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+
IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRh
KCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZl
cjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxl
KGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcxNWJk
YTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIy
MDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Vi
a2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8p
CiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAg
ICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2
YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2
YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRm
YjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGln
dW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgp
LCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2Rl
ciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRh
dGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFk
VHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCA5MTEyNjU5MmM4YmE3NmJkNjYzNzMzMjRkNWJiMjk2YjMxZGUwM2Jl
Li5kZjFjYmI4NWYyMmNjZjQ2M2JkNTU3YmExN2UwOWE1Y2UzOTAwYWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY1NCw3ICszNjU0
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVk
dWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUi
LCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAg
ICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJp
bml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5
bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdT
VF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5p
dERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZl
NzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEy
YzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3No
IHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3Rh
cnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUs
IGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJy
b3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFy
c2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAo
dXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAg
IGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+
cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAg
ICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJr
dXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJz
ZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBt
YXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBh
cnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1v
dmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwg
IXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5
ODQwYWNmMWQzNDJhNDY0N2QyZjEuLmExZWU3YjhmYzQ0NWJjYWY2YTRmYTRhMmFiZjliNjkwZjMy
NjcxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
MzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21t
b25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBt
X3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRl
ZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVt
IHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2Vu
Y3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRy
LCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAg
IG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RD
ZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAg
ICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAg
ICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQog
ICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNl
ZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkp
KQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRh
JiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdz
IG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlk
ID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5p
dERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5
bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBT
dHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmlu
ZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9u
U3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2Ji
NmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRl
YmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0
Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lk
dGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9u
RGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5
Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZv
bnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JF
X0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNP
UkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4Mzhj
M2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5
MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5j
ZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9k
b2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0
YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAK
IHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRi
YWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFs
dWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVj
dGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRh
bGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNv
bnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkz
LDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8q
IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxp
Y3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsx
MjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRG
bGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3Nl
bWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1h
dGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBN
YXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUlu
dDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFd
OyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAot
ICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0
b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRz
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tj
b3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24g
OiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50
UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBh
cnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6
QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5
UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5
cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNv
bnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFz
c2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhW
YXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6
b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0
aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBn
bHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBo
IGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEds
eXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwg
Ym9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiog
bWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhv
cml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1h
dGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBz
dHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhH
bHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7
CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFu
dHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYg
KG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBo
SW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9
IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIw
LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0
aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYx
OTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2
ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsK
IAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0
aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5U
eXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5U
WVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFS
RkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYw
MTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlw
ZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNo
NCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYp
IHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlm
ICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGlj
IGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0
cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0
YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1
ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAi
PD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29u
c3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2
YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhp
cykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2Uy
VGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVj
dCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBn
ZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFn
ZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBj
b25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwg
dWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNv
dmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2Ug
Rm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlh
NDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMz
ZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyAr
MTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMg
Zm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5l
dyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBv
ZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQp
LCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdy
aXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiBy
ZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnRE
YXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBA
QCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGlu
c3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9y
eVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250
RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250
RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3
cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwg
cmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0
NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJj
MTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2
ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNz
IEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDgg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJv
b2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8
dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9u
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVp
bnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApp
bmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYw
NTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRh
YmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAg
IE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRh
YmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4g
dmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0K
KyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFi
bGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3Rp
dHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3
IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVy
aW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0
IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMo
SGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpA
QCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3Vw
T2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5k
ZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRh
YmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291
bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZs
b29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAg
ICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5
cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgs
IEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29s
IGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFw
PEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpA
QCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwog
Ci0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlw
ZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywg
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBj
b3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcg
KzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5
cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWlu
dDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlz
VmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcg
PT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJh
c2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpV
SW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJl
KE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUq
IGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVh
dHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlz
VmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcg
QEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9m
ZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3Jp
cHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZz
ZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNj
cmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRh
YmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2Ny
aXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2Ny
aXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZm
ZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lz
VGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFi
bGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNj
cmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxl
QmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVu
VHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBz
Y3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0
dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29r
dXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlz
dCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9m
ZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxG
ZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29r
dXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBM
aXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0
KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1
Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1
bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0
dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVh
dHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMo
YnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxp
c3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0
aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vi
c3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRh
YmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJl
VGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgx
LDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9v
bCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVj
dG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFo
aGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVW
ZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEg
Zmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0
aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0
YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBs
YXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBP
cGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5
cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsK
QEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmlj
cyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVW
ZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAg
IGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJU
YWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQog
ICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEds
eXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRl
eCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIw
NWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFt
ZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAg
ICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnRO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJj
ZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2
YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5
cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0
OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRp
ZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYg
Rm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1
LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlv
bkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJm
M2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMz
MWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8u
Y3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUo
KQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
KQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAg
YXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5
MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5
YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3
ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhl
ci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQy
MGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1E
YXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwg
Ym9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBI
V25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhm
b250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAs
IDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0
ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAg
ICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5
OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFh
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAt
NjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBj
YW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0K
ICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBs
YWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVy
KiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAg
dm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9
CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7
IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsg
fQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxl
bmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJl
cGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJk
NGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThh
OWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03
NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgp
IGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFu
IG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVm
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAg
ICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7
CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpU
eXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0g
dHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRk
ZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3ZDQ0NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHN0
YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAg
ICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitz
dGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdf
ZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7CiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGlu
Zm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewpAQCAtMjQy
LDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShq
cGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVy
biBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcgKzcyNiw3
IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJ
bWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUz
YjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNFKExDTVMp
Ci0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRl
YWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUw
MzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtl
VmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChO
U0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNTRVJUKGNv
bnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNv
bnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAogICAgIGlm
IChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3ZWJBcmNo
aXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCk7
CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewot
ICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5
ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmpl
Y3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQor
ICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5
ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmpl
Y3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNTAx
LDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgUGFz
dGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihj
b250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOworICAgIFty
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0ZXJJdGVt
VG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVib2Fy
ZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0
byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0eXBlcy5z
aXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gdHlw
ZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNb
aV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0t
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1d
OwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0aU9yTUlN
RVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYgKCFp
c0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9
IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdlRGF0
YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlN
RVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5z
dWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYg
bwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9U
RUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFz
dGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0
YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1
c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAg
ICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUsNyArNjM1
LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlz
dD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRp
b25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgp
IHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAg
ICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5
cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9w
LgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNh
bm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFy
ZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBh
bmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVy
YApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5
cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcg
Kiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0
dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKChO
U0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2FyZCBu
dW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291
bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6
MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0
MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMyZDY1ZmU2
M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmll
d0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmll
d0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0g
ICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3By
ZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAs
IG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92
aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0Nv
bnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFi
NTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUy
Yjg4ZTlmMWNjMzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29u
c3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQ
cmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJk
SW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICBy
ZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRp
YyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlw
ZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlw
ZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJh
dGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
UGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAg
ICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkp
KSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5k
ZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0
ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAg
ICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAg
ICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXgg
MzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJl
NGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9h
cmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29u
dGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0
ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tp
XSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVu
dC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0p
LmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAg
ICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEko
U3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVu
bGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkp
LmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRl
eCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3
YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
KQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRh
Rm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBj
b3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5n
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVz
OwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBk
YXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAg
ICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAg
IGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwog
ICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAo
YXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFz
dGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNl
dERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAg
fSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
KSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JC
dWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlm
IChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1
c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAg
ICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtt
X3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAo
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyAr
MzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVi
b2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wg
ZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9P
TCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3Rl
Ym9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmlu
ZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBl
IHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAg
ICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYK
IAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAg
ICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVi
b2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpw
bGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAg
ICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5o
CmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQx
MzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAg
cHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBM
b2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEg
V1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlv
bkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRp
b0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4
NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAg
fQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRp
bmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1f
ZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAg
IFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAg
aWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlv
bkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUz
NywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRl
RmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNp
emUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAg
YXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVy
biBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpw
YXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmlu
ZGV4IDM3MzFhMWFkODU0YTZjODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUxZDZh
YmMzZjBjY2EzNTA2YjY1ZmMzZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRfdCBG
b3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0
ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7
CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVs
ZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFz
QmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKaW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjcz
NTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFz
cyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0y
MjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+
JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNT
aGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFs
d2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThl
MTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApA
QCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBk
aWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYw
MjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFu
Z2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVm
ZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShy
ZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAs
IHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVC
dWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWlu
dDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxl
ZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5
bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRh
c2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAg
ICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFll
cyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9h
ZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsK
QEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3Zl
VGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2Um
IHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25z
dCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBi
dWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUo
KTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJh
bmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQg
c3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2Fk
IGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxl
bmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZl
ci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0
dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBh
dXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0Rh
dGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0
YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNr
RGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZl
Qnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXpl
LCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7
ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYg
KFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAg
ICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRl
SW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkp
CisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVE
YXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5
dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURh
dGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3Vj
Y2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9h
ZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAg
cmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0
byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0
byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRo
RmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmlu
ZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFh
MDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0K
QEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwog
ICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRh
aW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNE
YXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0
KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VS
TFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRh
RGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYg
KFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRh
dGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJi
ZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFk
ZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQp
CiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3Jl
IGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsg
fQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29t
cGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQg
c2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAg
ICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5k
YXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9i
dWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0
LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgp
CiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0
aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8v
IERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0
UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBh
cnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVs
dGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxh
c3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFy
dGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhh
dCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5k
YXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5
U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpF
bmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkz
YjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURh
dGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9k
b3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJl
cXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVk
MDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5IEBAIHZvaWQgQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YSht
X2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+
ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hh
bmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xp
ZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZm
ZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1l
dHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
aW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0
MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDggKzk4Niw4IEBAIHN0YXRpYyBI
R0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAg
ICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBk
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9i
YWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAg
ICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0g
RkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVT
dWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAg
ICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAg
ICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3Jp
dGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1
NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1
ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1
ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZl
cldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1
bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09S
RCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxh
c3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQp
OwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFu
ZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNU
b1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUg
JXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFz
dEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42
NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBN
b2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlm
ICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgp
KSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYg
KCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VB
cnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAn
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0
YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJy
YXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2
b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3Ry
aW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlm
aWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7
CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5n
VmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3
IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgp
LCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Bv
bnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29u
dGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZh
bHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFs
dWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXgg
NmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdi
OGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRC
dWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0
ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRh
dGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVt
cHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0
eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsK
IH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVu
dCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVu
dCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0
YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmco
KSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2Vn
bWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVT
ZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmls
ZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNl
Z21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAg
IG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVm
ZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3
OTZiNzFhMDQzMTM0YzY2NDYuLmQxYTc3YjU4YjY0NGE5MGI5MDRlZmRjMWZlYmM2YzA2NzQ0Zjky
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29u
c3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgU2hh
cmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsg
fQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlw
dEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkp
IDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyBy
ZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZm
ZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVu
Y29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2
NDBkMDRkNGJkNDUuLmU1ZjM0OWI0ODI3NDZmOWVkYjljNWY2MzFiZmFkNGI0MTk5OGJhMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
QEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1
ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291
cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAg
ICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAg
ICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAK
QEAgLTc4LDkgKzc5LDEzIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1
ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAo
IW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9h
ZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0g
ICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAg
ICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsK
KyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVu
ZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
ID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1
ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyMiw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkK
ICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1f
ZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1f
ZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4
MGJkZWViYzVjNmUwNGExZTg2M2M3Li5hNjhjY2M2ZGZhOTU1OWRkOWJiNTEwMjZmNTgzYTA5YjE4
NDdhNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9u
cy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVj
dCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsg
fQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5n
ICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYg
bV9kYXRhLT5pc051bGwoKTsgfQogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0xvYWRpbmc7IH0KICAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2YXRl
OgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBu
dWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5jcHAKaW5kZXggNGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1MWFmMjc4
OS4uMWMwYjU3OGEwYTA0MTE5ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jl
c3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4s
IHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3
aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xp
ZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAg
IH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNl
aXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwog
ICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlh
ODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2
MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEy
Nyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERv
IHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBo
YXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/
IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5
VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBw
aW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGlu
Zzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsK
KyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJk
NDE0MWNjNWUyOWNlOTZiNC4uZmNjYzJhOWVkMjBkNzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcg
QEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9y
ZWFkeVN0YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25z
ZVR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQor
ICAgICwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpKQogICAgICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBt
X3RpbWVvdXRUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkK
IHsKQEAgLTIwNyw4ICsyMDgsOCBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJl
c3BvbnNlQmxvYigpCiAKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBm
cm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVm
ZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT5pc051bGwoKSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT50YWtlKCktPmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250
ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZp
bmFsTUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQv
eG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlw
ZSk7CiB9CkBAIC0yMTgsOCArMjE5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVx
dWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlw
ZSgpID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91
dEVycm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIg
PyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5
QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIg
PSBudWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5p
c051bGwoKSA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVh
clJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAg
ICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBu
dWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+cmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlk
ID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1f
cmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCmluZGV4IDcyODk0YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2
MmNhOTVhZWI3NTQ0ODliZDZjZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBj
bGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVp
bGRlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVy
OwogY2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1
aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMz
MTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3
IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAg
ICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0
QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENh
Y2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVl
c3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXgg
YThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5
ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3
IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVy
biAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIu
LmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1w
bGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90
ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0
YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3Jp
dGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0
byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBhdXRv
IGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZm
ZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0s
IHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUw
Mjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li41NGRjMjBhOWExOTVkNTllODhhZDQ0ZGI1NDA1ZTky
OTMzMTM4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hy
b25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYg
KGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5k
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVy
LmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJv
eDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1
LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6
OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBX
VEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQor
ICAgICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkgfQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJl
bmNlcyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRl
bnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVy
aW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJG
aXJlZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5h
YmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAg
ICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdU
aW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAg
aWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBw
YXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAg
IGlmICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAg
ICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9h
ZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkp
KSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhp
bXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJp
bmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZm
ZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJv
bm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERh
dGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlm
IChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwog
CiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxp
ZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8g
MzA0IE5vdCBNb2RpZmllZApAQCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXAKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNh
c2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2Fj
aGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNo
ZS0+Y2FwYWNpdHkoKSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5z
aXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQogICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKICAgICB9CiAgICAg
aWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklY
TUU6IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSBy
ZXNvdXJjZSBoYW5kbGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVm
ZmVyLT5zaXplKCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhLT5pc051bGwoKSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1
ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0g
ZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgp
OwpAQCAtOTA5LDExICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgog
CiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5l
dHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLT5nZXQoKS5nZXQoKSwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
ICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJl
ZERhdGEtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZh
bHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAg
IHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVy
KCptX2J1ZmZlcmVkRGF0YS0+Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtM
b2FkTWV0cmljcykpOwogICAgIH0KQEAgLTEyNTQsMTUgKzEyNTYsMTUgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQo
bV9idWZmZXJlZERhdGEpOworICAgIEFTU0VSVCghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKTsK
ICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEtPmdldCgpIH0sIG1fYnVmZmVy
ZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI3OSw3ICsxMjgxLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAg
ICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3Jp
bmcgY2FjaGUgZW50cnkgYmVjYXVzZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICBMT0FERVJf
UkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRy
eSBiZWNhdXNlIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTI4NywxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0
Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExP
QURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4g
cHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5z
dG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVz
cG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNl
c3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50
YWtlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JF
TEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRp
c2sgY2FjaGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVx
dWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9h
ZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9j
YWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0o
YXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJD
RSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxs
KCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMw
NTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li4zNDVjMmZiYTc5OGM2ZGI2YWRiNzcyMTEzMGJlMDRmMGRm
NDQxNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ2LDYgKzQ3LDggQEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3Mg
Rm9ybURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIyNSw3ICsyMjgsNyBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0
Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4g
bV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2Fj
aGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZh
bGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9y
Q2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJj
MmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAg
ICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4
ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6
OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZv
cm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQu
cmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkg
ewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNv
bnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29u
c3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAg
ICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10o
Y29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3Rk
OjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBz
dG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQg
PSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5i
b2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHku
c2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJh
MzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0
NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAx
LDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0g
eyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVy
KSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
PihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAog
ICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZk
NDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5mZTc1OWNlZGEyZDdiZDJlYWU4Nzg5OTc4M2VmZjMz
OTkyYTczYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC00Niw3
ICs0Niw2IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgOiBtX2NhY2hlKGNhY2hlKQog
ICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAg
ICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hlRW50cnkoV1RGTW92ZShj
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkgfHwg
bV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMDksNyArMTA4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsK
IAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJl
c2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRp
b25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjYsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAg
ICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4K
ICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQg
KiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJl
c2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzgsMTEgKzEzNywxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KQogewogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFt
X2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7
CisgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuaXNOdWxs
KCkpIHsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8m
IG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBl
bnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNT
dGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkp
Ci0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5h
bFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwor
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAg
fQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmlu
ZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMw
MzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhmMGI3ODA3
ZDc0MTcxYWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6
OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpk
YXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwot
ICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAg
IG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9t
X2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
aW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2Mz
MjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJl
MTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEz
MWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVm
ZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9
CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29w
eShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZl
cihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZm
ZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJu
IG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5
PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3
N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwx
MCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRh
dGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQo
ZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoewor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBj
b25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5
ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3Mg
RW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAg
c3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAx
Yzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcx
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0K
QEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURh
dGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdl
YkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZE
YXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxl
YXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2
YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46
OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Ig
c2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdy
ZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNl
RGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0g
Zm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRl
bUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQx
NjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5
IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFH
ZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IDBjMGYw
OGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQuLjJjMTYxMWM5ZTcwZjhmOWExMzc5
YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHAKQEAgLTU1LDQ5ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAg
IHJldHVybiB0cnVlOwogfQogCi0jaWYgVVNFKENGKQotc3RhdGljIHZvaWQgc2hhcmVhYmxlUmVz
b3VyY2VEZWFsbG9jYXRlKHZvaWQgKnB0ciwgdm9pZCAqaW5mbykKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsK
LSAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGluZm8pLT5kZXJlZigpOyAvLyBC
YWxhbmNlZCBieSByZWYoKSBpbiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKCkK
LX0KLSAgICAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZVNoYXJlYWJs
ZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJlc291cmNlKQotewotICAg
IENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLAotICAgICAgICByZXNvdXJjZSwKLSAg
ICAgICAgTlVMTCwgLy8gcmV0YWluCi0gICAgICAgIE5VTEwsIC8vIHJlbGVhc2UKLSAgICAgICAg
TlVMTCwgLy8gY29weURlc2NyaXB0aW9uCi0gICAgICAgIE5VTEwsIC8vIGFsbG9jYXRlCi0gICAg
ICAgIE5VTEwsIC8vIHJlYWxsb2NhdGUKLSAgICAgICAgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9j
YXRlLAotICAgICAgICBOVUxMLCAvLyBwcmVmZXJyZWRTaXplCi0gICAgfTsKLQotICAgIHJldHVy
biBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0
KSk7Ci19Ci0jZW5kaWYKLQotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OndyYXBJblNoYXJlZEJ1ZmZlcigpCi17Ci0gICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVm
IHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgotCi0jaWYgVVNFKENGKQotICAgIGF1
dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMp
OwotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHko
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkp
LCBkZWFsbG9jYXRvci5nZXQoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
ZkRhdGEuZ2V0KCkpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVz
ID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBb
XSh2b2lkKiBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4o
ZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgdGhpcykpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShieXRlcy5nZXQoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgICAgICBbc2VsZiA9IFJl
ZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAorICAgICAgICBbc2VsZiA9
IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CisgICAgfSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3Vy
Y2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpAQCAtMTM4LDkgKzEwNCw3IEBA
IFNoYXJlYWJsZVJlc291cmNlOjpTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYm
IHNoYXJlZE1lbW9yeSwgdW5zaWduZWQKIHsKIH0KIAotU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFy
ZWFibGVSZXNvdXJjZSgpCi17Ci19CitTaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291
cmNlKCkgPSBkZWZhdWx0OwogCiBib29sIFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGVIYW5kbGUo
SGFuZGxlJiBoYW5kbGUpCiB7CkBAIC0xNjIsNyArMTI2LDcgQEAgdW5zaWduZWQgU2hhcmVhYmxl
UmVzb3VyY2U6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX3NpemU7CiB9Ci0gICAgCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFQUJMRV9SRVNP
VVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IDdiNDdm
NWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3YzZjYjcuLmEwZWQwODU3MzRiNzc1NTE0YzEx
NjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNsYXNzIFNoYXJl
YWJsZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKK2Ns
YXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJl
YWJsZVJlc291cmNlPiB7CiBwdWJsaWM6CiAKICAgICBjbGFzcyBIYW5kbGUgewpAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0
OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVj
b2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBA
IC04MCwxMiArODAsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVS
ZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNp
emUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZl
cigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5T
aGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5Owog
Ci0gICAgdW5zaWduZWQgbV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9zaXplOyAgICAKKyAgICBj
b25zdCB1bnNpZ25lZCBtX29mZnNldDsKKyAgICBjb25zdCB1bnNpZ25lZCBtX3NpemU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGMwYjZlZjNmYTNhMmUxMjA0YzY3N2VjZjg2YWVjYmQx
OWJiNjRkN2IuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkx
LDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNO
dWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVy
U2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aXBjSGFuZGxlKSkKQEAgLTIzNCwxMyArMjM0LDEzIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJl
CiAgICAgaWYgKHNoYXJlZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpIDwgYnVmZmVyU2l6ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgYnVm
ZmVyU2l6ZSk7CisgICAgYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRC
dWZmZXIoYnVmZmVyU2l6ZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRh
KQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNp
emUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMg
dm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5
cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3Rv
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJU
KGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBp
IDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0z
NTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJl
Y29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9u
c2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZd
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJl
Y29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJl
ZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVk
QnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFz
ZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFj
aG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWlt
ZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZSht
aW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwog
CiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMx
LDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVm
ZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAg
ZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVS
ZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2
Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBA
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBD
ZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsK
IGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5k
ZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3
YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9w
dGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxl
Y3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAg
IHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVm
ZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4
IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDky
NzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlv
bkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlv
bkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRh
OwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAK
aW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODEx
M2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRy
OwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9p
ZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFm
YTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2
Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBw
ZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4
ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFz
RW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdl
OyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5j
bG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsK
KyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlw
ZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4
IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcuLjdiOGRmNDZhYzkwNDE3
MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTQwLDcgKzE0
MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hl
OjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlv
bik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5j
dGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90
Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3
OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0
eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2Vu
ZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50Ojpj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFw
cGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAg
ICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAg
IHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXpl
ZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50
YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggYmFkNDdjMDc2ZWNkYzVhOGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0NS4uNmZhNDFmMzQ0Y2U2
OWIyYzZjODIxMjlhNjAxMzhhMWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1OTUsNyBAQCAtICh2b2lk
KV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGln
aHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4
dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdo
bGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxp
Z2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6
aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNl
bGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGln
aHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVz
IHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAg
PT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5k
ZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1
MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2
b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxl
Y3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25z
dCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVu
Z3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAg
IG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0
b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2Vs
ZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0
NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIz
Miw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRp
b25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KaW5kZXggMTc0NzBjNjJjNzIwZGRlODJiNzkxNWI3YjNiNTgyMDIzZWI1MWVjNy4uYmJlZjY2
NzM1MWEwYTJiZjU4ZGZhZjVhNzIxMDAwNmEzMThlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAg
LTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1
ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgICAgICBhdXRvIHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1l
bW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigwKTsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihpcGNIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzaGFyZWRN
ZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogICAg
ICAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOwogICAg
ICAgICBkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2FyZChjb25uZWN0aW9uLCBwYXN0ZWJvYXJk
TmFtZSwgcHJldmlvdXNDaGFuZ2VDb3VudCwgbmV3Q2hhbmdlQ291bnQpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1
MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3YjRlMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2
LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBl
cyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0
cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAgICAgICAg
W3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAg
fQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRG
aWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVS
TCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRv
IG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5z
RGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQg
c2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBl
V2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEs
NyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChO
U1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2Ug
TlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00
NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxO
U0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAg
ICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJS
ZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAg
TlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlw
ZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBt
X3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFt
ZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVz
cG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li41NTE2NjY2
YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVj
dCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6
OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNTNiYjZkNWRkMTBjYjYzNTNhYWVmOTM1OGUwM2IwNDAwMzJmOTY3Ny4uODg4MjdlYjI5
MTJhNTM0ZTkyNWJiNWZhOGY5NjIzYWVjM2ExMzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTExNzgsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
Z2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsK
ICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwog
ICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZm
ZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjU4NTQ3ZDg0ODgxZGM4MzBmNjk2OWEw
Y2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNj
aGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwCiAg
ICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwgbV9mcmFt
ZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJhbWVJbmZv
KSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzeW5jQ29t
cGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAg
LTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50
ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkK
LSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAg
ICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2Vi
VVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+
IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlz
U3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9z
eW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5j
RGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXpl
KCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAg
ICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRs
ZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1
NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0
YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZv
OwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcg
KzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3lu
Y0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5j
UmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsK
IAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNr
IHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJi
YjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRl
OwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1h
dGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNh
YThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUlt
YWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VD
bGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1h
Z2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhv
dG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
aW5kZXggYThlOTBlNDI5YTZlY2UxMzY4N2I5ZjkxYmM3MzgyY2E3Y2IwZmYzZC4uNjVlNWQ4MmEz
NTdiY2JhYWY5NTA5MDM4NWQyYWVkYTJlZGYzNDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIx
LDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0
aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBh
c3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107
CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7
Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9
PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAg
ICAgICAgfQpAQCAtNjU5NCw3ICs2NTk0LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0
ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAg
ICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAg
ICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NjUsNyArNzU2NSw3IEBAIC0gKHZvaWQpYWN0
aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hh
cmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFy
ZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJE
ZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGgg
bm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1l
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24o
aW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9u
KGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0
OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9
IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ2NzlkN2IwOTgxYWE3ZDNmY2Q5YmRlOTBl
ZDZmZjJhYzIzMmVlMTUuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTg4LDcgKzU4
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlCiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZm
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0
YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgIGF1
dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VI
YW5kbGUuZGF0YVNpemUpOwogICAgIHBhZ2VDbGllbnQoKS5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RG
TW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KaW5kZXggNmQzMzM4NjllNGUwMDEyZDI3ZDNmZTg1ZDg1ZTUzYTRlZDk2
OTYwYS4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyAr
MjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yNDAsNyArMjQwLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHIKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hh
bmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlm
ICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFy
ZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgcmV0dXJu
IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6
ZSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTI3NSwxNSArMjc1LDE0IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTCiAgICAgYXV0byBzaGFyZWRNZW1vcnlJbWFnZSA9IFNoYXJlZE1l
bW9yeTo6bWFwKGltYWdlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlJbWFnZSkKICAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVm
ZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5
SW1hZ2UtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUp
KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwotCiAgICAgaWYgKCFh
cmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9y
eUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5
QXJjaGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1v
cnlBcmNoaXZlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGFyY2hpdmVIYW5kbGUuZGF0
YVNpemUpKTsKKyAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUFyY2hpdmUtPmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihhcmNoaXZlSGFuZGxlLmRhdGFTaXplKTsKICAgICB9CiAgICAgcGFn
ZUNsaWVudCgpLnNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBXVEZNb3Zl
KGltYWdlQnVmZmVyKSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmls
ZW5hbWUoZmlsZW5hbWUpLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1v
dmUoYXJjaGl2ZUJ1ZmZlciksIG9yaWdpbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhl
NWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMx
ZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Jikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFn
ZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQ
YWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJh
bmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4u
ZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRp
bmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGlu
Z0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgp
IF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3
aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJh
bmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
CisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9z
ZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+
KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxl
ci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdl
YktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0
cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5
cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAg
ICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
CmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVh
Yzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQ
YWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQo
dG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxs
cHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAg
ICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBm
b3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7
Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5
dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAg
ICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgK
aW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1
NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUp
IGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJp
bmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYp
IGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBk
aWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdv
U3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJD
b3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhk
NTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNi
YjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29u
c3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBj
b25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsK
KyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lk
Kj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNo
YWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdl
JiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAo
c2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRh
dGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFy
KilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFy
ZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZl
ci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3Vv
dXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5w
dHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgm
cGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUu
aW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxl
VVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4
IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUy
NGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNl
KQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRh
dGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9m
aWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdi
OTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdhMjli
YzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVz
b3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2Up
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAg
ICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hh
cmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwg
JXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4
YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3Jr
IHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSBy
ZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0lu
dGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRl
ZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhd
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAg
ICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVu
Y29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMx
YTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkxZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2
ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVn
aW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBh
Z2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJz
KQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51
YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAg
ICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAg
dm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAg
ICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVj
ZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAg
ICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0lu
aXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1T
dGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI3
LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0
cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6Rmlu
aXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBp
ZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisg
ICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2lu
Vmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0
YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0
byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVh
bURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1E
YXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5n
ZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21l
bnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0
cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRl
ID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIy
YmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5NmQzZGYwZGIzY2Q2MDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
CiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAg
LTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9t
YW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21h
bnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0
byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWlu
dGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25h
cHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThm
ZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjRkMjYxZDgyY2VjZGUwOWFhYTQ1
ZWRjYTRlMDU0MTlmNTcxMzQwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEg
PSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVy
PihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9y
ZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNw
b25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmlu
aXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIp
KTsKKyAgICB9LCBbdGhpc10oU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAg
IGRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5nZXQoKS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAg
aWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNd
KFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uMTFi
YmFkYjQxMjhkZjFjOGI5MmRlNDQzYTlkNDZhY2EwMzNmZTBkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRj
aC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxX
ZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9y
ZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTaGFyZWRCdWZm
ZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxz
ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2
ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4
NWU0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAg
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVj
MjhmZTUyMmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBm
aW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUw
NzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFk
MjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsx
MTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwg
bWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAg
ICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/
IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1h
aW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAg
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGlu
Z0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3Rl
ZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDVkMDVjMGVhYjc2YjYyYjRmODM2Yzg1ODIyMWZlYTQ0
NzJlMDU1NmUuLjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4
dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJl
cGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBW
ZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVy
cmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFz
dGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlk
ZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNz
IGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIGlwY0hhbmRsZTsKQEAgLTE0NSw3ICsxNDUsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JgogICAgIGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5k
YXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZl
cihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKQEAgLTMyMiw3ICszMjQsNyBAQCBWZWN0b3I8U3Ry
aW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0
YTsKQEAgLTQwNCw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVy
biBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFz
dGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVw
bHkoaXBjSGFuZGxlKSwgMCk7CkBAIC00MTIsNyArNDE0LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2kKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5
PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlC
dWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1v
cnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1v
cnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBV
UkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4zZmYzNTU4MDhl
MWQ2ZWIyYWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9y
PFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmlu
Z3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
bGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNl
bmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
PiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAu
Ljc2YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1f
dXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lk
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2Vi
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVy
LT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAg
IG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRp
ZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAw
NDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li43NmZmYTExMTM5MmE5ZDNi
NGY4NWI1OThjZDZhYmNjZTUxODhmMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBt
X2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9i
dWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi40
YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxl
bWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNV
UkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVy
ID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2Ut
PmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNp
emUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5
QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xp
ZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNp
emVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNo
aXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEu
Z2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRv
IGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJj
aGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdi
ZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMsNyAr
MzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VE
YXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29k
ZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1l
Ojpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFjYTljMjNkNjc3ZjAzYTI5YzYwZjViMmE4YmFjNjgw
ZDZiNWM4NDMuLjJiNzRmNzUxNTZhYmY2YzAxMTA4MDAxMDFlYzdhNWY3MDhkMGJlMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzM3LDcg
Kzc3MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9J
bmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1l
bW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdo
bGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEo
KSksIGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6
WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hs
aWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoc2hhcmVkTWVtb3J5
LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNj
cm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBp
Kys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNh
MzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpA
QCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1l
LnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigp
LmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1
MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAg
LTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1Zp
ZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQotI2lm
IEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAg
cmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBA
IC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1Zp
ZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAog
ewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5B
TFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFl
MTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBA
IC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJh
d0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+
cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdj
ODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04
MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAg
ICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5z
ZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01Q
YXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBm
aW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JH
ZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAz
NGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgog
fQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktp
dDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2Yjcx
OTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFh
MGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYK
ICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVt
YmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0
aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0
MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5
cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwog
fQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQog
ewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZm
ZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzEx
M2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAg
LTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRh
KCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRv
Y3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4
IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEw
Y2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyAr
MjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3Vt
ZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAg
ICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19w
cml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7
CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNl
IF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/
IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgx
YTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMx
NzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNN
ZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKICAg
ICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5k
YXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxl
bmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNp
emUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVk
VGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRh
YzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEg
KzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29k
ZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1
dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBO
U0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5T
VVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29k
aW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
ID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJs
ID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlw
ZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAg
ICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9u
c2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtl
bmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFL
ZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJM
S2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291
cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2Rpbmcg
Zm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcg
QEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5k
YXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUt
PmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAo
TlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4x
RW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUt
PmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRy
OwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29y
ZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAz
NjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRh
NDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAg
TWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRy
PE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJl
YW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBh
MTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBm
aW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1v
cnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCAr
NzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBD
bG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1v
cnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3Ry
ZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVt
b3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4
ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZh
ZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNo
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRf
IElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5
dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAg
IGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5
dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAg
ICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5j
b3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThk
MzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBh
M2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEs
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBjMTY3
Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQxNWIx
YTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2Vy
ZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2Vk
Q29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5j
cHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3
YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRh
dGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlm
ICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
KS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0
YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5
UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlv
bihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1
ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1
MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSog
V2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDky
OTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBX
ZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0
YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBX
ZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8v
IElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2M2Rk
ZDgwN2RjMWJkMzk3NmU2ODgzNmY5M2M2NDM5MGI1MmNlZTRjLi42Y2NmMjk3ZWQ3YWViNDFlYmMx
OTcwMjdmOThjMjg0NGQ5OGZlNmM4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCiAyMDIxLTExLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Ygc2VsZWN0
aW9uIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJi
MTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uNjFhMTFmZjViZjU1YWEyZDk4ZTViZGFi
OTdkYmIzZjlkNjFhYTdhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQz
LDUyICs0Myw0NSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVm
ZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NF
UlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBz
dHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0
cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0
eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNv
cHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1Qo
YnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBj
b3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNv
cHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZl
ckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIs
IDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRh
KClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1
aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0g
KHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLmdldCgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDEw
ICs4OSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIp
CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9
ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0
YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnll
IjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25j
YXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0
aW9uKSkpOwpAQCAtMTExLDEwICsxMDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVj
dG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAn
YycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
V1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0
b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3Ix
KSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBw
dWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4g
bG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlz
LiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERh
dGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAg
IGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRh
IG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBB
U1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VR
KGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xv
bmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBj
bG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1
LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6
ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOwor
ICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVu
Z3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRh
a2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8v
IGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxk
ZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5p
c0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUo
Y29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVm
ZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVp
ciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
MjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJs
ZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5
KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc1LDYwICsy
MDQsNzAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAn
YycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCi0g
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsg
J2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdm
JywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycs
ICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRl
ci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsK
LSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3
KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wg
PSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZl
ci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
YXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBn
aDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91
c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIp
OwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVj
a0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlciho
LmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlq
a2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgp
LCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAi
YWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwg
ImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdo
aWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVj
a0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAg
ICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZl
Y3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZm
ZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtl
QnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVy
MS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7
J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkp
OwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZm
ZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihX
VEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAn
YScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5n
ZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycg
fSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdk
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5n
ZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0
MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBT
dHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1
bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgp
OworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRv
SGV4U3RyaW5nKCksICIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIy
NGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3
YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0IEBAIHN0YXRpYyB2
b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5T
QXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJy
YXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwg
YnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hh
ciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5
dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
IAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29y
bGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJl
Zil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRh
LCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRl
ci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0Rh
dGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZE
YXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6
dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVt
cEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAg
IH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdt
ZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
aGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhl
bGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwogCiAgICAg
ICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVu
Z3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGRE
YXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0RhdGEsIHdv
cmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0YS5s
ZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVudENv
dW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgpKQorICAg
ICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6
ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIgcG9zaXRp
b24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAoYnVmZmVy
LT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1aWxkZXIu
c2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
YnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAgRVhQRUNU
X1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVj
dGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9IGluY3Jl
bWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
RGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVm
ZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBsYXN0Qnl0
ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpbQCJk
IiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAgICAgIEVY
UEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="470411"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445259</attachid>
            <date>2021-11-29 02:01:04 -0800</date>
            <delta_ts>2021-11-29 04:58:13 -0800</delta_ts>
            <desc>SharedBufferBuilder for EWS</desc>
            <filename>bug-233442-20211129210102.patch</filename>
            <type>text/plain</type>
            <size>499017</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2YjlmZjNlYmEyYjYw
MmE3MzVjYzQ5OGY1NjBjNzk4NjgxOTBhZC4uMGY4YTE4Zjc4OWI3ZjU4MjNhNDQyODMwYWM1MGVj
MzE0ZGJkYjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxMSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBi
ZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZl
cmVkRGF0YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICogbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVk
QnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051
bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3
YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWlu
ZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAg
ICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVl
IHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisg
ICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVy
IHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hh
cmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5
cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQg
dG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJl
ZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJl
CisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2Vk
OyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4
cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBU
aGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZl
cnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAg
ICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90
ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1p
dCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBk
ZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBj
b3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUK
KyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNv
bnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJl
ZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBo
YXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFs
IGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQu
CisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ug
b2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVu
ZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0Miwg
YSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3Jl
YXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBi
eSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJ
REJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2Nl
bmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZv
ckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZG
b3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0
aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxp
emVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0
YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
VUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdS
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6
Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5k
RmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxl
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJs
ZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNj
cmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJv
YXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEtMjYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFk
ZCBpbXBsZW1lbnRhdGlvbiBvZiBzZWxlY3Rpb24gaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0
aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1NzQ4ZGJlMjllYWJjYmVjNDJiMjQ5ZjhjNjVjZTI2NDg3M2I2
NzUxLi5mZDQ5MmZjZDZhZmVjNDM1YTg1Y2FlY2E2YmYxZjdiOGE5MTQ4ZmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdp
blZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRv
U3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVx
dWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToK
KyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1h
Z2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0
KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1v
cnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSB3
cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAgICAgICAgU2hh
cmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAgTm8gY2hhbmdl
IGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5IHNpemUgcmVk
dWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdoZW4gbWFwcGlu
ZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEgY291cGxlIG9m
IHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFj
dG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBjb2RlIGFuZCB1
c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisKKzIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBh
bGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFy
ZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1l
bW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxl
IGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAg
ICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1v
cnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtlIFNoYXJlYWJsZVJlc291cmNl
IHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBTaGFyZWFibGVSZXNvdXJjZSBv
bmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVkTWVtb3J5IG9iamVjdAorICAg
ICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcuIERlbGV0aW5nIHRoZSBvYmpl
Y3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgc2FmZS4KKyAgICAgICAgTWFr
ZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIp
OiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29k
ZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQuCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHku
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCiAy
MDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zIHNob3VsZCBoYXZlIHNlcGFyYXRl
IGNsYXNzIGRlZmluaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAxZDUw
MWFiMzgwMTdmMWQ4ZjllODFjOWJlZmRjMmQ3ZjZmMTZmZS4uZjM1MjlkZWI3MmYxZWY1ZGQ3ZTE4
NDg5YjA0YWJkYWU0ZTQzNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29k
ZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0yNCAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxl
IHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIxMzk2
OTY2YmI2MGFjLi41Mjk0OTMxOTgyOGU0ZTE1NjM4MmI5MzdhZjliYzJjYTVlYmU0MWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTEtMjUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBj
b250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFu
dGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAg
ICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVh
bTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAq
IFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJj
ZS5oOgorCiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZk
YTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRi
MWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJ
Zk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAg
ICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwot
ICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3Ry
aW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0K
aW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFl
NjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21p
bWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdl
UE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBC
bG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMx
Y2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZl
OGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAi
aW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYg
KGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0
Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRv
cHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7
CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0
MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
b21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2
NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3Jt
RGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewog
ICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpu
dWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjg2
NzUwZGZlZWZlYzU1NWNhZjlhMWJiZjg1MTA2MGE1OWFmZjI4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBET01D
YWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQ
b3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVl
c3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRs
ZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3Bv
bnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0g
V1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OCwxNSArMjk4LDE1IEBAIHZvaWQgRE9N
Q2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVz
cG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRp
b24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNl
Qm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcsNyArMzE3LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAt
Mzc0LDcgKzM3NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9u
c2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVm
ID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2
ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMt
PnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5
KCkpOwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRX
aXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIu
LmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNl
PiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNw
b25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYu
LjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMx
LDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9k
eSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8
Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZv
cm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5
KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBh
cy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9
KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25z
dCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwg
W10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRy
X3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4u
Y2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBF
eGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBX
RUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7
CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVl
YWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIw
NDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zv
cm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyAr
MTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAg
ICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJh
eSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBr
ZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
ICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAh
PSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNt
cChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJv
b2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6
VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBw
YWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUo
KSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBh
aXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi5mMTJj
ODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRj
aEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYg
KGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewot
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25l
ci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5z
IGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIs
NyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAog
ICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0
YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0
YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6
VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25z
dW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
ICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlz
QmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRj
aEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAo
aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
ICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9T
dHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJs
U2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFk
MWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3
ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0
YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEg
dGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4NjUwODU4
NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMzc5OThlZjk2OWEyYTU5M2NmYjk1ZmZhMDAyN2MzNzZjNzhk
ZWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
ICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0y
NjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJl
YW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29s
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTog
ewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZv
cm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisg
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICsz
MjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5k
KGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit7
CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRh
KSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0
YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIHJldHVybiBtX2J1ZmZl
ci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0NSw3IEBAIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxw
dHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZm
ZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsK
IH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUzLDcgQEAgUmVmPEJsb2I+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0
LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVu
dFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVs
bHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVy
biBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7Cisg
ICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3RE
YXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpAQCAtMzYyLDggKzM2Miw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1f
YnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgz
LDEwICszODMsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNl
KCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNl
PiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAo
bV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAg
IGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0
M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZk
OGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEo
KSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQor
ICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdl
dCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToK
IAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBS
ZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQ
dHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2
NDYwMDQ2ZTQ2YmQ1MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFiN2MxZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0
MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9y
bURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4uYTE2MDc0
N2RlMGNlYWNlZWNjNzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAK
LSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAg
dm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFk
ZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEz
N2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
aGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhp
Z2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4u
ODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29k
ZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAg
ICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMx
MmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
S2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0
byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEz
IEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9u
KTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQs
IElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3
ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAx
MTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
SURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRj
MDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBv
YmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxp
dGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7Cisg
ICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0
ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcs
NyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyAr
MTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5k
ZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFs
c2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3Jk
IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RT
dG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBp
biB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBk
YXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBp
ZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBp
biBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBv
YmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9k
ZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcg
KzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVj
dCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwog
ICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93
ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6
bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAg
ICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXko
aW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgp
ICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpL
ZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwx
NCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1
dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmlt
dW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBj
b3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2Uu
dXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThj
ZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJD
dXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1
cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1f
Y3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRC
aW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3Vy
cmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkp
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmNwcAppbmRleCBhZmVmNDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJiOTY3YWEzLi4wMDI3
NTcwODAyYjE0YjA5ZDFhYTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsK
IAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1Jhdywg
bWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3
LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1f
aXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgw
M2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2Fn
ZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5n
ZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2IyZTJmY2EwZDM3YWE1
Mzk5OWZhNjI4NGE0NTlhNGU0NzMxYWMuLjAyOGE5MTk4NTgxN2ZkMzY5ZTcwZjRjYWFiOTRlMWEx
NGY1ZDBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291
cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQo
KTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291
cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMp
OwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikK
QEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAg
ICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRl
UmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRy
dWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCku
Z2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVs
ID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCBy
ZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVz
b3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAzNjM5
M2EzYjZmOTI3ZmYwNGZiYzI1ZWQ1N2FkZGFmYzM5MjllYWYzLi45YzQ3MjZmMjY0MmRmMDFkMzNh
YmNkZjRlMzFlYzgyZjRjOWE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8
TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21p
c2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGEx
OWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMz
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0x
MDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZp
bGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6
Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwog
Ci0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5k
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVI
YW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5
dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2Qy
MjRhMWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZh
aWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9
LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFs
aXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkx
OGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBA
IC01MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYg
KCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRh
aW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFp
bnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJ
ID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWlu
c09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1f
c2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAg
ICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAg
ICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICgh
bV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5n
ID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVm
ZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZm
ZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRI
YXNoIHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4
Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJh
N2ZkYTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0x
NjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRv
d25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZv
bnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1f
Z2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpA
QCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2Ut
PmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1f
aW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEo
YnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9
IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAg
ICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4
IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1
OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3Ry
dWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlh
bnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkz
LDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250
U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxz
byBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJh
YTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRj
Njg5YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0
MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVu
dEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3Rl
Ym9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywg
YWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZl
MGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1
MjBlNjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkg
KzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNs
YXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRl
QnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRD
b21wb3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVw
bGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBi
b29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyAr
NTc0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50
SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAt
NjE4LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0
KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYp
OwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVk
U3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYu
LjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIg
KzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVj
NDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAt
NzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRl
cy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
TlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJp
bmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVk
RGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5n
OllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRN
TEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRN
TEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRv
cjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBl
bGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXRE
YXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAg
aWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdl
KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQ
Ym9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0
ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAg
ICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hp
dmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYg
KCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhh
dCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBi
dXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAx
LDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQog
ICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxl
bmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4u
M2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcg
QEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRh
dGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBl
ID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVy
IHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAg
ICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1p
bWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9
IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAg
ICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZp
bGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAg
ICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVy
bCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBl
bGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzku
LmFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBA
IC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0
YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAg
IFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVt
ZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRv
JiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0
YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291
cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVk
QXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJl
c291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7
CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpA
QCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7Cisg
ICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJl
c291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAs
NyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1l
bnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+
bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVu
dEluc2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXIm
IGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6
OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRh
KCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFz
ZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9t
VVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBh
cmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1l
bnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNv
TGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5T
aG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5p
dGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9u
RG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVV
UkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBz
dWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAg
ICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVU
Rjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZy
YW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVm
KCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFy
Y2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlz
dFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2
MTcsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0p
OworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAo
IWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQx
OWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBj
NzIyNzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAg
ICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYg
aW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlm
ICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFS
ZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhN
RTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFi
bHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhp
cyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUg
bWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNo
IGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNi
NzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThh
NWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpw
YXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5k
RW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJl
c3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJl
c3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3Qg
U2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRo
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBs
YXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVy
OwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29s
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0g
ICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1w
bGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAg
c3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigp
OwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJl
IG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8g
dGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwg
dGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLjhh
NjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVkMDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcs
NyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
ID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2Fk
ZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhh
c0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3Vs
dCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRy
OworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0Nv
bnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRl
bnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisK
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkg
OiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAg
ICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZm
ZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9k
ZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2Nv
bnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAg
ICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRl
bnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRm
YjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5ZmU5
N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNw
b25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAg
ICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9u
c2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5
LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsK
ICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1
ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZl
cjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0
Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApA
QCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1l
VHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNw
b25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJl
c3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41
Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC0xMDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNl
Q29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRh
dGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJu
IGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCBy
ZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRm
MjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50Rmls
dGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigp
KQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUw
N2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZh
NjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBj
cmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJp
dHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwg
eyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgw
ZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNo
aXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNv
dXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7Cisg
ICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7
CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWlu
UmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1
Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAg
bV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyAr
MjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFy
dENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1f
Y29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
ID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRh
KCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRj
YmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFz
cyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZv
cm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3Vy
Y2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFC
TEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0
cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZk
MjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYz
NTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1
cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTog
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9y
IHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRp
ZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCAzYTA2NGJjNzIzMWEzNjAwY2M4M2RjNThhOWEyZTdmZjJlZTk2YjM1Li40ODBm
MjJhYmUzNTVkMTA5YzIwODYyZWZhZTlkYmQ1ZDA4NTdjOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAg
IHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNw
YWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2
NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBG
cmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBk
YXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZl
cnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9j
dW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJl
cigpKTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAg
ICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxv
YWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAg
ICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgq
dGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0
aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwot
ICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9u
c2UsCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2
ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBi
ZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAt
NTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwog
I2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQs
IGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3Qg
U3lzdGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1l
TG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3
NmFjMjM1Li4xNGU1ZmQxZDBkMWIyMDUzMzk2OGE0MDQ2YTE0NDQ0MzE2MDkxOGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVG
SU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNv
dXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVu
dExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwg
bV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERl
ZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRl
ZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3
ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAg
IG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAg
ICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJp
bmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1
YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyMyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVS
ZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNv
dXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVy
KQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitTaGFyZWRC
dWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwog
fQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAg
LTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIs
IHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0
IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lh
bnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNl
bmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRp
Y19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjQwNjUwMWVlNTMxNWE4
Njg2MTFlZWNlMjZjMTk0Njk1NWUxZTc5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBG
cmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNs
YXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+
LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAK
LSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2VEYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2
NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291
cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJj
ZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2Vi
Nzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1
ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRC
dWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsg
fQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9u
c2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAg
IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0
OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1
LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
TWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBw
YXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVz
b3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFu
aWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21h
bmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRp
bWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlz
IHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNo
ZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxk
IG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVl
Ni4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0
ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNv
dXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNv
cHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgp
IG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBp
ZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRh
dGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNo
ZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1h
bCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhl
ciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4
eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0
d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwg
dGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFs
bGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jgog
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAo
Z2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7
CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAg
ICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25j
ZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4
NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQy
LDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpA
QCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVM
b2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7
Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hl
SW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2Ux
NzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3
NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uo
VVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
LmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkp
OworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2
NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChk
YXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMz
YWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5iZGEyYTJjNzY2OWUxOGM1MjQ3
YWM4MGExMmYxN2JkMjZiMzQ4ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4NCw3ICs3
ODQsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGlmICghZGF0YVN0YXRlbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAg
IGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQt
PmJpbmRUZXh0KDIsIEZpbGVTeXN0ZW06OnBhdGhGaWxlTmFtZShyZXNvdXJjZS0+cGF0aCgpKSk7
CkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0
YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+Ymlu
ZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5i
aW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAg
IH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAg
LTg3OCw3ICs4NzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2Ug
dGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3Vu
dAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsK
IAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMTEzLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAg
IGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAg
ICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVu
dC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxv
Yig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5j
b2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4
IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4
ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3Bl
cnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1w
dHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1
dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0
eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJM
IGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZv
ciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAg
aWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3Bv
bnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNl
KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRh
dGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJl
c3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25L
ZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlE
KHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAg
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9u
c2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlk
IHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJv
cGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNp
b24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFy
Y2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAg
ICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAg
IENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
Q0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5
TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYg
TkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAg
ICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25h
cnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3Rh
dGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBt
YWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpA
QCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRv
IHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAg
ICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFj
dChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2
ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENG
RGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3Vi
ZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRk
U3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYx
LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNw
b25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3Bv
bnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1Pgog
ICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihG
cmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAg
IHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRv
Y3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90
aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBv
d24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJu
b1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBo
ZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXgg
ZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRh
NmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTkzLDkgKzE5MywxMCBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29udGlndW91cygp
OwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9
IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1F
SGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVE
ZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0g
cXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRl
bnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRN
TCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250
ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0
byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBi
ZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNw
ZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkg
c2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5k
ZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZh
MmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIs
MTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFl
NjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2
N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVj
a0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24n
dCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNh
biB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBl
bmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5
KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRh
IHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQg
ZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0
cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0
byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMy
YTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdh
NDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRh
LmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcg
Q2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJu
IHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVk
KCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAg
LTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdl
dCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVk
Rm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07Cisg
ICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0
cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRG
b250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVu
dCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRj
NTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFh
YjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9h
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
Zyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZp
cnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZy
b21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDli
ZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3
MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdl
KCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVy
VXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRh
QmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8
fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJl
c291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBM
QVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkp
OwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNl
bGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQg
dG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODVi
YTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFn
ZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNl
ZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1f
ZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAg
IGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEu
c2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewot
ICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0
YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5z
aXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAg
ICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGlu
Y3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09L
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggOGI4M2U1MzMxOTBhNzc2YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRjN2Q3
NTRlMTliNzU1YTljYWM1NzRiZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZl
cikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1f
ZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250
ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4
MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlm
CiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhh
c2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQg
YnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2Fj
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdm
NDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBA
QCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVu
dCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9
IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwo
KSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5z
ZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1
NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAt
ODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAg
ICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkx
LDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZG
b250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRG
b250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3
ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01
MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6
ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAg
ICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVt
ZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRp
bmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5l
ZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5z
aWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMy
MDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
LSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmlu
ZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0
OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBA
QCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5k
YXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2Zl
YmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2Ni
NWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRC
dWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRT
aGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
KTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQg
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2Rm
NTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
VGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVz
b3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0
YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1
ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVk
UmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRv
cjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0g
X0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVC
YWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25z
ZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNh
Y2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVz
cG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lk
IERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXIm
IGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewog
ICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9y
UmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3Vy
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2
NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcg
QEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAg
ICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3Vy
Y2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4
IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZkNTM3YmZkNjJm
ZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3Jp
Z2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJl
c3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcs
NyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBj
b252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252
ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxE
YXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCku
Z2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigp
ID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVn
YWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2Fj
eVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNy
ZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2Fk
ZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdV
VEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0K
KyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFi
MTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90
OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1MzVjNjMyZDlkMmRhYzkxM2VmLi41
ODcxYThlYTZhMzExOThjOTBhNGY0OTQxYmMyM2RlOTg0OTViMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hl
ZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hl
cyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxv
YWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4K
ICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hl
ZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1
MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2Rlcygq
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNs
dWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdn
ZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsK
IAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3
aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5k
IGFkZCBvbmUuCiAgICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+
Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFs
aWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7
CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZElt
YWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGlt
YWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5t
YWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVk
ZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4
MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAg
ICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAg
ICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2
NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1
Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0
YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2
ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRl
cihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRl
cjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFS
ZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisK
ICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFy
cmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5m
aWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEo
KSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1Jl
YWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nh
c3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdG
aWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBz
dGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThm
NDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5j
b2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0o
Y29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2
MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhX
TkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1l
bnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29u
dGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
REZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBk
YXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2Fy
ZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAg
UGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVz
b3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBz
dWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2Nv
YVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29j
b2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJp
bmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hl
Y2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4
IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhm
OTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9y
PEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZl
cnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwg
bV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwog
ICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4g
ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5Mzhh
M2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2Nk
ODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2
b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21E
YXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9t
U2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2Rl
cihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlk
NjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMx
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1
YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwg
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2Vs
ZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4
ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2
NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01
MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJp
bmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owog
ICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0
cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5k
ZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0
NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bh
c3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3Mg
U2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1h
Z2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBz
dHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMg
PSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
VVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4
NWM0ZTkxNDc2OC4uNGJlYTRmMThlNGM3OWRlYjU3NDRmMjgwZTlmOGY5YmMxODNjNmYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTY1LDcg
KzY1LDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vy
cm9yKCkgY29uc3QKIAogY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2
aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAg
cmV0dXJuICptX3ByZXZpZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVy
Ojp1cGRhdGVNYWluUmVzb3VyY2UoKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQog
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAog
ICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQot
ICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3By
ZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNl
aXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJh
MzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIuLjA2Yjc2ZjU5ODUxODJiOTcz
ZTYzZjM5NTkzOTRlYTlkMzQ5YWI3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAg
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9w
cmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3
RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNlUmVz
cG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBk
YXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVu
dEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5h
MWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8g
ewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4g
YWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRk
aXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQz
OWM1NWI5YWZkMzkwMDM1MzUzODVkLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQw
NTg3ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUw
LDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQog
ewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
ZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3Zp
ZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEg
QEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAg
ICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVy
KQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDog
bV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAs
IERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5k
aWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQot
ewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7
Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGlu
Z1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwot
ICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmls
ZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNv
bWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYg
c2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERh
dGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNl
Z21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0
dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25l
U2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBG
SVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5v
IGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRp
bmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3Jp
dGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21l
bnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAg
ICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYg
eyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVk
QnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21l
bnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmlu
ZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1f
c2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQot
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9z
ZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAg
ICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiAr
MTU2LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVy
OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wg
U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRp
Z3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAx
KTsKQEAgLTIwMiwxMCArMTkyLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6
OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAg
ICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7
CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywyMyAr
MjAyLDI2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdt
ZW50KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSAr
PSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXpl
ID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSAr
PSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKK3Zv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
K3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0g
MDsKQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9z
ZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5z
ZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkg
fSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIm
JiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkp
IGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTUsOCArMzQy
LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09u
ZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBp
dCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUo
KSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3Miw3ICszNTgsNTcgQEAgYm9v
bCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAv
LyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNl
Z21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGln
dW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHko
KSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250
aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9
KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0
YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91
cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZp
bGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGlu
ZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nl
c3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZp
bGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFw
cGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJu
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21l
bnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3Io
CiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyArNDI3LDcgQEAgY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wg
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2lt
bXV0YWJsZURhdGEpOwogfQpAQCAtNDAyLDcgKzQzOCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwg
c2l6ZSgpIH19OwogfQpAQCAtNDU2LDcgKzQ5Miw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVy
YXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3Np
emVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RG
OjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAt
PiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTExLDcgQEAgc2l6
ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBz
dGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVu
dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShz
ZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2Vn
bWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBv
c2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ5OSwxNiArNTM1LDIxIEBAIGNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25z
dCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1Jl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxE
YXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdt
ZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50
LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXpl
KCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxs
b2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAg
ICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU3NSw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
YnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0
NTQ5MTgzOTM2OGFkLi4xZDRmYTQ0ZTAzMTBlMGFmMGVmZjYyMThjZTQ1NmYzZGUxZGQzYWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkt
MjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiAr
NjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5l
dyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUp
KTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAg
ICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQot
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0
cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsK
LSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRh
dGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJl
Zik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0Uo
R0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAg
IEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRh
KCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2Vn
bWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50
cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0
aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVy
YXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAg
IGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRh
KCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEo
KSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4g
aXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8
dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIg
YW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBB
cnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQg
YnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVu
Z3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQg
Y2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1
aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9
OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsg
fQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0
YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAg
Ly8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdt
ZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBz
aXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAg
ICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9
CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNp
ZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQ
dHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rp
b248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgp
PiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikK
LSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRp
ZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+
IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFV
U0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsg
Ly8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3Zp
ZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsg
fQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNF
KENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisK
ICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlm
CisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0
YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWlu
ZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hh
cmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0
YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
IHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNv
bnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVf
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29u
c3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBU
byBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAg
IHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAsMTY4IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5
LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQot
ICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkg
dGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmll
dyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7
CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcigp
IGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29u
c3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFr
ZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsK
KyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIp
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21i
aW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGlu
dG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdt
ZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdt
ZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAj
ZW5kaWYKIH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZl
ciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRh
KCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBw
dWJsaWMgU2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdz
JiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQor
ICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYm
Li4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBj
bGFzcywgaXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5
VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgor
I2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVh
dGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQ
T1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
eworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBT
aGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAg
ICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5oYXNP
bmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOworICAg
IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVy
ZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGlt
bXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhh
c09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZm
ZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9
CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsg
fQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5z
dXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAg
ZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAg
ICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307
CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7
CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY4LDIxICszODEsMjEgQEAgaW5saW5lIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25X
aXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3Qg
cG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVy
RGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAg
ICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VO
REFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2Vu
ZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBt
X3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29u
c3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Np
emU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYp
OworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5n
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYw
YzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAg
aWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1h
Z2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29y
ay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVU
eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZp
ZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2Rl
ZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiAr
MTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3Rh
Y2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJD
Rjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihD
RlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlv
bmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIp
KTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBm
NTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5
N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVu
Y29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5
dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAg
ICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdm
ZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5ZmMyMjhhNmQ5
YWJiYzMyMGVmN2Y2YzhiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZl
biBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28g
b25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5E
QVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgp
IGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVDRkRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+
KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAK
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRh
R2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRl
MjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIx
MSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5
VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3Rh
dGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1
ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxv
Y10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9u
VXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hl
Y2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3
ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEg
QEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNl
Z21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXpl
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJ
bnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChO
U0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAK
LVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1Jl
dGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0
YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0
YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkg
Y29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVu
dHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwg
bnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICBy
ZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtMTI2LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0
YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFp
blB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0
YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
aW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRl
NThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJz
ZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3Qg
KGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2
YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgy
ZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2Vm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3Rh
dGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXRE
YXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7
CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNp
Z25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXgg
PSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0
aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJ
ZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5
SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWdu
ZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFs
aWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAg
ICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1
dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEg
PSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3Vz
SW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAt
MjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7
CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsK
KyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYg
aW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0Vt
cHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcs
MTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNP
TiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMi
CiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBp
cyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5n
IHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBr
ZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBl
bmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlk
czsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENE
TUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMy
YTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1
ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZv
aWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBl
OjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZm
ZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBk
MC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYy
Li5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwx
MiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJy
YXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92
YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1Jl
ZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50
QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFf
YXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUo
ZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUo
ZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3
MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5
NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5j
b2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVC
eXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4
IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5
Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5
dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYo
KTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0
aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAg
c3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3Rf
Y2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1
b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250
aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXgg
MTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2Zj
MTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRl
cnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZv
bnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9h
dCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9u
dENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRl
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2lu
IG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJv
b2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0
ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5
MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVk
NDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNp
YmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdp
biwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IElu
dGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxl
LCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBu
dWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRm
YWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVk
N2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFj
ZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNj
cmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0
dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBj
aGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpA
QCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBT
dHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewot
ICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5D
b2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNv
dXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4u
NWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6
OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5
cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShk
YXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9k
ZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9k
ZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1l
VHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQy
ZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNl
MDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAt
MzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5N
b2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2
YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7
CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmlu
ZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVS
TCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7
CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVs
PiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJs
KSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwog
fQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFk
MmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
bGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29m
ZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUp
CiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0
OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1
aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBB
U1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZm
ZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3Rh
dGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZh
bHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7
IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wg
aXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zm
c2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJp
dmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAg
IEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAg
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAot
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0
b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1
ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQog
ICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0
OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2Rk
ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJl
dHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hh
cmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8v
IFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQg
bm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24g
cmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhl
IHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1
ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1Nm
bnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsK
IAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQg
cGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVy
dCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVy
dGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBu
dWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRC
dWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5
MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUw
MjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJh
Y3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRo
ZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlm
IChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQog
ICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVm
ZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5
ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJj
YmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0z
MjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJv
b3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAog
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3
MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBp
bml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRh
ID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgp
KQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQ
TEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09
IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5n
ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUo
KSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05P
YmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05X
cml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcg
Kzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNl
c3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEp
IHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAg
YXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygp
IHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgp
IHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0
VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcg
Kzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFw
YXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05
MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3Np
bmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNl
OltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VX
aXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVl
c3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5
MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJl
c3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Np
b24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
S2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJl
ZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRp
bmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdl
dCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNz
aW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4
cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChO
U0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBw
SWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAg
LTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtl
eUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5
KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVh
bWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRl
bnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRp
b25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpj
b250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyks
IGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWlu
UHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
OwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmlj
YXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3Rk
OjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0
cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAg
ICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAg
IGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRh
dGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5
SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2Fk
IiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQo
KS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUo
ZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0
b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVx
dWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJ
ZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250
ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRp
Zmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3Zl
KGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9y
KTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5
SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3RE
YXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAt
MTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBt
X2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5
SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRy
eSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRp
Zmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciks
IGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEp
XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRl
eCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkw
NGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJB
VkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJS
ZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAg
LCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3Jl
YXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBb
bV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBx
dWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlz
OkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAg
IFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVj
ZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBk
OTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlh
MDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxh
Z3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRC
dWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBw
ZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1E
YXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURp
c2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4
YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3
OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEw
NzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNy
ZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTEg
KzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQo
KQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlm
ICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVs
c2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFy
ZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVy
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNSw3
IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRh
VVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpG
b3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
OjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAg
ICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0K
IAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21f
YXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFm
MzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7
CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThk
M2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQx
ZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9u
YXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVz
QXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXpl
X3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFy
ZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAg
ICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9z
aXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcg
QEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0g
YWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCku
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQp
IHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmll
ckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFj
IHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVu
ZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1
c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRv
IGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5
IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0
YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERh
dGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3
cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgp
LnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJh
dGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAg
ICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVy
IGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVx
dWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0Rh
dGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwg
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0g
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2Fs
bGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigp
LCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVw
ZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQo
KSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMy
N2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1
MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVD
RkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1
OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBj
b25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29u
c3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFk
YmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAg
IHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4
IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1
ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3Jt
RGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJl
Zj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAg
cmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFi
bGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTEx
MGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAt
MTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRf
TGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xp
YnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxp
YnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1
NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBs
YXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9T
ZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAg
ICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkp
OwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7
CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwg
dGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQog
CiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFl
NjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+
IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRh
KCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZl
cjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxl
KGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcxNWJk
YTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIy
MDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Vi
a2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8p
CiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAg
ICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2
YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2
YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRm
YjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGln
dW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgp
LCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2Rl
ciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRh
dGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFk
VHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCA5MTEyNjU5MmM4YmE3NmJkNjYzNzMzMjRkNWJiMjk2YjMxZGUwM2Jl
Li5kZjFjYmI4NWYyMmNjZjQ2M2JkNTU3YmExN2UwOWE1Y2UzOTAwYWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY1NCw3ICszNjU0
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVk
dWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUi
LCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAg
ICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJp
bml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5
bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdT
VF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5p
dERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZl
NzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEy
YzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3No
IHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3Rh
cnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUs
IGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJy
b3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFy
c2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAo
dXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAg
IGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+
cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAg
ICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJr
dXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJz
ZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBt
YXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBh
cnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1v
dmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwg
IXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5
ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0
NWQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
MzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21t
b25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBt
X3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRl
ZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVt
IHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2Vu
Y3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRy
LCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAg
IG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RD
ZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAg
ICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAg
ICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkK
ICAgICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJz
ZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygp
KSkKKyAgICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0
YSYmIGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQn
cyBub3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1J
ZCA9IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmlu
aXREYXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBh
eWxvYWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxv
YWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJp
bmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTg2LDExICs4OSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5l
ZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlv
blN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNi
YjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBk
ZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZv
bnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxh
dGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdp
ZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlv
bkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0
OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBG
b250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09S
RV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJD
T1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4
YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVk
OTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1l
bnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFu
Y2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1f
ZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQog
CiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0
YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBN
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZh
bHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJl
Y3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0
YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBj
b25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05
Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxp
Y3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
KiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFs
aWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyAr
MTIwLDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0
RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNz
ZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFy
dHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVN
YXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3Qg
TWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJ
bnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sx
XTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAK
LSAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50
cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50Owog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNb
Y291bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9u
IDogVGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFu
dFJlY29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQ
YXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6
OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJs
eVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5U
eXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBj
b25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhB
c3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRo
VmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jp
em9udGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVj
dGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwg
Z2x5cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlw
aCBjb250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhH
bHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgs
IGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24q
IG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdCho
b3Jpem9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZt
YXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAg
c3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
R2x5cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0
OwogCi0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3Rh
bnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlm
IChvZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlw
aEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQg
PSBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIy
MCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1h
dGhWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAg
ICAgIGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2
MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdh
Njg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7
CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1h
dGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVu
VHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVO
VFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhB
UkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVm
MDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlw
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5
cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBj
aDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2
KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBp
ZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBz
dHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBi
dWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8g
Ijw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNv
bnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
dmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRo
aXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdl
MlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1
Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wg
Z2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJh
Z2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkg
Y29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgs
IHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChj
b3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdl
IEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5
YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRj
M2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcg
KzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRz
IGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBu
ZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUg
b2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250
KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3
cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYg
cmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250
RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcg
QEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0
cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBp
bnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1v
cnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNl
PiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
d3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUs
IHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFj
NDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2YTBlZjVi
YzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUs
NiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFz
cyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4ICs1NSw4
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1i
b29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9y
PHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZv
bnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1
aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVG
b250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAK
aW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzllOWVmZTA2
MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VU
YWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9
CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRh
YmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0
aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEs
NyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRl
cmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNl
dCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25z
KEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkK
QEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1
cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGlu
ZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBU
YWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENv
dW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAm
bG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJl
VGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEds
eXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBo
LCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9v
bCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1h
cDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkK
QEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAg
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsK
IAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5
cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0g
Y291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3
ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5U
eXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVp
bnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChp
c1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFn
ID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVC
YXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6
VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVy
ZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3
IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2Ny
aXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zm
c2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQo
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZz
Y3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBU
YWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRU
YWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNj
cmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNj
cmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVm
ZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRh
YmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFz
Y3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJs
ZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCog
c2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAg
IGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVh
dHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9v
a3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNjcmlwdExp
c3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RP
ZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9v
a3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3Vw
TGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlz
dChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZh
dWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVh
dHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZl
YXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lz
KGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVM
aXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVy
dGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1
YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVy
ZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKQEAgLTM4
MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJv
b2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZl
Y3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcp
OworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICgh
aGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBl
VmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVh
IGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVy
dGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3Qg
T3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5U
eXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47
CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJp
Y3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VC
VGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZh
bGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikK
ICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxH
bHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5k
ZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIxYTMzYTYy
MDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5h
bWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAg
ICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEy
Y2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAy
NmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0
eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVm
IEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRp
b25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUy
ZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZj
MzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJv
LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1l
KCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
bikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAg
IGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIw
OTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4
OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgs
NyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3Ro
ZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZk
MjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUs
IGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
SFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBo
Zm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAw
LCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3Vs
dCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAg
ICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBjZjJiNTFmNmYwMjgzN2ExMTA2ZjRk
OTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAx
YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAg
LTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wg
Y2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9
CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVw
bGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQotICAgIFNoYXJlZEJ1ZmZl
ciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAg
IHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
IHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsg
fQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRh
OyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7
IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmls
ZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRS
ZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMy
ZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUwYzgyMDk2NGU4
YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAt
NzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEo
KSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhh
biBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJl
ZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAg
ICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigp
OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6
VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9
IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0
ZGY0OGRmMTdhYmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBz
dGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogICAg
ICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQor
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVn
X2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBp
bmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTI0
Miw3ICsyNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUo
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYs
NyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVy
OjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVH
SW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1
M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01T
KQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRk
ZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1
MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFr
ZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAo
TlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0p
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpj
b250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBp
ZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJj
aGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
OwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsK
LSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkK
KyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUw
MSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4o
Y29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRl
bVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9h
cmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1
dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMu
c2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5
cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVz
W2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ld
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ld
XTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1J
TUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICgh
aXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUg
PSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURh
dGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1J
TUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uu
c3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRf
VEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRD
dXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAg
ICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEo
KSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewog
ICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0
eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJv
cC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBj
YW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBh
cmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2Ig
YW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3Zl
cmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FU
eXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJl
dHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgo
TlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQg
bnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNv
dW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYw
NDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZl
NjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQot
ICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9w
cmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAg
LCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJv
dmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdD
b252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRh
YjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBl
MmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNv
bnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0
UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2Fy
ZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAg
cmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0
aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5
cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3Ry
YXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkp
KSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAg
ICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAg
ICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4
IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAy
ZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJv
YXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNv
bnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNb
aV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRl
bnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ld
KS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAg
ICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0g
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJ
KFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElV
bmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
KS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5k
ZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcy
N2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIg
QEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0
YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEg
Y29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBl
czsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAg
ICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsK
ICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBh
c3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBp
ZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRD
dXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcg
KzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3Rl
Ym9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09M
IGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJP
T0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJp
bmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlw
ZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwog
ICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
CiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAg
ICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3Rl
Ym9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6
cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAg
ICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0
MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAg
TG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRh
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVk
aW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgz
ODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAg
IH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0
aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBt
X2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAg
ICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01
MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0
ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBz
aXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAg
IGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1
cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApp
bmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3OTA1Li5jN2QxOGJlMWQ2
YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0MTEsMTMgQEAgdWludDY0X3Qg
Rm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5
dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykg
ewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+Pihl
bGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjph
c0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3
MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xh
c3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAt
MjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50
PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVj
dG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFz
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBh
bHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4
ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNs
aWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZm
MDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1
ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2Uo
cmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAg
LCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZl
QnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVp
bnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxs
ZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RT
eW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0
YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwog
ICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZ
ZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7
CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92
ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdl
JiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXpl
KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSBy
YW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0
IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9h
ZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBs
ZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExl
bmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZm
ZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAg
YXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tE
YXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBb
dGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFz
a0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2
ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6
ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIg
eyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlm
IChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQog
ICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0
ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21l
RGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBi
eXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21E
YXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAg
IHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1
dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1
dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAg
aWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0
aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpp
bmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhh
YTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsK
ICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0
YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5z
RGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdl
dCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlm
IChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpk
YXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBi
YmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFh
ZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5k
KQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9y
ZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7
IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENv
bXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0
IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAg
ICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1f
YnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIz
NCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQo
KQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFy
dGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAv
LyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFz
dFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQ
YXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBs
YXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBh
cnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRo
YXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0
YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFy
eVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5
M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVE
YXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1f
ZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxS
ZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5l
ZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEo
bV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9o
YW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNs
aWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBt
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZh
NDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAg
ICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xv
YmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFt
ZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgog
ICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9
IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRl
U3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAg
ICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwog
ICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdy
aXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0
NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVk
NWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRC
dWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
dWx0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdP
UkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBs
YXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFk
KTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhh
bmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVz
VG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxl
ICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExh
c3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4u
NjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlm
ICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
QXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcg
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFy
cmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAog
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkp
OwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmlu
Z1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIs
NyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBy
ZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNv
bnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4
IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3
YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0
QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjpl
bXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1w
dHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07
CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRh
dGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5n
KCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25l
U2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZp
bGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVT
ZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAg
ICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2Yz
Nzk2YjcxYTA0MzEzNGM2NjQ2Li5kMWE3N2I1OGI2NDRhOTBiOTA0ZWZkYzFmZWJjNmMwNjc0NGY5
MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwx
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVk
QnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIFNo
YXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7
IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3Jp
cHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgp
KSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVm
ZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0Lgor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBl
bmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXIm
LCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVk
NjQwZDA0ZDRiZDQ1Li5lNWYzNDliNDgyNzQ2ZjllZGI5YzVmNjMxYmZhZDRiNDE5OThiYTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQog
ICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisg
ICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQog
CkBAIC03OCw5ICs3OSwxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYg
KCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xv
YWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwot
ICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAg
ICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7
CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBl
bmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5m
cmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRy
dWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjIsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBt
X2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3
ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDliYjUxMDI2ZjU4M2EwOWIx
ODQ3YTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlv
bnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1
Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7
IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGlu
ZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYm
IG1fZGF0YS0+aXNOdWxsKCk7IH0KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0
ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsg
bnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRl
eHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFhZjI3
ODkuLjFjMGI1NzhhMGEwNDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NS
ZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+
LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNs
aWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAg
ICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsK
ICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5
YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0
NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsx
MjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQg
aGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZi
ZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3
IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1f
cmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9u
c2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkK
KyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwg
bV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQp
CiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEg
ZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5l
ZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29u
dGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShG
aW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0
L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5
cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5
cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhv
dXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xl
YXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwog
ICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0g
bnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxp
ZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4x
NjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAg
Y2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRl
cjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdC
dWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYz
MzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcs
NyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAog
ICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVz
dEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxD
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1
ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4
IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5
OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQs
NyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1
cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcy
Li5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRh
dGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dy
aXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1
dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9
LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1
MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uNTRkYzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5
MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNo
cm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlm
IChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVu
ZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZl
ci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEw
NSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2Fk
OjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsg
V1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0K
KyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVy
ZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZl
cmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVy
RmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0Vu
YWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAg
ICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5n
VGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAg
IGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMg
cGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQog
ICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxv
YWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgp
KSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4
aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVy
aW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVm
ZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hy
b25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBp
ZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsK
IAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFs
aWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8v
IDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNh
Y2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2Fj
aGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAg
IGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJ
WE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUg
cmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1
ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9
IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQo
KTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYK
IAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVz
dCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2
YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAg
ICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZl
cigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3Jr
TG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJU
KG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7
CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9y
aW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50
cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZl
dGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBM
T0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGlu
IHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCku
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jl
c3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBz
ZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9S
RUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBk
aXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xv
YWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1f
Y2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1d
KGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VS
Q0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDcz
MDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBk
ZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNz
IEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVj
dENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+
IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0Nh
Y2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIy
YzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAg
ICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9z
Y3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVl
OGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdl
OjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5m
b3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3Jk
LnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEp
IHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShj
b25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNv
bnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0
ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYg
c3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3Jk
ID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2Uu
Ym9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5
LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBi
YTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZi
NDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEw
MSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNv
bnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9
IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZl
cikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAK
ICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJm
ZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZmU3NTljZWRhMmQ3YmQyZWFlODc4OTk3ODNlZmYz
Mzk5MmE3M2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYs
NyArNDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkK
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JD
YWNoZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUo
Y2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8
IG1fY2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7
CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5y
ZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0
aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAg
ICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEu
CiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0
ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1
ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5k
KGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5y
ZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM4LDExICsxMzcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikKIHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
bV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNo
ZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0p
OworICAgIGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmlzTnVs
bCgpKSB7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRv
JiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUg
ZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlz
U3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
KQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsK
KyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFs
UmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAg
IH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApp
bmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIz
MDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFs
c2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgw
N2Q3NDE3MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5MWQzMWNhOWUx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVy
OjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6
ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsK
LSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAg
ICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJv
bV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdj
MzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRi
ZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQx
MzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgogICAgIFNoYXJlZEJ1
ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsg
fQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBt
X2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNv
cHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZm
ZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVm
ZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1h
a2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRh
KCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29w
eT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFl
NzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgs
MTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBk
YXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4g
Y29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0
OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBw
dWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAg
IHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3Qp
IGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgw
MWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3
MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1t
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VE
YXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNm
RGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVs
ZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRh
dGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkx
NmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+
OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9y
IHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2Un
cmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFj
ZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9
IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0
ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0
MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxh
eSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAwYzBm
MDhmYmRlNTZhOWQ0MmVjOWY5NmJhMzhmYmU1MTI1NTZlMTY0Li4yYzE2MTFjOWU3MGY4ZjlhMTM3
OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCkBAIC01NSw0OSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFVTRShDRikKLXN0YXRpYyB2b2lkIHNoYXJlYWJsZVJl
c291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7
Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8g
QmFsYW5jZWQgYnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigp
Ci19Ci0gICAgCi1zdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFi
bGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvdXJjZSkKLXsKLSAg
ICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwKLSAgICAgICAgcmVzb3VyY2UsCi0g
ICAgICAgIE5VTEwsIC8vIHJldGFpbgotICAgICAgICBOVUxMLCAvLyByZWxlYXNlCi0gICAgICAg
IE5VTEwsIC8vIGNvcHlEZXNjcmlwdGlvbgotICAgICAgICBOVUxMLCAvLyBhbGxvY2F0ZQotICAg
ICAgICBOVUxMLCAvLyByZWFsbG9jYXRlCi0gICAgICAgIHNoYXJlYWJsZVJlc291cmNlRGVhbGxv
Y2F0ZSwKLSAgICAgICAgTlVMTCwgLy8gcHJlZmVycmVkU2l6ZQotICAgIH07Ci0KLSAgICByZXR1
cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4
dCkpOwotfQotI2VuZGlmCi0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQotewotICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJl
ZiB3aGVuIFNoYXJlZEJ1ZmZlciBpcyBkZWFsbG9jYXRlZC4KLQotI2lmIFVTRShDRikKLSAgICBh
dXRvIGRlYWxsb2NhdG9yID0gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlz
KTsKLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgp
KSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y2ZEYXRhLmdldCgpKTsKLSNlbGlmIFVTRShHTElCKQotICAgIEdSZWZQdHI8R0J5dGVzPiBieXRl
cyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwg
W10odm9pZCogZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+
KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIHRoaXMpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYnl0ZXMuZ2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgorICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICAgICAgW3NlbGYgPSBS
ZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKKyAgICAgICAgW3NlbGYg
PSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQorICAgIH0pOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291
cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKQEAgLTEzOCw5ICsxMDQsNyBA
QCBTaGFyZWFibGVSZXNvdXJjZTo6U2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4m
JiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkCiB7CiB9CiAKLVNoYXJlYWJsZVJlc291cmNlOjp+U2hh
cmVhYmxlUmVzb3VyY2UoKQotewotfQorU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNv
dXJjZSgpID0gZGVmYXVsdDsKIAogYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlSGFuZGxl
KEhhbmRsZSYgaGFuZGxlKQogewpAQCAtMTYyLDcgKzEyNiw3IEBAIHVuc2lnbmVkIFNoYXJlYWJs
ZVJlc291cmNlOjpzaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaXplOwogfQotICAgIAor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3YjQ3
ZjVkNjg1MWQ5ZGUzMmQxYzNhNTQ3MDUxNjBhYTRmN2M2Y2I3Li5hMGVkMDg1NzM0Yjc3NTUxNGMx
MTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmgKQEAgLTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi1jbGFzcyBTaGFy
ZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7Citj
bGFzcyBTaGFyZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWFibGVSZXNvdXJjZT4gewogcHVibGljOgogCiAgICAgY2xhc3MgSGFuZGxlIHsKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRl
Y29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpA
QCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxl
UmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBz
aXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZm
ZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsK
IAotICAgIHVuc2lnbmVkIG1fb2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fc2l6ZTsgICAgCisgICAg
Y29uc3QgdW5zaWduZWQgbV9vZmZzZXQ7CisgICAgY29uc3QgdW5zaWduZWQgbV9zaXplOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjMGI2ZWYzZmEzYTJlMTIwNGM2NzdlY2Y4NmFlY2Jk
MTliYjY0ZDdiLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5
MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlz
TnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZl
clNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlwY0hhbmRsZSkpCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFy
ZQogICAgIGlmIChzaGFyZWRNZW1vcnlCdWZmZXItPnNpemUoKSA8IGJ1ZmZlclNpemUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGJ1
ZmZlclNpemUpOworICAgIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVk
QnVmZmVyKGJ1ZmZlclNpemUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0
YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5z
aXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVU
eXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQog
ewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VS
VChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsg
aSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCBy
ZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3Bv
bnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsm
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihy
ZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZv
cm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJl
ZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVh
c2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRh
Y2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1p
bWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUo
bWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMK
IAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIs
IGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAz
MSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAg
IGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9w
dGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzVi
Ni4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBA
QCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3Mg
Q2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247
CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmlu
ZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1
N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpv
cHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2Vs
ZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAg
ICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1
ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRl
eCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5
Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9u
dD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRp
b25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0
YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgx
MTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3Zv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBh
ZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBk
NmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFw
cGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgs
OCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhh
c0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFn
ZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0Vu
Y2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5
cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJp
bmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRl
eCAzYzc5YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQx
NzA2ZjhjNzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsx
NDAsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rp
b24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVu
Y3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhf
dD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMw
NzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1w
dHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdl
bmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3Jh
cHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAog
ICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6
ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0
cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IGJhZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNl
NjliMmM2YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9p
ZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxp
Z2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRl
eHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGln
aGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hs
aWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0
OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3Vw
OnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxp
Z2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olll
cyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBw
ID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmlu
ZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdi
NTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
dm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2Vs
ZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29u
c3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xl
bmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAg
ICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3Vz
dG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3Nl
bGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5
NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEy
MzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0
aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAg
W3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5MTViN2IzYjU4MjAyM2ViNTFlYzcuLmJiZWY2
NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4ZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBA
IC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRC
dWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICAgICAgYXV0byBz
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRN
ZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHNp
emVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc2hhcmVk
TWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKICAg
ICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKICAg
ICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9hcmQoY29ubmVjdGlvbiwgcGFzdGVib2Fy
ZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5ld0NoYW5nZUNvdW50KTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdm
NTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3
Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlw
ZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5z
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJp
bmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAg
IFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAg
IH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0
RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVV
UkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0
byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBu
c0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAx
LDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQo
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21p
c2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBs
YXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdl
IE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAt
NDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZp
bGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRh
ID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRh
ID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVy
UmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChX
ZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAg
IE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5
cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAg
bV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5h
bWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUxNjY2
NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJl
Y3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0
OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkzNThlMDNiMDQwMDMyZjk2NzcuLjg4ODI3ZWIy
OTEyYTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7
CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsK
ICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2
ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi41ODU0N2Q4NDg4MWRjODMwZjY5Njlh
MGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxT
Y2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAog
ICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJh
bWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5m
byksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0Nv
bXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBA
IC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2Vu
dCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEp
Ci0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAg
ICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBF
eGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdl
YlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAt
PiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChp
c1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1f
c3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3lu
Y0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6
ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxl
dGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAg
ICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5k
bGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4
NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uYjA3YzE0OWZkNGRhMTVjZWVj
NGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5m
bzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3
ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5
bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3lu
Y1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7
CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fc3luY0RhdGE7
CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFj
ayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2ZjZjOGUy
YmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg3LDcg
KzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlk
ZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5mb3Jt
YXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZv
cm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4uNjZhYzRj
YWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBA
IHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJ
bWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGlt
YWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBo
b3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IGE4ZTkwZTQyOWE2ZWNlMTM2ODdiOWY5MWJjNzM4MmNhN2NiMGZmM2QuLjY1ZTVkODJh
MzU3YmNiYWFmOTUwOTAzODVkMmFlZGEyZWRmMzQyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzgy
MSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFj
dGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0b21Q
YXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNd
OwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkg
ewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkg
PT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAg
ICAgICAgIH0KQEAgLTY1OTQsNyArNjU5NCw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJ
dGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAg
ICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQog
ICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTY1LDcgKzc1NjUsNyBAQCAtICh2b2lkKWFj
dGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNo
YXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hh
cmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAi
RGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRo
IG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFt
ZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9u
KGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlv
bihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVj
dDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10g
fSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0Njc5ZDdiMDk4MWFhN2QzZmNkOWJkZTkw
ZWQ2ZmYyYWMyMzJlZTE1Li5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4MzEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU4OCw3ICs1
ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZQogICAgIGlmICghc2hhcmVkTWVtb3J5QnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRh
dGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdl
SGFuZGxlLmRhdGFTaXplKTsKICAgICBwYWdlQ2xpZW50KCkuc2F2ZUltYWdlVG9MaWJyYXJ5KFdU
Rk1vdmUoYnVmZmVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCmluZGV4IDZkMzMzODY5ZTRlMDAxMmQyN2QzZmU4NWQ4NWU1M2E0ZWQ5
Njk2MGEuLmE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcg
KzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjQwLDcgKzI0MCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNI
YW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBp
ZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hh
cmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIHJldHVy
biBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNp
emUpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCkBAIC0yNzUsMTUgKzI3NSwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgIGF1dG8gc2hhcmVkTWVtb3J5SW1hZ2UgPSBTaGFyZWRN
ZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJlZEJ1
ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9y
eUltYWdlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFTaXpl
KSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKLQogICAgIGlmICgh
YXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1v
cnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9y
eUFyY2hpdmUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFyY2hpdmVCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVt
b3J5QXJjaGl2ZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihhcmNoaXZlSGFuZGxlLmRh
dGFTaXplKSk7CisgICAgICAgIGFyY2hpdmVCdWZmZXIgPSBzaGFyZWRNZW1vcnlBcmNoaXZlLT5j
cmVhdGVTaGFyZWRCdWZmZXIoYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgfQogICAgIHBh
Z2VDbGllbnQoKS5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgV1RGTW92
ZShpbWFnZUJ1ZmZlciksIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZp
bGVuYW1lKGZpbGVuYW1lKSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBXVEZN
b3ZlKGFyY2hpdmVCdWZmZXIpLCBvcmlnaW5JZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4
ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDlj
MWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBh
Z2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2Vi
UGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVS
YW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjgu
LmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0
aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRp
bmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQo
KSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIg
d2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShy
YW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClf
c2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRl
PillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xs
ZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihX
ZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNT
dHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRU
eXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5k
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFl
YWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVs
bHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAg
ICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAg
Zm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkg
ewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5i
eXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMx
NTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1l
KSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3Ry
aW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVi
b2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
KSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQg
ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3
b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4
ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkz
YmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwg
Y29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0
aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7
CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYg
KHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBk
YXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hh
ciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hh
cmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZm
ZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1
b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIu
cHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEko
JnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBl
LmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJs
ZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFj
L0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRl
eCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1
MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJj
ZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1v
ZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1f
ZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3
YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3YTI5
YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
Mjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNl
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAg
ICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNo
YXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJs
ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNi
OGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29y
ayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUg
cmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJ
bnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5k
ZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3Ro
XSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBl
bmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIz
MWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODks
NiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1
Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQ
YWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVy
cykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFu
dWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAg
ICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBA
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1Jl
Y2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAg
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0g
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzky
Nyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxT
dHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZp
bmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAg
aWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQor
ICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdp
blZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVS
ZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRh
dGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJl
YW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFt
RGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIu
Z2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdt
ZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0
ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWVi
MmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBA
IC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1f
bWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9t
YW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQg
dG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFp
bnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1Nu
YXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4
ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi40ZDI2MWQ4MmNlY2RlMDlhYWE0
NWVkY2E0ZTA1NDE5ZjU3MTM0MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRh
ID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRl
cj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRC
dWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1f
cmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVz
cG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZp
bmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgfSwgW3RoaXNdKFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAg
ICBkaWRSZWNlaXZlRGF0YShidWZmZXIuZ2V0KCkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAg
IGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlz
XShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLjEx
YmJhZGI0MTI4ZGYxYzhiOTJkZTQ0M2E5ZDQ2YWNhMDMzZmUwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0
Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9w
dGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5n
Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8
V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1f
cmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU2hhcmVkQnVm
ZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJl
c291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNoIHsgZmFs
c2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4
NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNm
ODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAg
ICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1
YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikg
ZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBl
MDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkx
ZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyAr
MTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1
bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVu
Y2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIs
IG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEg
PyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBt
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAg
ICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRp
bmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0
ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA1ZDA1YzBlYWI3NmI2MmI0ZjgzNmM4NTgyMjFmZWE0
NDcyZTA1NTZlLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpS
ZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBh
c3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJp
ZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2Vz
cyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBpcGNIYW5kbGU7CkBAIC0xNDUsNyArMTQ1LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYKICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUu
ZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZm
ZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCkBAIC0zMjIsNyArMzI0LDcgQEAgVmVjdG9yPFN0
cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRh
dGE7CkBAIC00MDQsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1
cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBh
c3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJl
cGx5KGlwY0hhbmRsZSksIDApOwpAQCAtNDEyLDcgKzQxNCw5IEBAIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5
QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVt
b3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVt
b3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAog
VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
aW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2ZmMzU1ODA4
ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4
dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEw
Li43NmM2MDI4ODgxMzUyMjA3MWEyMjc2OWQ3M2YyZDNlODA4YmFjM2I1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBt
X3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9idWZmZXIgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCkBAIC02OSwxMyArNjksMTIgQEAgdm9p
ZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdl
YlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZl
ci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAg
ICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXgg
MDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uNzZmZmExMTEzOTJhOWQz
YjRmODViNTk4Y2Q2YWJjY2U1MTg4ZjA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcg
bV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1f
YnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4u
NGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVs
ZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5z
VVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZl
ciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdl
LT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5z
aXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29w
eUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBz
aXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJj
aGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRh
LmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0
byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFy
Y2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZm
ZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3
YmY1ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcg
KzM0Myw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNl
RGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNv
ZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFt
ZTo6Y29udGVudHNBc1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxY2E5YzIzZDY3N2YwM2EyOWM2MGY1YjJhOGJhYzY4
MGQ2YjVjODQzLi4yYjc0Zjc1MTU2YWJmNmMwMTEwODAwMTAxZWM3YTVmNzA4ZDBiZTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzczNyw3
ICs3NzM3LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRv
SW5kZXgoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRN
ZW1vcnkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBkb2N1bWVudC0+YXBwSGln
aGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRh
KCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6
OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdo
bGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KHNoYXJlZE1lbW9y
eS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBT
Y3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKICAgICAgICAg
aSsrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRj
YTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
QEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFt
ZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3Io
KS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1v
cnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4
NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBA
IC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNW
aWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNp
ZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpA
QCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNW
aWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QK
IHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJO
QUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIx
ZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpA
QCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTCly
YXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3
Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAt
ODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwog
ICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldElu
c2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9N
UGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikg
ZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9y
R2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYw
MzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVm
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4K
IH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJL
aXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3
MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZh
YTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
c3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51
bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBh
dGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZk
NDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRU
eXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsK
IH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
IHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVm
ZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcx
MTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBA
IC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0
YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJE
b2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRl
eCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFh
MGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcg
KzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1
bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsg
ICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtf
cHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgp
OworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJj
ZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEg
PyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4
MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQz
MTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
TWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAg
ICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+
ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBh
bGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBs
ZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9i
amVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdp
dGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5z
aXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3Rl
ZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0
YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIx
ICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNv
ZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBh
dXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAg
TlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBO
U1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNv
ZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVy
bCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5
cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwog
ICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3Bv
bnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAg
ICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRh
S2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVS
TEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNv
dXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5n
IGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3
IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+
ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRl
LT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0g
KE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGlu
MUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRl
LT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0
cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNv
cmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXgg
MzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0
YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0o
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBA
IE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0
cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVtb3J5U3Ry
ZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVh
bS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYw
YTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0g
ZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVt
b3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24K
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0lu
XyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAg
Kzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Q2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVt
b3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0
cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1l
bW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1
OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2
YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAg
LTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0
XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRC
eXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRC
eXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAog
ICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSku
Y29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4
ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUw
YTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYx
LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2
N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTVi
MWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dl
cmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdl
ZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdj
N2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJE
YXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBp
ZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJu
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29w
eVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRp
b24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQz
NWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFh
NTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291
cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2Uq
IFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5
Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3Mg
V2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMg
V2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAv
LyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjNk
ZGQ4MDdkYzFiZDM5NzZlNjg4MzZmOTNjNjQzOTBiNTJjZWU0Yy4uNmNjZjI5N2VkN2FlYjQxZWJj
MTk3MDI3Zjk4YzI4NDRkOThmZTZjOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29u
dGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUz
MzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKwogMjAyMS0xMS0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIHNlbGVj
dGlvbiBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYy
YjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLjYxYTExZmY1YmY1NWFhMmQ5OGU1YmRh
Yjk3ZGJiM2Y5ZDYxYWE3YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00
Myw1MiArNDMsNDUgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1
ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNT
RVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0g
c3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShT
dHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1w
dHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1Rf
VFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
b3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dU
KGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0g
Y29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBj
b3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUo
KSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBFWFBFQ1RfVFJVRSgh
bWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEi
LCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVm
ZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0
YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09
IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNU
X1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05Niwx
MCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
KQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10g
PSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERh
dGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAg
YnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5
ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29u
Y2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5h
dGlvbikpKTsKQEAgLTExMSwxMCArMTA0LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0
cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwg
J2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVj
dG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZm
ZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9y
MSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMg
cHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2lu
IGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVp
cy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3RE
YXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAg
ICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0
YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAg
QVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9F
UShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNs
b25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAg
Y2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICog
NSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNp
emUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7
CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9F
USgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsK
KyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxl
bmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50
YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAv
LyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWls
ZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEu
aXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBi
dWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05F
KGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1
ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhl
aXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3Ry
bGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQo
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCAr
MjA0LDcwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywg
J2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9
OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAn
ZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2sn
LCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7
Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGts
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZm
ZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Cisg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8g
Z2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3Vv
dXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2Qi
KTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIo
aC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBp
amtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUo
KSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwg
ImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCks
ICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJn
aGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAg
ICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChW
ZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVm
ZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAg
ICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1h
a2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZl
cjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1
aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwg
eydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgp
KTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
e3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIo
V1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsg
J2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSku
Z2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2Mn
IH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAn
ZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0g
fSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIo
eyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSku
Z2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
dDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAg
U3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVz
dWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQo
KTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50
b0hleFN0cmluZygpLCAiIik7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBi
MjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZk
N2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMg
dm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBO
U0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFy
cmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWws
IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNo
YXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5i
eXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChA
WyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Indv
cmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0
YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxk
ZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9E
YXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENG
RGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRl
bXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAg
ICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2Vn
bWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKilo
ZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAg
ICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxl
bmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3
b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEu
bGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRD
b3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAg
ICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRh
OmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0
aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZl
ci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVy
LnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVD
VF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBl
Y3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNy
ZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5
dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0Ai
ZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBF
WFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445267</attachid>
            <date>2021-11-29 04:58:21 -0800</date>
            <delta_ts>2021-11-30 13:39:37 -0800</delta_ts>
            <desc>SharedBufferBuilder for EWS</desc>
            <filename>bug-233442-20211129235819.patch</filename>
            <type>text/plain</type>
            <size>499272</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2YjlmZjNlYmEyYjYw
MmE3MzVjYzQ5OGY1NjBjNzk4NjgxOTBhZC4uMGY4YTE4Zjc4OWI3ZjU4MjNhNDQyODMwYWM1MGVj
MzE0ZGJkYjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxMSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBi
ZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZl
cmVkRGF0YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICogbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVk
QnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051
bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3
YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWlu
ZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAg
ICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVl
IHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisg
ICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVy
IHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hh
cmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5
cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQg
dG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJl
ZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJl
CisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2Vk
OyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4
cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBU
aGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZl
cnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAg
ICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90
ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1p
dCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBk
ZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBj
b3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUK
KyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNv
bnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJl
ZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBo
YXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFs
IGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQu
CisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ug
b2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVu
ZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0Miwg
YSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3Jl
YXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBi
eSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJ
REJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2Nl
bmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZv
ckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZG
b3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0
aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxp
emVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0
YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
VUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdS
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6
Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5k
RmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxl
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJs
ZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNj
cmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJv
YXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEtMjYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFk
ZCBpbXBsZW1lbnRhdGlvbiBvZiBzZWxlY3Rpb24gaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0
aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1NzQ4ZGJlMjllYWJjYmVjNDJiMjQ5ZjhjNjVjZTI2NDg3M2I2
NzUxLi5mZDQ5MmZjZDZhZmVjNDM1YTg1Y2FlY2E2YmYxZjdiOGE5MTQ4ZmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdp
blZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRv
U3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVx
dWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToK
KyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1h
Z2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0
KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1v
cnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSB3
cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAgICAgICAgU2hh
cmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAgTm8gY2hhbmdl
IGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5IHNpemUgcmVk
dWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdoZW4gbWFwcGlu
ZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEgY291cGxlIG9m
IHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFj
dG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBjb2RlIGFuZCB1
c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisKKzIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBh
bGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFy
ZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1l
bW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxl
IGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAg
ICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1v
cnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtlIFNoYXJlYWJsZVJlc291cmNl
IHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBTaGFyZWFibGVSZXNvdXJjZSBv
bmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVkTWVtb3J5IG9iamVjdAorICAg
ICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcuIERlbGV0aW5nIHRoZSBvYmpl
Y3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgc2FmZS4KKyAgICAgICAgTWFr
ZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIp
OiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29k
ZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQuCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHku
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCiAy
MDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zIHNob3VsZCBoYXZlIHNlcGFyYXRl
IGNsYXNzIGRlZmluaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAxZDUw
MWFiMzgwMTdmMWQ4ZjllODFjOWJlZmRjMmQ3ZjZmMTZmZS4uZjM1MjlkZWI3MmYxZWY1ZGQ3ZTE4
NDg5YjA0YWJkYWU0ZTQzNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29k
ZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0yNCAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxl
IHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIxMzk2
OTY2YmI2MGFjLi41Mjk0OTMxOTgyOGU0ZTE1NjM4MmI5MzdhZjliYzJjYTVlYmU0MWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTEtMjUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBj
b250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFu
dGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAg
ICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVh
bTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAq
IFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJj
ZS5oOgorCiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZk
YTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRi
MWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJ
Zk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAg
ICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwot
ICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3Ry
aW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0K
aW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFl
NjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21p
bWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdl
UE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBC
bG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMx
Y2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZl
OGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAi
aW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYg
KGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0
Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRv
cHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7
CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0
MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
b21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2
NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3Jt
RGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewog
ICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpu
dWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjg2
NzUwZGZlZWZlYzU1NWNhZjlhMWJiZjg1MTA2MGE1OWFmZjI4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBET01D
YWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQ
b3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVl
c3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRs
ZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3Bv
bnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0g
V1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OCwxNSArMjk4LDE1IEBAIHZvaWQgRE9N
Q2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVz
cG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRp
b24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNl
Qm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcsNyArMzE3LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAt
Mzc0LDcgKzM3NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9u
c2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVm
ID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2
ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMt
PnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5
KCkpOwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRX
aXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIu
LmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNl
PiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNw
b25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYu
LjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMx
LDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9k
eSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8
Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZv
cm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5
KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBh
cy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9
KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25z
dCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwg
W10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRy
X3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4u
Y2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBF
eGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBX
RUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7
CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVl
YWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIw
NDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zv
cm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyAr
MTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAg
ICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJh
eSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBr
ZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
ICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAh
PSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNt
cChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJv
b2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6
VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBw
YWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUo
KSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBh
aXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi5mMTJj
ODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRj
aEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYg
KGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewot
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25l
ci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5z
IGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIs
NyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAog
ICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0
YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0
YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6
VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25z
dW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
ICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlz
QmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRj
aEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAo
aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
ICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9T
dHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJs
U2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFk
MWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3
ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0
YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEg
dGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4NjUwODU4
NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMzc5OThlZjk2OWEyYTU5M2NmYjk1ZmZhMDAyN2MzNzZjNzhk
ZWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
ICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0y
NjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJl
YW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29s
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTog
ewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZv
cm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisg
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICsz
MjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5k
KGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit7
CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRh
KSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0
YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIHJldHVybiBtX2J1ZmZl
ci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0NSw3IEBAIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxw
dHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZm
ZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsK
IH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUzLDcgQEAgUmVmPEJsb2I+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0
LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVu
dFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVs
bHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVy
biBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7Cisg
ICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3RE
YXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpAQCAtMzYyLDggKzM2Miw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1f
YnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgz
LDEwICszODMsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNl
KCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNl
PiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAo
bV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAg
IGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0
M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZk
OGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEo
KSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQor
ICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdl
dCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToK
IAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBS
ZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQ
dHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2
NDYwMDQ2ZTQ2YmQ1MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFiN2MxZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0
MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9y
bURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4uYTE2MDc0
N2RlMGNlYWNlZWNjNzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAK
LSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAg
dm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFk
ZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEz
N2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
aGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhp
Z2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4u
ODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29k
ZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAg
ICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMx
MmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
S2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0
byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEz
IEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9u
KTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQs
IElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3
ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAx
MTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
SURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRj
MDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBv
YmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxp
dGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7Cisg
ICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0
ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcs
NyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyAr
MTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5k
ZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFs
c2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3Jk
IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RT
dG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBp
biB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBk
YXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBp
ZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBp
biBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBv
YmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9k
ZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcg
KzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVj
dCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwog
ICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93
ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6
bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAg
ICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXko
aW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgp
ICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpL
ZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwx
NCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1
dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmlt
dW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBj
b3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2Uu
dXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThj
ZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJD
dXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1
cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1f
Y3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRC
aW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3Vy
cmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkp
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmNwcAppbmRleCBhZmVmNDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJiOTY3YWEzLi4wMDI3
NTcwODAyYjE0YjA5ZDFhYTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsK
IAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1Jhdywg
bWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3
LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1f
aXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgw
M2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2Fn
ZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5n
ZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2IyZTJmY2EwZDM3YWE1
Mzk5OWZhNjI4NGE0NTlhNGU0NzMxYWMuLjAyOGE5MTk4NTgxN2ZkMzY5ZTcwZjRjYWFiOTRlMWEx
NGY1ZDBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291
cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQo
KTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291
cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMp
OwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikK
QEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAg
ICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRl
UmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRy
dWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCku
Z2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVs
ID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCBy
ZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVz
b3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAzNjM5
M2EzYjZmOTI3ZmYwNGZiYzI1ZWQ1N2FkZGFmYzM5MjllYWYzLi45YzQ3MjZmMjY0MmRmMDFkMzNh
YmNkZjRlMzFlYzgyZjRjOWE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8
TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21p
c2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGEx
OWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMz
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0x
MDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZp
bGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6
Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwog
Ci0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5k
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVI
YW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5
dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2Qy
MjRhMWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZh
aWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9
LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFs
aXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkx
OGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBA
IC01MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYg
KCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRh
aW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFp
bnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJ
ID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWlu
c09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1f
c2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAg
ICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAg
ICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICgh
bV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5n
ID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVm
ZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZm
ZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRI
YXNoIHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4
Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJh
N2ZkYTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0x
NjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRv
d25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZv
bnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1f
Z2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpA
QCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2Ut
PmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1f
aW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEo
YnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9
IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAg
ICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4
IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1
OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3Ry
dWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlh
bnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkz
LDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250
U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxz
byBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJh
YTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRj
Njg5YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0
MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVu
dEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3Rl
Ym9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywg
YWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZl
MGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1
MjBlNjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkg
KzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNs
YXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRl
QnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRD
b21wb3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVw
bGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBi
b29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyAr
NTc0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50
SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAt
NjE4LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0
KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYp
OwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVk
U3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYu
LjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIg
KzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVj
NDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAt
NzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRl
cy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
TlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJp
bmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVk
RGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5n
OllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRN
TEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRN
TEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRv
cjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBl
bGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXRE
YXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAg
aWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdl
KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQ
Ym9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0
ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAg
ICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hp
dmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYg
KCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhh
dCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBi
dXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAx
LDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQog
ICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxl
bmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4u
M2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcg
QEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRh
dGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBl
ID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVy
IHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAg
ICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1p
bWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9
IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAg
ICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZp
bGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAg
ICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVy
bCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBl
bGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzku
LmFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBA
IC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0
YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAg
IFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVt
ZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRv
JiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0
YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291
cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVk
QXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJl
c291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7
CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpA
QCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7Cisg
ICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJl
c291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAs
NyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1l
bnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+
bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVu
dEluc2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXIm
IGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6
OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRh
KCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFz
ZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9t
VVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBh
cmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1l
bnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNv
TGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5T
aG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5p
dGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9u
RG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVV
UkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBz
dWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAg
ICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVU
Rjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZy
YW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVm
KCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFy
Y2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlz
dFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2
MTcsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0p
OworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAo
IWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQx
OWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBj
NzIyNzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAg
ICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYg
aW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlm
ICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFS
ZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhN
RTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFi
bHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhp
cyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUg
bWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNo
IGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNi
NzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThh
NWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpw
YXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5k
RW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJl
c3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJl
c3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3Qg
U2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRo
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBs
YXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVy
OwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29s
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0g
ICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1w
bGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAg
c3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigp
OwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJl
IG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8g
dGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwg
dGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLjhh
NjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVkMDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcs
NyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
ID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2Fk
ZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhh
c0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3Vs
dCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRy
OworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0Nv
bnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRl
bnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisK
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkg
OiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAg
ICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZm
ZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9k
ZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2Nv
bnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAg
ICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRl
bnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRm
YjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5ZmU5
N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNw
b25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAg
ICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9u
c2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5
LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsK
ICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1
ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZl
cjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0
Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApA
QCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1l
VHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNw
b25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJl
c3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41
Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC0xMDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNl
Q29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRh
dGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJu
IGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCBy
ZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRm
MjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50Rmls
dGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigp
KQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUw
N2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZh
NjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBj
cmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJp
dHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwg
eyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgw
ZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNo
aXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNv
dXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7Cisg
ICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7
CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWlu
UmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1
Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAg
bV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyAr
MjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFy
dENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1f
Y29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
ID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRh
KCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRj
YmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFz
cyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZv
cm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3Vy
Y2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFC
TEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0
cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZk
MjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYz
NTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1
cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTog
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9y
IHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRp
ZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCAzYTA2NGJjNzIzMWEzNjAwY2M4M2RjNThhOWEyZTdmZjJlZTk2YjM1Li40ODBm
MjJhYmUzNTVkMTA5YzIwODYyZWZhZTlkYmQ1ZDA4NTdjOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAg
IHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNw
YWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2
NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBG
cmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBk
YXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZl
cnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9j
dW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJl
cigpKTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAg
ICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxv
YWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAg
ICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgq
dGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0
aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwot
ICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9u
c2UsCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2
ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBi
ZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAt
NTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwog
I2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQs
IGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3Qg
U3lzdGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1l
TG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3
NmFjMjM1Li4xNGU1ZmQxZDBkMWIyMDUzMzk2OGE0MDQ2YTE0NDQ0MzE2MDkxOGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVG
SU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNv
dXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVu
dExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwg
bV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERl
ZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRl
ZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3
ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAg
IG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAg
ICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJp
bmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1
YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyMyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVS
ZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNv
dXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVy
KQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitTaGFyZWRC
dWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwog
fQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAg
LTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIs
IHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0
IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lh
bnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNl
bmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRp
Y19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjQwNjUwMWVlNTMxNWE4
Njg2MTFlZWNlMjZjMTk0Njk1NWUxZTc5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBG
cmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNs
YXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+
LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAK
LSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2VEYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2
NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291
cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJj
ZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2Vi
Nzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1
ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRC
dWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsg
fQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9u
c2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAg
IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0
OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1
LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
TWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBw
YXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVz
b3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFu
aWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21h
bmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRp
bWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlz
IHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNo
ZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxk
IG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVl
Ni4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0
ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNv
dXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNv
cHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgp
IG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBp
ZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRh
dGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNo
ZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1h
bCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhl
ciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4
eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0
d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwg
dGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFs
bGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jgog
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAo
Z2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7
CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAg
ICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25j
ZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4
NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQy
LDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpA
QCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVM
b2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7
Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hl
SW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2Ux
NzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3
NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uo
VVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
LmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkp
OworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2
NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChk
YXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMz
YWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5iZGEyYTJjNzY2OWUxOGM1MjQ3
YWM4MGExMmYxN2JkMjZiMzQ4ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4NCw3ICs3
ODQsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGlmICghZGF0YVN0YXRlbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAg
IGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQt
PmJpbmRUZXh0KDIsIEZpbGVTeXN0ZW06OnBhdGhGaWxlTmFtZShyZXNvdXJjZS0+cGF0aCgpKSk7
CkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0
YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+Ymlu
ZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5i
aW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAg
IH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAg
LTg3OCw3ICs4NzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2Ug
dGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3Vu
dAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsK
IAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMTEzLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAg
IGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAg
ICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVu
dC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxv
Yig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5j
b2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4
IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4
ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3Bl
cnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1w
dHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1
dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0
eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJM
IGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZv
ciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAg
aWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3Bv
bnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNl
KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRh
dGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJl
c3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25L
ZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlE
KHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAg
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9u
c2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlk
IHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJv
cGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNp
b24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFy
Y2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAg
ICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAg
IENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
Q0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5
TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYg
TkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAg
ICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25h
cnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3Rh
dGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBt
YWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpA
QCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRv
IHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAg
ICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFj
dChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2
ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENG
RGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3Vi
ZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRk
U3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYx
LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNw
b25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3Bv
bnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1Pgog
ICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihG
cmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAg
IHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRv
Y3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90
aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBv
d24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJu
b1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBo
ZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXgg
ZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRh
NmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTkzLDkgKzE5MywxMCBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29udGlndW91cygp
OwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9
IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1F
SGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVE
ZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0g
cXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRl
bnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRN
TCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250
ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0
byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBi
ZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNw
ZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkg
c2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5k
ZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZh
MmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIs
MTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFl
NjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2
N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVj
a0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24n
dCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNh
biB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBl
bmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5
KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRh
IHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQg
ZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0
cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0
byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMy
YTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdh
NDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRh
LmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcg
Q2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJu
IHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVk
KCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAg
LTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdl
dCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVk
Rm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07Cisg
ICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0
cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRG
b250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVu
dCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRj
NTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFh
YjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9h
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
Zyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZp
cnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZy
b21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDli
ZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3
MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdl
KCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVy
VXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRh
QmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8
fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJl
c291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBM
QVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkp
OwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNl
bGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQg
dG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODVi
YTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFn
ZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNl
ZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1f
ZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAg
IGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEu
c2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewot
ICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0
YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5z
aXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAg
ICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGlu
Y3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09L
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggOGI4M2U1MzMxOTBhNzc2YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRjN2Q3
NTRlMTliNzU1YTljYWM1NzRiZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZl
cikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1f
ZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250
ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4
MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlm
CiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhh
c2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQg
YnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2Fj
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdm
NDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBA
QCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVu
dCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9
IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwo
KSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5z
ZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1
NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAt
ODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAg
ICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkx
LDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZG
b250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRG
b250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3
ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01
MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6
ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAg
ICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVt
ZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRp
bmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5l
ZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5z
aWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMy
MDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
LSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmlu
ZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0
OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBA
QCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5k
YXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2Zl
YmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2Ni
NWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRC
dWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRT
aGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
KTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQg
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2Rm
NTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
VGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVz
b3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0
YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1
ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVk
UmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRv
cjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0g
X0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVC
YWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25z
ZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNh
Y2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVz
cG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lk
IERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXIm
IGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewog
ICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9y
UmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3Vy
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2
NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcg
QEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAg
ICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3Vy
Y2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4
IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZkNTM3YmZkNjJm
ZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3Jp
Z2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJl
c3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcs
NyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBj
b252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252
ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxE
YXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCku
Z2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigp
ID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVn
YWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2Fj
eVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNy
ZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2Fk
ZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdV
VEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0K
KyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFi
MTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90
OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1MzVjNjMyZDlkMmRhYzkxM2VmLi41
ODcxYThlYTZhMzExOThjOTBhNGY0OTQxYmMyM2RlOTg0OTViMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hl
ZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hl
cyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxv
YWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4K
ICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hl
ZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1
MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2Rlcygq
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNs
dWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdn
ZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsK
IAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3
aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5k
IGFkZCBvbmUuCiAgICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+
Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFs
aWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7
CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZElt
YWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGlt
YWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5t
YWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVk
ZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4
MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAg
ICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAg
ICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2
NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1
Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0
YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2
ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRl
cihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRl
cjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFS
ZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisK
ICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFy
cmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5m
aWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEo
KSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1Jl
YWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nh
c3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdG
aWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBz
dGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThm
NDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5j
b2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0o
Y29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2
MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhX
TkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1l
bnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29u
dGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
REZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBk
YXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2Fy
ZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAg
UGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVz
b3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBz
dWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2Nv
YVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29j
b2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJp
bmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hl
Y2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4
IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhm
OTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9y
PEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZl
cnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwg
bV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwog
ICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4g
ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5Mzhh
M2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2Nk
ODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2
b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21E
YXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9t
U2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2Rl
cihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlk
NjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMx
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1
YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwg
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2Vs
ZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4
ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2
NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01
MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJp
bmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owog
ICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0
cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5k
ZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0
NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bh
c3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3Mg
U2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1h
Z2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBz
dHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMg
PSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
VVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4
NWM0ZTkxNDc2OC4uNGJlYTRmMThlNGM3OWRlYjU3NDRmMjgwZTlmOGY5YmMxODNjNmYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTY1LDcg
KzY1LDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vy
cm9yKCkgY29uc3QKIAogY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2
aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAg
cmV0dXJuICptX3ByZXZpZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVy
Ojp1cGRhdGVNYWluUmVzb3VyY2UoKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQog
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAog
ICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQot
ICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3By
ZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNl
aXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJh
MzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIuLjA2Yjc2ZjU5ODUxODJiOTcz
ZTYzZjM5NTkzOTRlYTlkMzQ5YWI3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAg
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9w
cmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3
RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNlUmVz
cG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBk
YXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVu
dEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5h
MWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8g
ewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4g
YWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRk
aXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQz
OWM1NWI5YWZkMzkwMDM1MzUzODVkLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQw
NTg3ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUw
LDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQog
ewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
ZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3Zp
ZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEg
QEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAg
ICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVy
KQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDog
bV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAs
IERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5k
aWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQot
ewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7
Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGlu
Z1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwot
ICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmls
ZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNv
bWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYg
c2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERh
dGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNl
Z21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0
dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25l
U2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBG
SVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5v
IGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRp
bmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3Jp
dGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21l
bnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAg
ICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYg
eyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVk
QnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21l
bnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmlu
ZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1f
c2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQot
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9z
ZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAg
ICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiAr
MTU2LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVy
OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wg
U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRp
Z3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAx
KTsKQEAgLTIwMiwxMCArMTkyLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6
OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAg
ICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7
CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywyMyAr
MjAyLDI2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdt
ZW50KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSAr
PSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXpl
ID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSAr
PSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKK3Zv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
K3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0g
MDsKQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9z
ZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5z
ZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkg
fSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIm
JiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkp
IGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTUsOCArMzQy
LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09u
ZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBp
dCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUo
KSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3Miw3ICszNTgsNTcgQEAgYm9v
bCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAv
LyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNl
Z21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGln
dW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHko
KSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250
aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9
KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0
YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91
cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZp
bGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGlu
ZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nl
c3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZp
bGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFw
cGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJu
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21l
bnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3Io
CiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyArNDI3LDcgQEAgY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wg
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2lt
bXV0YWJsZURhdGEpOwogfQpAQCAtNDAyLDcgKzQzOCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwg
c2l6ZSgpIH19OwogfQpAQCAtNDU2LDcgKzQ5Miw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVy
YXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3Np
emVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RG
OjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAt
PiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTExLDcgQEAgc2l6
ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBz
dGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVu
dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShz
ZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2Vn
bWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBv
c2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ5OSwxNiArNTM1LDIxIEBAIGNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25z
dCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1Jl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxE
YXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdt
ZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50
LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXpl
KCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxs
b2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAg
ICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU3NSw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
YnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0
NTQ5MTgzOTM2OGFkLi4xZDRmYTQ0ZTAzMTBlMGFmMGVmZjYyMThjZTQ1NmYzZGUxZGQzYWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkt
MjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiAr
NjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5l
dyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUp
KTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAg
ICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQot
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0
cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsK
LSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRh
dGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJl
Zik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0Uo
R0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAg
IEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRh
KCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2Vn
bWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50
cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0
aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVy
YXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAg
IGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRh
KCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEo
KSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4g
aXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8
dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIg
YW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBB
cnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQg
YnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVu
Z3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQg
Y2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1
aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9
OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsg
fQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0
YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAg
Ly8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdt
ZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBz
aXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAg
ICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9
CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNp
ZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQ
dHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rp
b248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgp
PiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikK
LSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRp
ZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+
IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFV
U0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsg
Ly8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3Zp
ZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsg
fQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNF
KENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisK
ICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlm
CisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0
YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWlu
ZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hh
cmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0
YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
IHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNv
bnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVf
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29u
c3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBU
byBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAg
IHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAsMTY4IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5
LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQot
ICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkg
dGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmll
dyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7
CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcigp
IGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29u
c3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFr
ZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsK
KyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIp
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21i
aW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGlu
dG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdt
ZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdt
ZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAj
ZW5kaWYKIH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZl
ciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRh
KCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBw
dWJsaWMgU2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdz
JiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQor
ICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYm
Li4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBj
bGFzcywgaXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5
VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgor
I2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVh
dGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQ
T1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
eworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBT
aGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAg
ICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5oYXNP
bmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOworICAg
IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVy
ZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGlt
bXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhh
c09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZm
ZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9
CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsg
fQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5z
dXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAg
ZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAg
ICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307
CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7
CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY4LDIxICszODEsMjEgQEAgaW5saW5lIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25X
aXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3Qg
cG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVy
RGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAg
ICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VO
REFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2Vu
ZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBt
X3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29u
c3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Np
emU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYp
OworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5n
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYw
YzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAg
aWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1h
Z2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29y
ay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVU
eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZp
ZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2Rl
ZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiAr
MTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3Rh
Y2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJD
Rjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihD
RlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlv
bmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIp
KTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBm
NTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5
N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVu
Y29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5
dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAg
ICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdm
ZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5ZmMyMjhhNmQ5
YWJiYzMyMGVmN2Y2YzhiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZl
biBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28g
b25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5E
QVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgp
IGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVDRkRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+
KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAK
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRh
R2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRl
MjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIx
MSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5
VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3Rh
dGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1
ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxv
Y10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9u
VXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hl
Y2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3
ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEg
QEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNl
Z21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXpl
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJ
bnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChO
U0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAK
LVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1Jl
dGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0
YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0
YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkg
Y29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVu
dHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwg
bnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICBy
ZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtMTI2LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0
YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFp
blB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0
YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
aW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRl
NThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJz
ZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3Qg
KGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2
YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgy
ZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2Vm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3Rh
dGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXRE
YXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7
CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNp
Z25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXgg
PSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0
aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJ
ZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5
SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWdu
ZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFs
aWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAg
ICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1
dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEg
PSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3Vz
SW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAt
MjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7
CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsK
KyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYg
aW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0Vt
cHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcs
MTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNP
TiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMi
CiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBp
cyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5n
IHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBr
ZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBl
bmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlk
czsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENE
TUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMy
YTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1
ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZv
aWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBl
OjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZm
ZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBk
MC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYy
Li5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwx
MiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJy
YXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92
YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1Jl
ZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50
QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFf
YXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUo
ZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUo
ZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3
MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5
NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5j
b2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVC
eXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4
IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5
Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5
dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYo
KTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0
aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAg
c3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3Rf
Y2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1
b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250
aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXgg
MTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2Zj
MTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRl
cnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZv
bnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9h
dCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9u
dENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRl
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2lu
IG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJv
b2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0
ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5
MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVk
NDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNp
YmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdp
biwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IElu
dGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxl
LCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBu
dWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRm
YWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVk
N2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFj
ZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNj
cmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0
dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBj
aGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpA
QCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBT
dHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewot
ICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5D
b2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNv
dXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4u
NWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6
OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5
cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShk
YXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9k
ZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9k
ZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1l
VHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQy
ZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNl
MDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAt
MzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5N
b2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2
YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7
CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmlu
ZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVS
TCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7
CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVs
PiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJs
KSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwog
fQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFk
MmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
bGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29m
ZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUp
CiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0
OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1
aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBB
U1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZm
ZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3Rh
dGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZh
bHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7
IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wg
aXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zm
c2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJp
dmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAg
IEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAg
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAot
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0
b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1
ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQog
ICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0
OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2Rk
ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJl
dHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hh
cmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8v
IFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQg
bm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24g
cmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhl
IHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1
ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1Nm
bnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsK
IAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQg
cGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVy
dCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVy
dGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBu
dWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRC
dWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5
MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUw
MjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJh
Y3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRo
ZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlm
IChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQog
ICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVm
ZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5
ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJj
YmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0z
MjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJv
b3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAog
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3
MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBp
bml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRh
ID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgp
KQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQ
TEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09
IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5n
ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUo
KSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05P
YmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05X
cml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcg
Kzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNl
c3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEp
IHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAg
YXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygp
IHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgp
IHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0
VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcg
Kzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFw
YXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05
MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3Np
bmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNl
OltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VX
aXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVl
c3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5
MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJl
c3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Np
b24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
S2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJl
ZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRp
bmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdl
dCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNz
aW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4
cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChO
U0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBw
SWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAg
LTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtl
eUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5
KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVh
bWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRl
bnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRp
b25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpj
b250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyks
IGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWlu
UHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
OwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmlj
YXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3Rk
OjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0
cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAg
ICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAg
IGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRh
dGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5
SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2Fk
IiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQo
KS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUo
ZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0
b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVx
dWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJ
ZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250
ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRp
Zmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3Zl
KGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9y
KTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5
SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3RE
YXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAt
MTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBt
X2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5
SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRy
eSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRp
Zmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciks
IGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEp
XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRl
eCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkw
NGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJB
VkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJS
ZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAg
LCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3Jl
YXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBb
bV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBx
dWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlz
OkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAg
IFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVj
ZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBk
OTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlh
MDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxh
Z3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRC
dWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBw
ZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1E
YXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURp
c2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4
YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3
OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEw
NzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNy
ZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTEg
KzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQo
KQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlm
ICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVs
c2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFy
ZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVy
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNSw3
IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRh
VVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpG
b3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
OjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAg
ICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0K
IAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21f
YXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFm
MzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7
CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThk
M2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQx
ZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9u
YXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVz
QXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXpl
X3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFy
ZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAg
ICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9z
aXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcg
QEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0g
YWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCku
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQp
IHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmll
ckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFj
IHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVu
ZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1
c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRv
IGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5
IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0
YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERh
dGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3
cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgp
LnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJh
dGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAg
ICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVy
IGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVx
dWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0Rh
dGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwg
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0g
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2Fs
bGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigp
LCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVw
ZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQo
KSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMy
N2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1
MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVD
RkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1
OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBj
b25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29u
c3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFk
YmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAg
IHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4
IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1
ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3Jt
RGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJl
Zj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAg
cmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFi
bGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTEx
MGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAt
MTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRf
TGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xp
YnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxp
YnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1
NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBs
YXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9T
ZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAg
ICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkp
OwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7
CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwg
dGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQog
CiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFl
NjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+
IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRh
KCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZl
cjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxl
KGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcxNWJk
YTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIy
MDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Vi
a2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8p
CiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAg
ICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2
YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2
YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRm
YjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGln
dW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgp
LCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2Rl
ciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRh
dGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFk
VHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCA5MTEyNjU5MmM4YmE3NmJkNjYzNzMzMjRkNWJiMjk2YjMxZGUwM2Jl
Li5kZjFjYmI4NWYyMmNjZjQ2M2JkNTU3YmExN2UwOWE1Y2UzOTAwYWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY1NCw3ICszNjU0
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVk
dWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUi
LCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAg
ICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJp
bml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5
bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdT
VF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5p
dERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZl
NzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEy
YzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3No
IHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3Rh
cnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUs
IGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJy
b3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFy
c2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAo
dXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAg
IGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+
cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAg
ICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJr
dXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJz
ZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBt
YXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBh
cnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1v
dmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwg
IXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5
ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0
NWQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
MzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21t
b25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBt
X3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRl
ZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVt
IHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2Vu
Y3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRy
LCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAg
IG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RD
ZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAg
ICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAg
ICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkK
ICAgICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJz
ZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygp
KSkKKyAgICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0
YSYmIGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQn
cyBub3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1J
ZCA9IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmlu
aXREYXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBh
eWxvYWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxv
YWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJp
bmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTg2LDExICs4OSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5l
ZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlv
blN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNi
YjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBk
ZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZv
bnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxh
dGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdp
ZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlv
bkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0
OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBG
b250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09S
RV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJD
T1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4
YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVk
OTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1l
bnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFu
Y2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1f
ZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQog
CiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0
YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBN
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZh
bHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJl
Y3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0
YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBj
b25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05
Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxp
Y3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
KiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFs
aWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyAr
MTIwLDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0
RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNz
ZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFy
dHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVN
YXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3Qg
TWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJ
bnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sx
XTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAK
LSAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50
cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50Owog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNb
Y291bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9u
IDogVGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFu
dFJlY29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQ
YXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6
OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJs
eVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5U
eXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBj
b25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhB
c3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRo
VmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jp
em9udGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVj
dGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwg
Z2x5cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlw
aCBjb250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhH
bHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgs
IGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24q
IG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdCho
b3Jpem9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZt
YXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAg
c3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
R2x5cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0
OwogCi0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3Rh
bnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlm
IChvZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlw
aEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQg
PSBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIy
MCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1h
dGhWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAg
ICAgIGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2
MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdh
Njg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7
CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1h
dGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVu
VHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVO
VFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhB
UkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVm
MDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlw
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5
cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBj
aDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2
KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBp
ZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBz
dHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBi
dWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8g
Ijw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNv
bnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
dmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRo
aXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdl
MlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1
Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wg
Z2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJh
Z2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkg
Y29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgs
IHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChj
b3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdl
IEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5
YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRj
M2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcg
KzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRz
IGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBu
ZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUg
b2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250
KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3
cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYg
cmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250
RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcg
QEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0
cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBp
bnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1v
cnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNl
PiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
d3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUs
IHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFj
NDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2YTBlZjVi
YzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUs
NiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFz
cyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4ICs1NSw4
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1i
b29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9y
PHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZv
bnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1
aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVG
b250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAK
aW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzllOWVmZTA2
MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VU
YWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9
CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRh
YmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0
aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEs
NyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRl
cmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNl
dCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25z
KEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkK
QEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1
cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGlu
ZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBU
YWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENv
dW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAm
bG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJl
VGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEds
eXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBo
LCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9v
bCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1h
cDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkK
QEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAg
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsK
IAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5
cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0g
Y291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3
ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5U
eXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVp
bnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChp
c1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFn
ID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVC
YXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6
VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVy
ZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3
IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2Ny
aXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zm
c2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQo
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZz
Y3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBU
YWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRU
YWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNj
cmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNj
cmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVm
ZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRh
YmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFz
Y3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJs
ZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCog
c2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAg
IGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVh
dHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9v
a3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNjcmlwdExp
c3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RP
ZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9v
a3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3Vw
TGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlz
dChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZh
dWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVh
dHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZl
YXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lz
KGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVM
aXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVy
dGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1
YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVy
ZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKQEAgLTM4
MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJv
b2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZl
Y3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcp
OworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICgh
aGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBl
VmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVh
IGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVy
dGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3Qg
T3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5U
eXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47
CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJp
Y3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VC
VGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZh
bGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikK
ICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxH
bHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5k
ZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIxYTMzYTYy
MDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5h
bWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAg
ICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEy
Y2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAy
NmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0
eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVm
IEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRp
b25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUy
ZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZj
MzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJv
LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1l
KCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
bikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAg
IGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIw
OTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4
OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgs
NyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3Ro
ZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZk
MjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUs
IGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
SFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBo
Zm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAw
LCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3Vs
dCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAg
ICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBjZjJiNTFmNmYwMjgzN2ExMTA2ZjRk
OTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAx
YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAg
LTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wg
Y2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9
CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVw
bGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQotICAgIFNoYXJlZEJ1ZmZl
ciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAg
IHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
IHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsg
fQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRh
OyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7
IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmls
ZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRS
ZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMy
ZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUwYzgyMDk2NGU4
YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAt
NzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEo
KSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhh
biBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJl
ZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAg
ICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigp
OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6
VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9
IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0
ZGY0OGRmMTdhYmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBz
dGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogICAg
ICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQor
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVn
X2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBp
bmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTI0
Miw3ICsyNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUo
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYs
NyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVy
OjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVH
SW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1
M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01T
KQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRk
ZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1
MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFr
ZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAo
TlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0p
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpj
b250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBp
ZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJj
aGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
OwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsK
LSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkK
KyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUw
MSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4o
Y29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRl
bVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9h
cmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1
dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMu
c2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5
cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVz
W2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ld
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ld
XTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1J
TUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICgh
aXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUg
PSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURh
dGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1J
TUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uu
c3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRf
VEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRD
dXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAg
ICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEo
KSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewog
ICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0
eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJv
cC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBj
YW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBh
cmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2Ig
YW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3Zl
cmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FU
eXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJl
dHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgo
TlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQg
bnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNv
dW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYw
NDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZl
NjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQot
ICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9w
cmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAg
LCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJv
dmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdD
b252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRh
YjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBl
MmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNv
bnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0
UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2Fy
ZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAg
cmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0
aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5
cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3Ry
YXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkp
KSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAg
ICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAg
ICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4
IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAy
ZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJv
YXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNv
bnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNb
aV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRl
bnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ld
KS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAg
ICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0g
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJ
KFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElV
bmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
KS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5k
ZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcy
N2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIg
QEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0
YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEg
Y29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBl
czsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAg
ICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsK
ICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBh
c3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBp
ZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRD
dXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcg
KzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3Rl
Ym9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09M
IGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJP
T0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJp
bmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlw
ZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwog
ICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
CiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAg
ICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3Rl
Ym9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6
cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAg
ICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0
MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAg
TG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRh
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVk
aW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgz
ODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAg
IH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0
aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBt
X2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAg
ICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01
MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0
ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBz
aXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAg
IGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1
cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApp
bmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3OTA1Li5jN2QxOGJlMWQ2
YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0MTEsMTMgQEAgdWludDY0X3Qg
Rm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5
dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykg
ewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+Pihl
bGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjph
c0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3
MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xh
c3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAt
MjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50
PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVj
dG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFz
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBh
bHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4
ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNs
aWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZm
MDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1
ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2Uo
cmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAg
LCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZl
QnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVp
bnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxs
ZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RT
eW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0
YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwog
ICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZ
ZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7
CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92
ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdl
JiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXpl
KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSBy
YW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0
IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9h
ZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBs
ZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExl
bmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZm
ZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAg
YXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tE
YXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBb
dGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFz
a0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2
ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6
ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIg
eyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlm
IChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQog
ICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0
ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21l
RGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBi
eXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21E
YXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAg
IHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1
dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1
dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAg
aWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0
aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpp
bmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhh
YTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsK
ICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0
YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5z
RGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdl
dCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlm
IChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpk
YXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBi
YmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFh
ZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5k
KQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9y
ZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7
IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENv
bXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0
IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAg
ICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1f
YnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIz
NCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQo
KQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFy
dGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAv
LyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFz
dFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQ
YXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBs
YXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBh
cnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRo
YXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0
YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFy
eVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5
M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVE
YXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1f
ZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxS
ZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5l
ZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEo
bV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9o
YW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNs
aWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBt
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZh
NDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAg
ICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xv
YmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFt
ZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgog
ICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9
IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRl
U3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAg
ICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwog
ICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdy
aXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0
NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVk
NWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRC
dWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
dWx0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdP
UkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBs
YXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFk
KTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhh
bmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVz
VG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxl
ICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExh
c3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4u
NjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlm
ICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
QXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcg
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFy
cmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAog
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkp
OwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmlu
Z1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIs
NyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBy
ZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNv
bnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4
IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3
YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0
QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjpl
bXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1w
dHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07
CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRh
dGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5n
KCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25l
U2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZp
bGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVT
ZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAg
ICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2Yz
Nzk2YjcxYTA0MzEzNGM2NjQ2Li5kMWE3N2I1OGI2NDRhOTBiOTA0ZWZkYzFmZWJjNmMwNjc0NGY5
MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwx
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVk
QnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIFNo
YXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7
IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3Jp
cHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgp
KSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVm
ZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0Lgor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBl
bmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXIm
LCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVk
NjQwZDA0ZDRiZDQ1Li5lNWYzNDliNDgyNzQ2ZjllZGI5YzVmNjMxYmZhZDRiNDE5OThiYTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQog
ICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisg
ICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQog
CkBAIC03OCw5ICs3OSwxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYg
KCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xv
YWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwot
ICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAg
ICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7
CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBl
bmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5m
cmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRy
dWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjIsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBt
X2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3
ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDliYjUxMDI2ZjU4M2EwOWIx
ODQ3YTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlv
bnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1
Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7
IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGlu
ZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYm
IG1fZGF0YS0+aXNOdWxsKCk7IH0KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0
ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsg
bnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRl
eHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFhZjI3
ODkuLjFjMGI1NzhhMGEwNDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NS
ZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+
LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNs
aWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAg
ICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsK
ICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5
YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0
NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsx
MjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQg
aGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZi
ZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3
IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1f
cmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9u
c2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkK
KyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwg
bV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQp
CiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEg
ZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5l
ZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29u
dGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShG
aW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0
L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5
cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5
cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhv
dXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xl
YXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwog
ICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0g
bnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxp
ZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4x
NjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAg
Y2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRl
cjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdC
dWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYz
MzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcs
NyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAog
ICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVz
dEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxD
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1
ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4
IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5
OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQs
NyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1
cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcy
Li5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRh
dGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dy
aXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1
dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9
LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1
MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uNTRkYzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5
MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNo
cm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlm
IChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVu
ZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZl
ci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEw
NSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2Fk
OjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsg
V1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0K
KyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVy
ZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZl
cmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVy
RmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0Vu
YWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAg
ICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5n
VGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAg
IGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMg
cGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQog
ICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxv
YWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgp
KSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4
aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVy
aW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVm
ZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hy
b25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBp
ZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsK
IAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFs
aWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8v
IDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNh
Y2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2Fj
aGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAg
IGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJ
WE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUg
cmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1
ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9
IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQo
KTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYK
IAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVz
dCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2
YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAg
ICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZl
cigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3Jr
TG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJU
KG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7
CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9y
aW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50
cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZl
dGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBM
T0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGlu
IHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCku
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jl
c3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBz
ZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9S
RUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBk
aXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xv
YWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1f
Y2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1d
KGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VS
Q0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDcz
MDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBk
ZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNz
IEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVj
dENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+
IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0Nh
Y2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIy
YzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAg
ICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9z
Y3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVl
OGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdl
OjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5m
b3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3Jk
LnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEp
IHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShj
b25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNv
bnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0
ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYg
c3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3Jk
ID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2Uu
Ym9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5
LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBi
YTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZi
NDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEw
MSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNv
bnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9
IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZl
cikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAK
ICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJm
ZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZmU3NTljZWRhMmQ3YmQyZWFlODc4OTk3ODNlZmYz
Mzk5MmE3M2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYs
NyArNDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkK
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JD
YWNoZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUo
Y2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8
IG1fY2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7
CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5y
ZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0
aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAg
ICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEu
CiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0
ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1
ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5k
KGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5y
ZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM4LDExICsxMzcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikKIHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
bV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNo
ZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0p
OworICAgIGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmlzTnVs
bCgpKSB7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRv
JiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUg
ZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlz
U3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
KQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsK
KyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFs
UmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAg
IH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApp
bmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIz
MDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFs
c2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgw
N2Q3NDE3MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5MWQzMWNhOWUx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVy
OjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6
ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsK
LSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAg
ICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJv
bV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdj
MzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRi
ZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQx
MzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgogICAgIFNoYXJlZEJ1
ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsg
fQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBt
X2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNv
cHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZm
ZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVm
ZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1h
a2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRh
KCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29w
eT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFl
NzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgs
MTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBk
YXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4g
Y29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0
OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBw
dWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAg
IHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3Qp
IGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgw
MWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3
MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1t
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VE
YXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNm
RGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVs
ZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRh
dGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkx
NmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+
OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9y
IHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2Un
cmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFj
ZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9
IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0
ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0
MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxh
eSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAwYzBm
MDhmYmRlNTZhOWQ0MmVjOWY5NmJhMzhmYmU1MTI1NTZlMTY0Li4yYzE2MTFjOWU3MGY4ZjlhMTM3
OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCkBAIC01NSw0OSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFVTRShDRikKLXN0YXRpYyB2b2lkIHNoYXJlYWJsZVJl
c291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7
Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8g
QmFsYW5jZWQgYnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigp
Ci19Ci0gICAgCi1zdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFi
bGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvdXJjZSkKLXsKLSAg
ICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwKLSAgICAgICAgcmVzb3VyY2UsCi0g
ICAgICAgIE5VTEwsIC8vIHJldGFpbgotICAgICAgICBOVUxMLCAvLyByZWxlYXNlCi0gICAgICAg
IE5VTEwsIC8vIGNvcHlEZXNjcmlwdGlvbgotICAgICAgICBOVUxMLCAvLyBhbGxvY2F0ZQotICAg
ICAgICBOVUxMLCAvLyByZWFsbG9jYXRlCi0gICAgICAgIHNoYXJlYWJsZVJlc291cmNlRGVhbGxv
Y2F0ZSwKLSAgICAgICAgTlVMTCwgLy8gcHJlZmVycmVkU2l6ZQotICAgIH07Ci0KLSAgICByZXR1
cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4
dCkpOwotfQotI2VuZGlmCi0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQotewotICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJl
ZiB3aGVuIFNoYXJlZEJ1ZmZlciBpcyBkZWFsbG9jYXRlZC4KLQotI2lmIFVTRShDRikKLSAgICBh
dXRvIGRlYWxsb2NhdG9yID0gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlz
KTsKLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgp
KSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y2ZEYXRhLmdldCgpKTsKLSNlbGlmIFVTRShHTElCKQotICAgIEdSZWZQdHI8R0J5dGVzPiBieXRl
cyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwg
W10odm9pZCogZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+
KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIHRoaXMpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYnl0ZXMuZ2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgorICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICAgICAgW3NlbGYgPSBS
ZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKKyAgICAgICAgW3NlbGYg
PSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQorICAgIH0pOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291
cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKQEAgLTEzOCw5ICsxMDQsNyBA
QCBTaGFyZWFibGVSZXNvdXJjZTo6U2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4m
JiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkCiB7CiB9CiAKLVNoYXJlYWJsZVJlc291cmNlOjp+U2hh
cmVhYmxlUmVzb3VyY2UoKQotewotfQorU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNv
dXJjZSgpID0gZGVmYXVsdDsKIAogYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlSGFuZGxl
KEhhbmRsZSYgaGFuZGxlKQogewpAQCAtMTYyLDcgKzEyNiw3IEBAIHVuc2lnbmVkIFNoYXJlYWJs
ZVJlc291cmNlOjpzaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaXplOwogfQotICAgIAor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3YjQ3
ZjVkNjg1MWQ5ZGUzMmQxYzNhNTQ3MDUxNjBhYTRmN2M2Y2I3Li5hMGVkMDg1NzM0Yjc3NTUxNGMx
MTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmgKQEAgLTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi1jbGFzcyBTaGFy
ZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7Citj
bGFzcyBTaGFyZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWFibGVSZXNvdXJjZT4gewogcHVibGljOgogCiAgICAgY2xhc3MgSGFuZGxlIHsKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRl
Y29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpA
QCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxl
UmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBz
aXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZm
ZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsK
IAotICAgIHVuc2lnbmVkIG1fb2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fc2l6ZTsgICAgCisgICAg
Y29uc3QgdW5zaWduZWQgbV9vZmZzZXQ7CisgICAgY29uc3QgdW5zaWduZWQgbV9zaXplOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjMGI2ZWYzZmEzYTJlMTIwNGM2NzdlY2Y4NmFlY2Jk
MTliYjY0ZDdiLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5
MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlz
TnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZl
clNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlwY0hhbmRsZSkpCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFy
ZQogICAgIGlmIChzaGFyZWRNZW1vcnlCdWZmZXItPnNpemUoKSA8IGJ1ZmZlclNpemUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGJ1
ZmZlclNpemUpOworICAgIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVk
QnVmZmVyKGJ1ZmZlclNpemUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0
YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5z
aXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVU
eXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQog
ewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VS
VChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsg
aSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCBy
ZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3Bv
bnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsm
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihy
ZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZv
cm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJl
ZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVh
c2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRh
Y2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1p
bWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUo
bWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMK
IAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIs
IGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAz
MSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAg
IGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9w
dGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzVi
Ni4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBA
QCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3Mg
Q2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247
CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmlu
ZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1
N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpv
cHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2Vs
ZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAg
ICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1
ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRl
eCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5
Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9u
dD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRp
b25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0
YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgx
MTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3Zv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBh
ZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBk
NmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFw
cGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgs
OCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhh
c0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFn
ZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0Vu
Y2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5
cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJp
bmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRl
eCAzYzc5YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQx
NzA2ZjhjNzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsx
NDAsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rp
b24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVu
Y3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhf
dD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMw
NzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1w
dHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdl
bmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3Jh
cHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAog
ICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6
ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0
cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IGJhZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNl
NjliMmM2YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9p
ZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxp
Z2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRl
eHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGln
aGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hs
aWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0
OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3Vw
OnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxp
Z2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olll
cyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBw
ID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmlu
ZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdi
NTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
dm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2Vs
ZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29u
c3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xl
bmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAg
ICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3Vz
dG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3Nl
bGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5
NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEy
MzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0
aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAg
W3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5MTViN2IzYjU4MjAyM2ViNTFlYzcuLmJiZWY2
NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4ZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBA
IC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRC
dWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICAgICAgYXV0byBz
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRN
ZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHNp
emVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc2hhcmVk
TWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKICAg
ICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKICAg
ICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9hcmQoY29ubmVjdGlvbiwgcGFzdGVib2Fy
ZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5ld0NoYW5nZUNvdW50KTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdm
NTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3
Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlw
ZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5z
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJp
bmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAg
IFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAg
IH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0
RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVV
UkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0
byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBu
c0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAx
LDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQo
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21p
c2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBs
YXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdl
IE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAt
NDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZp
bGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRh
ID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRh
ID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVy
UmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChX
ZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAg
IE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5
cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAg
bV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5h
bWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUxNjY2
NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJl
Y3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0
OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkzNThlMDNiMDQwMDMyZjk2NzcuLjg4ODI3ZWIy
OTEyYTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7
CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsK
ICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2
ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi41ODU0N2Q4NDg4MWRjODMwZjY5Njlh
MGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxT
Y2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAog
ICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJh
bWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5m
byksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0Nv
bXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBA
IC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2Vu
dCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEp
Ci0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAg
ICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBF
eGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdl
YlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAt
PiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChp
c1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1f
c3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3lu
Y0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6
ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxl
dGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAg
ICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5k
bGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4
NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uYjA3YzE0OWZkNGRhMTVjZWVj
NGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5m
bzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3
ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5
bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3lu
Y1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7
CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fc3luY0RhdGE7
CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFj
ayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2ZjZjOGUy
YmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg3LDcg
KzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlk
ZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5mb3Jt
YXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZv
cm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4uNjZhYzRj
YWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBA
IHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJ
bWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGlt
YWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBo
b3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IGE4ZTkwZTQyOWE2ZWNlMTM2ODdiOWY5MWJjNzM4MmNhN2NiMGZmM2QuLjY1ZTVkODJh
MzU3YmNiYWFmOTUwOTAzODVkMmFlZGEyZWRmMzQyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzgy
MSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFj
dGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0b21Q
YXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNd
OwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkg
ewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkg
PT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAg
ICAgICAgIH0KQEAgLTY1OTQsNyArNjU5NCw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJ
dGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAg
ICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQog
ICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTY1LDcgKzc1NjUsNyBAQCAtICh2b2lkKWFj
dGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNo
YXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hh
cmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAi
RGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRo
IG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFt
ZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9u
KGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlv
bihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVj
dDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10g
fSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0Njc5ZDdiMDk4MWFhN2QzZmNkOWJkZTkw
ZWQ2ZmYyYWMyMzJlZTE1Li5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4MzEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU4OCw3ICs1
ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZQogICAgIGlmICghc2hhcmVkTWVtb3J5QnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRh
dGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdl
SGFuZGxlLmRhdGFTaXplKTsKICAgICBwYWdlQ2xpZW50KCkuc2F2ZUltYWdlVG9MaWJyYXJ5KFdU
Rk1vdmUoYnVmZmVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCmluZGV4IDZkMzMzODY5ZTRlMDAxMmQyN2QzZmU4NWQ4NWU1M2E0ZWQ5
Njk2MGEuLmE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcg
KzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjQwLDcgKzI0MCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNI
YW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBp
ZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hh
cmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIHJldHVy
biBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNp
emUpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCkBAIC0yNzUsMTUgKzI3NSwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgIGF1dG8gc2hhcmVkTWVtb3J5SW1hZ2UgPSBTaGFyZWRN
ZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJlZEJ1
ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9y
eUltYWdlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFTaXpl
KSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKLQogICAgIGlmICgh
YXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1v
cnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9y
eUFyY2hpdmUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFyY2hpdmVCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVt
b3J5QXJjaGl2ZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihhcmNoaXZlSGFuZGxlLmRh
dGFTaXplKSk7CisgICAgICAgIGFyY2hpdmVCdWZmZXIgPSBzaGFyZWRNZW1vcnlBcmNoaXZlLT5j
cmVhdGVTaGFyZWRCdWZmZXIoYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgfQogICAgIHBh
Z2VDbGllbnQoKS5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgV1RGTW92
ZShpbWFnZUJ1ZmZlciksIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZp
bGVuYW1lKGZpbGVuYW1lKSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBXVEZN
b3ZlKGFyY2hpdmVCdWZmZXIpLCBvcmlnaW5JZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4
ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDlj
MWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBh
Z2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2Vi
UGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVS
YW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjgu
LmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0
aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRp
bmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQo
KSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIg
d2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShy
YW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClf
c2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRl
PillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xs
ZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihX
ZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNT
dHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRU
eXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5k
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFl
YWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVs
bHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAg
ICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAg
Zm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkg
ewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5i
eXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMx
NTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1l
KSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3Ry
aW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVi
b2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
KSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQg
ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3
b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4
ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkz
YmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwg
Y29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0
aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7
CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYg
KHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBk
YXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hh
ciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hh
cmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZm
ZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1
b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIu
cHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEko
JnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBl
LmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJs
ZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFj
L0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRl
eCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1
MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJj
ZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1v
ZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1f
ZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3
YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3YTI5
YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
Mjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNl
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAg
ICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNo
YXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJs
ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNi
OGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29y
ayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUg
cmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJ
bnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5k
ZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3Ro
XSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBl
bmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIz
MWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODks
NiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1
Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQ
YWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVy
cykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFu
dWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAg
ICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBA
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1Jl
Y2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAg
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0g
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzky
Nyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxT
dHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZp
bmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAg
aWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQor
ICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdp
blZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVS
ZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRh
dGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJl
YW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFt
RGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIu
Z2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdt
ZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0
ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWVi
MmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBA
IC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1f
bWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9t
YW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQg
dG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFp
bnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1Nu
YXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4
ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi5kZWQxZGUxOWMxOTI1ZDM3Yjhk
MzkzZTg1ZjY1ZjViNzNhMmMyOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRh
ID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRl
cj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRC
dWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1f
cmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVz
cG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZp
bmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgfSwgW3RoaXNdKFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAg
ICBkaWRSZWNlaXZlRGF0YShidWZmZXIudGFrZSgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNo
KQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0
N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1
Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRl
cj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0
YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7Cisg
ICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRi
ZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndp
bGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUy
MmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0
aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lk
IGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAg
ICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsK
ICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1
Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQz
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWlu
UmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5S
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFG
b3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCmluZGV4IDVkMDVjMGVhYjc2YjYyYjRmODM2Yzg1ODIyMWZlYTQ0NzJlMDU1
NmUuLjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5
cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8
dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6
OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2Fy
ZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZl
cikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBu
YXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlw
Y0hhbmRsZTsKQEAgLTE0NSw3ICsxNDUsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJgogICAg
IGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6
ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNI
YW5kbGUuZGF0YVNpemUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKQEAgLTMyMiw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAg
LTQwNCw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZv
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2Fy
ZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBj
SGFuZGxlKSwgMCk7CkBAIC00MTIsNyArNDE0LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2kK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXIt
PmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZm
ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZm
ZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBVUkwgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBl
MjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4zZmYzNTU4MDhlMWQ2ZWIy
YWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50
IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmlu
Zz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03
OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0
b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpA
QCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCBy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc2YzYw
Mjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsg
dXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVh
cigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVm
ZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVl
c3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2Vl
YzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5hZTA1MGE5OTIzZWE3ZWY5NTU1Y2Jh
MTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmll
d0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTU0LDcgKzU5LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcg
bV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUx
NzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3
NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1
MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90
IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAtMTYz
LDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpI
YW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlm
IChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZl
QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEg
KilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBp
ZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNk
MmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3MmMyY2E3
ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291
cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0g
ZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJj
ZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZW5j
b2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNp
emUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNvbnN0IApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxY2E5
YzIzZDY3N2YwM2EyOWM2MGY1YjJhOGJhYzY4MGQ2YjVjODQzLi4yYjc0Zjc1MTU2YWJmNmMwMTEw
ODAwMTAxZWM3YTVmNzA4ZDBiZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNzczNyw3ICs3NzM3LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0
b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9y
eTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3Jv
bGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09
IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7
CisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9s
bFRvQXBwSGlnaGxpZ2h0KHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRs
ZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xs
VG9IaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgaSsrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgy
ZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEy
ZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChw
YXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRU
eXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJh
NzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3
MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0o
bW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMp
Ci0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0
MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYw
N2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAq
KWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0g
cmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0
YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0
YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJp
bmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3
NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5
MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9N
UGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFz
dGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmlu
ZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3
YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQx
Myw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1l
bnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGlt
cGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQx
OTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1l
c0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxT
dHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2
ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5
ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAt
MTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZm
ZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODlj
MDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVk
NmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICop
ZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEg
PSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBp
ZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1h
aW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJu
IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNl
bnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjcz
M2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2Vi
QXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBf
aXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVm
ZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRM
b2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZl
RGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNo
aXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVs
ZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5
MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1
NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0o
Y29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0g
aGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFk
ZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCld
OworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10g
aW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAg
IGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQw
MWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4
MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2Rlcjoo
TlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0
YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5n
ICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsK
ICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNv
dXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAg
bWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0g
cmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+
ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNV
UkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JL
ZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5n
ZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmpl
Y3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2Jq
ZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2Rl
ciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGlu
Z05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlm
ICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1
cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxl
YXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAq
KVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAg
ICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVk
QnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2Rl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEo
KSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1
cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRh
ID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0
YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0
YzZmMDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1l
bW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
TWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFz
c0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgp
CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09N
UHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhk
ZjYxMjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFj
MTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICsz
NSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVi
bGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0
cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBw
cHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAg
ICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4u
YzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFy
Y2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICgh
Y2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdl
ZWZjMS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6Ondp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUK
IHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFl
NjllZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVk
aXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwog
CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsg
fQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYy
YTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVh
NWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0x
NzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29w
dF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4g
RV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2Uo
bV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0
dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQg
V2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1l
bnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNl
LmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZj
Yjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2Vi
UmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsK
IH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3Ry
ZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUo
ZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZm
Y2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0
YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgK
QEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdl
YlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09N
X091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjNkZGQ4MDdkYzFiZDM5NzZlNjg4MzZmOTNjNjQzOTBi
NTJjZWU0Yy4uNmNjZjI5N2VkN2FlYjQxZWJjMTk3MDI3Zjk4YzI4NDRkOThmZTZjOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yNiAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0g
QWRkIGltcGxlbWVudGF0aW9uIG9mIHNlbGVjdGlvbiBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3
aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0
NjguLjYxYTExZmY1YmY1NWFhMmQ5OGU1YmRhYjk3ZGJiM2Y5ZDYxYWE3YTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1MiArNDMsNDUgQEAgbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRz
T2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19m
aWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19m
aWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVY
UEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmco
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1w
dHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9U
X05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NF
UlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVm
ZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJV
RSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
Ci19Ci0KLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAg
IEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+
ZGF0YSgpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXIt
PnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwot
ICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAg
IEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScs
IGJ1ZmZlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEy
W10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEw
LCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJs
ZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVz
dERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIu
Z2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVu
YXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBl
Y3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEo
KSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMSwxMCArMTA0LDEwIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBV
ICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlu
dCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpA
QCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAg
Im1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0
aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAg
ICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3Vs
dXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNo
YXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgx
MDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1
ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0
YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNs
b25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAg
ICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBF
WFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10g
PSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBi
dWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8v
IFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgp
LCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVp
bGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWls
ZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tC
dWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBj
aGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCArMjA0LDcwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
cioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rv
cjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsn
aScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJj
ZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1
dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0g
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAg
IGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2Qu
ZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCks
IGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUo
KSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAg
IGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVj
a0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJj
ZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVm
ZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWpr
bC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNp
emUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUo
KSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6
ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewog
ICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRl
bnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNv
bnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29u
dGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAg
ICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9
fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2Qn
IH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0g
ICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkp
OwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
JywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtl
QnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7
Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30s
IHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBF
WFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdk
JywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1ha2VC
dWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZm
ZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAg
IEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEs
IDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwot
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVm
ZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhT
dHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5j
bGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2Uo
KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZm
ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhi
ZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNB
cnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVp
bGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVy
LmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhl
bGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRh
Lmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwg
YnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZl
ci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBD
RkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhl
bGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05T
RGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0Rh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVz
LCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBl
bmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhw
ZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdl
ciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAog
ICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYg
c2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1
aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5j
cmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11d
KTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsK
IAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50
ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAg
ICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlv
bik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAg
ICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBv
c2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRl
TlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAg
ICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9
CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAK
LSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXpl
IC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0
YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0
ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0
cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkp
OwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>445386</attachid>
            <date>2021-11-29 23:41:14 -0800</date>
            <delta_ts>2021-12-06 04:25:16 -0800</delta_ts>
            <desc>scripthash-tests-crash-log.txt</desc>
            <filename>scripthash-tests-crash-log.txt</filename>
            <type>text/plain</type>
            <size>211821</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">T3BlbmVkIGxvZyBmaWxlICdDOlxob21lXHdlYmtpdFxnY1xXZWJLaXRCdWlsZFxSZWxlYXNlXGJp
bjY0XGxheW91dC10ZXN0LXJlc3VsdHNcQ3Jhc2hMb2dfNDg5MF8yMDIxLTExLTMwXzE2LTM5LTI1
LTExOC50eHQnDQowOjAwMD4gLnNyY3BhdGggIkM6XGhvbWVcd2Via2l0XGdjIg0KU291cmNlIHNl
YXJjaCBwYXRoIGlzOiBDOlxob21lXHdlYmtpdFxnYw0KDQoqKioqKioqKioqKioqIFBhdGggdmFs
aWRhdGlvbiBzdW1tYXJ5ICoqKioqKioqKioqKioqDQpSZXNwb25zZSAgICAgICAgICAgICAgICAg
ICAgICAgICBUaW1lIChtcykgICAgIExvY2F0aW9uDQpPSyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEM6XGhvbWVcd2Via2l0XGdjDQowOjAwMD4gLnN5bXBhdGgg
Y2FjaGUqDQpTeW1ib2wgc2VhcmNoIHBhdGggaXM6IGNhY2hlKg0KRXhwYW5kZWQgU3ltYm9sIHNl
YXJjaCBwYXRoIGlzOiBjYWNoZSoNCg0KKioqKioqKioqKioqKiBQYXRoIHZhbGlkYXRpb24gc3Vt
bWFyeSAqKioqKioqKioqKioqKg0KUmVzcG9uc2UgICAgICAgICAgICAgICAgICAgICAgICAgVGlt
ZSAobXMpICAgICBMb2NhdGlvbg0KRGVmZXJyZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWNoZSoNCjA6MDAwPiAhYW5hbHl6ZSAtdnYNCioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioNCiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiogICAgICAgICAgICAgICAgICAgICAgICBF
eGNlcHRpb24gQW5hbHlzaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KDQpLRVlfVkFM
VUVTX1NUUklORzogMQ0KDQogICAgS2V5ICA6IEFWLkZhdWx0DQogICAgVmFsdWU6IFJlYWQNCg0K
ICAgIEtleSAgOiBBbmFseXNpcy5DUFUuU2VjDQogICAgVmFsdWU6IDINCg0KICAgIEtleSAgOiBB
bmFseXNpcy5EZWJ1Z0FuYWx5c2lzUHJvdmlkZXIuQ1BQDQogICAgVmFsdWU6IENyZWF0ZTogODAw
NzAwN2Ugb24gSlBDMDAyMDIzMDINCg0KICAgIEtleSAgOiBBbmFseXNpcy5EZWJ1Z0RhdGENCiAg
ICBWYWx1ZTogQ3JlYXRlT2JqZWN0DQoNCiAgICBLZXkgIDogQW5hbHlzaXMuRGVidWdNb2RlbA0K
ICAgIFZhbHVlOiBDcmVhdGVPYmplY3QNCg0KICAgIEtleSAgOiBBbmFseXNpcy5FbGFwc2VkLlNl
Yw0KICAgIFZhbHVlOiAyDQoNCiAgICBLZXkgIDogQW5hbHlzaXMuTWVtb3J5LkNvbW1pdFBlYWsu
TWINCiAgICBWYWx1ZTogMzk3DQoNCiAgICBLZXkgIDogQW5hbHlzaXMuU3lzdGVtDQogICAgVmFs
dWU6IENyZWF0ZU9iamVjdA0KDQogICAgS2V5ICA6IFRpbWVsaW5lLk9TLkJvb3QuRGVsdGFTZWMN
CiAgICBWYWx1ZTogMTcyMjMxNQ0KDQogICAgS2V5ICA6IFRpbWVsaW5lLlByb2Nlc3MuU3RhcnQu
RGVsdGFTZWMNCiAgICBWYWx1ZTogNA0KDQoNClBST0NFU1NFU19BTkFMWVNJUzogMQ0KDQoNClNF
UlZJQ0VfQU5BTFlTSVM6IDENCg0KDQpTVEFDS0hBU0hfQU5BTFlTSVM6IDENCg0KDQpUSU1FTElO
RV9BTkFMWVNJUzogMQ0KDQpUaW1lbGluZTogIWFuYWx5emUuU3RhcnQNCiAgICBOYW1lOiA8Ymxh
bms+DQogICAgVGltZTogMjAyMS0xMS0zMFQwNzozOToyNS40OTNaDQogICAgRGlmZjogNDkzIG1T
ZWMNCg0KVGltZWxpbmU6IER1bXAuQ3VycmVudA0KICAgIE5hbWU6IDxibGFuaz4NCiAgICBUaW1l
OiAyMDIxLTExLTMwVDA3OjM5OjI1LjBaDQogICAgRGlmZjogMCBtU2VjDQoNClRpbWVsaW5lOiBQ
cm9jZXNzLlN0YXJ0DQogICAgTmFtZTogPGJsYW5rPg0KICAgIFRpbWU6IDIwMjEtMTEtMzBUMDc6
Mzk6MjEuMFoNCiAgICBEaWZmOiA0MDAwIG1TZWMNCg0KVGltZWxpbmU6IE9TLkJvb3QNCiAgICBO
YW1lOiA8Ymxhbms+DQogICAgVGltZTogMjAyMS0xMS0xMFQwOToxNDoxMC4wWg0KICAgIERpZmY6
IDE3MjIzMTUwMDAgbVNlYw0KDQoNCkRVTVBfQ0xBU1M6IDINCg0KRFVNUF9RVUFMSUZJRVI6IDAN
Cg0KTU9ETElTVF9XSVRIX1RTQ0hLU1VNX0hBU0g6ICA5ZWMxNTQyODJjNjYxOWQ5Mjk0YmViMzMy
ZTQxMjJiNDk0ZWZiODg4DQoNCk1PRExJU1RfU0hBMV9IQVNIOiAgYTZhYzRiNjYwMjNkNTgyYjc3
NWM2NDc0Njg4NjMxMmVlMTEyY2JhMA0KDQpOVEdMT0JBTEZMQUc6ICAwDQoNCkFQUExJQ0FUSU9O
X1ZFUklGSUVSX0ZMQUdTOiAgMA0KDQpQUk9EVUNUX1RZUEU6ICAxDQoNClNVSVRFX01BU0s6ICAy
NzINCg0KRFVNUF9UWVBFOiAgZmUNCg0KRkFVTFRJTkdfSVA6IA0KV2ViS2l0IVdlYkNvcmU6OkRh
dGFTZWdtZW50OjpzaXplKzM4IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV2ViQ29yZVxwbGF0
Zm9ybVxTaGFyZWRCdWZmZXIuY3BwIEAgNTExXQ0KMDAwMDdmZmRgMzhjMWMwYzggNDg4YjAxICAg
ICAgICAgIG1vdiAgICAgcmF4LHF3b3JkIHB0ciBbcmN4XQ0KDQpFWENFUFRJT05fUkVDT1JEOiAg
KC5leHIgLTEpDQouZXhyIC0xDQpFeGNlcHRpb25BZGRyZXNzOiAwMDAwN2ZmZDM4YzFjMGM4IChX
ZWJLaXQhV1RGOjpGdW5jdGlvbjx1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wodm9pZCk+OjpvcGVy
YXRvcigpKzB4MDAwMDAwMDAwMDAwMDAwNCkNCiAgIEV4Y2VwdGlvbkNvZGU6IGMwMDAwMDA1IChB
Y2Nlc3MgdmlvbGF0aW9uKQ0KICBFeGNlcHRpb25GbGFnczogMDAwMDAwMDANCk51bWJlclBhcmFt
ZXRlcnM6IDINCiAgIFBhcmFtZXRlclswXTogMDAwMDAwMDAwMDAwMDAwMA0KICAgUGFyYW1ldGVy
WzFdOiAwMDAwMDAwMDAwMDAxMDAwDQpBdHRlbXB0IHRvIHJlYWQgZnJvbSBhZGRyZXNzIDAwMDAw
MDAwMDAwMDEwMDANCg0KRkFVTFRJTkdfVEhSRUFEOiAgMDAwMDVkNjANCg0KREVGQVVMVF9CVUNL
RVRfSUQ6ICBJTlZBTElEX1BPSU5URVJfUkVBRA0KDQpQUk9DRVNTX05BTUU6ICBEdW1wUmVuZGVy
VHJlZS5leGUNCg0KRk9MTE9XVVBfSVA6IA0KV2ViS2l0IVdlYkNvcmU6OkRhdGFTZWdtZW50Ojpz
aXplKzM4IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV2ViQ29yZVxwbGF0Zm9ybVxTaGFyZWRC
dWZmZXIuY3BwIEAgNTExXQ0KMDAwMDdmZmRgMzhjMWMwYzggNDg4YjAxICAgICAgICAgIG1vdiAg
ICAgcmF4LHF3b3JkIHB0ciBbcmN4XQ0KDQpSRUFEX0FERFJFU1M6ICAwMDAwMDAwMDAwMDAxMDAw
IA0KDQpFUlJPUl9DT0RFOiAoTlRTVEFUVVMpIDB4YzAwMDAwMDUgLSBUaGUgaW5zdHJ1Y3Rpb24g
YXQgMHglcCByZWZlcmVuY2VkIG1lbW9yeSBhdCAweCVwLiBUaGUgbWVtb3J5IGNvdWxkIG5vdCBi
ZSAlcy4NCg0KRVhDRVBUSU9OX0NPREVfU1RSOiAgYzAwMDAwMDUNCg0KRVhDRVBUSU9OX1BBUkFN
RVRFUjE6ICAwMDAwMDAwMDAwMDAwMDAwDQoNCkVYQ0VQVElPTl9QQVJBTUVURVIyOiAgMDAwMDAw
MDAwMDAwMTAwMA0KDQpXQVRTT05fQktUX1BST0NTVEFNUDogIDYxYTVkNDQ3DQoNCldBVFNPTl9C
S1RfTU9EVUxFOiAgV2ViS2l0LmRsbA0KDQpXQVRTT05fQktUX01PRFNUQU1QOiAgNjFhNWQ0M2UN
Cg0KV0FUU09OX0JLVF9NT0RPRkZTRVQ6ICA1MWMwYzgNCg0KQlVJTERfVkVSU0lPTl9TVFJJTkc6
ICAxOTA0MS4xLmFtZDY0ZnJlLnZiX3JlbGVhc2UuMTkxMjA2LTE0MDYNCg0KQU5BTFlTSVNfU0VT
U0lPTl9IT1NUOiAgSlBDMDAyMDIzMDINCg0KQU5BTFlTSVNfU0VTU0lPTl9USU1FOiAgMTEtMzAt
MjAyMSAxNjozOToyNS4wNDkzDQoNCkFOQUxZU0lTX1ZFUlNJT046IDEwLjAuMTkwNDEuMSBhbWQ2
NGZyZQ0KDQpUSFJFQURfQVRUUklCVVRFUzogDQoNClsgR0xPQkFMIF0NCg0KICAgIEdsb2JhbCAg
ICBEMSAgICBQSUQ6IFs2MTA4XQ0KICAgIEdsb2JhbCAgICBEMSAgICBUaHJlYWRfQ291bnQ6IFs0
MV0NCiAgICBHbG9iYWwgICAgRDEgICAgUGFnZVNpemU6IFs0MDk2XQ0KICAgIEdsb2JhbCAgICBT
VFIgICBNb2RMaXN0X1NIQTFfSGFzaDogW2E2YWM0YjY2MDIzZDU4MmI3NzVjNjQ3NDY4ODYzMTJl
ZTExMmNiYTBdDQogICAgR2xvYmFsICAgIFNUUiAgIENvbW1hbmRMaW5lOiBbQzpcaG9tZVx3ZWJr
aXRcZ2NcV2ViS2l0QnVpbGRcUmVsZWFzZVxiaW42NFxEdW1wUmVuZGVyVHJlZS5leGUgLV0NCiAg
ICBHbG9iYWwgICAgU1RSICAgRGVza3RvcF9OYW1lOiBbV2luU3RhMFxEZWZhdWx0XQ0KICAgIEds
b2JhbCAgICBTVFIgICBQcm9jZXNzTmFtZTogW0R1bXBSZW5kZXJUcmVlLmV4ZV0NCiAgICBHbG9i
YWwgICAgU1RSICAgRGVidWdnZXJfQ1BVX0FyY2hpdGVjdHVyZTogW2FtZDY0XQ0KICAgIEdsb2Jh
bCAgICBEMSAgICBDUFVfUHJvY2Vzc29yQ291bnQ6IFsxNl0NCiAgICBHbG9iYWwgICAgRDEgICAg
Q1BVX01IWjogWzM2MDBdDQogICAgR2xvYmFsICAgIFNUUiAgIENQVV9BcmNoaXRlY3R1cmU6IFtY
NjRdDQogICAgR2xvYmFsICAgIEQxICAgIENQVV9GYW1pbHk6IFs2XQ0KICAgIEdsb2JhbCAgICBE
MSAgICBDUFVfTW9kZWw6IFsxNF0NCiAgICBHbG9iYWwgICAgRDEgICAgQ1BVX1N0ZXBwaW5nOiBb
MTNdDQogICAgR2xvYmFsICAgIFNUUiAgIENQVV9WZW5kb3JTdHJpbmc6IFtdDQogICAgR2xvYmFs
ICAgIEQxICAgIExvYWRlZE1vZHVsZV9Db3VudDogWzExNV0NCiAgICBHbG9iYWwgICAgRDEgICAg
VW5sb2FkZWRNb2R1bGVfQ291bnQ6IFsyM10NCiAgICBHbG9iYWwgICAgICAgICAgUHJvY2Vzc0Jl
aW5nRGVidWdnZWQNCiAgICBHbG9iYWwgICAgRDEgICAgR0ZsYWdzOiBbMF0NCiAgICBHbG9iYWwg
ICAgRDEgICAgQXBwbGljYXRpb25fVmVyaWZlcl9GbGFnczogWzBdDQogICAgR2xvYmFsICAgIFNU
UiAgIEN1cnJlbnRUaW1lRGF0ZTogW1R1ZSBOb3YgMzAgMTY6Mzk6MjUuMDAwIDIwMjEgKFVUQyAr
IDk6MDApXQ0KICAgIEdsb2JhbCAgICBEMSAgICBDdXJyZW50VGltZURhdGU6IFsxNjM4MjU3OTY1
XQ0KICAgIEdsb2JhbCAgICBTVFIgICBQcm9jZXNzVXBUaW1lOiBbMCBkYXlzIDA6MDA6MDQuMDAw
XQ0KICAgIEdsb2JhbCAgICBEMSAgICBQcm9jZXNzVXBUaW1lOiBbNF0NCiAgICBHbG9iYWwgICAg
U1RSICAgU3lzdGVtVXBUaW1lOiBbMTkgZGF5cyAyMjoyNToxNS4wMDBdDQogICAgR2xvYmFsICAg
IEQxICAgIFN5c3RlbVVwVGltZTogWzE3MjIzMTVdDQogICAgR2xvYmFsICAgIEQxICAgIFByb2R1
Y3RUeXBlOiBbMV0NCiAgICBHbG9iYWwgICAgRDEgICAgU3VpdGVNYXNrOiBbMjcyXQ0KICAgIEds
b2JhbCAgICAgICAgICBBU0xSX0VuYWJsZWQNCiAgICBHbG9iYWwgICAgICAgICAgU2FmZVNFSF9F
bmFibGVkDQogICAgR2xvYmFsICAgICAgICAgIFNhZmVTRUhfTm90QXBwbGljYWJsZQ0KDQpbIFRI
UkVBRCBdDQoNCg0KICAwIElkOiAxN2RjLjVkNjANCiAgICBGcmFtZVswMF0gIEQxICAgU3lzdGVt
VGlkOiBbMHg1ZDYwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBJc19PcmlnaW5hbEV4Y2VwdGlvblRo
cmVhZA0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9UaW1lXyht
cyk6IFsweDEwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFkZHJlc3M6IFtEdW1w
UmVuZGVyVHJlZSFtYWluQ1JUU3RhcnR1cF0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkU3Rh
cnRBZGRyZXNzOiBbMHgwMDAwN2ZmNjc4MTkzN2MwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFj
a19TSEExX0hhc2hfTW9kOiBbNjNjYmViZGFmYmEwMWFiODViYmYzOWM3MWRiYjY3MDZiNzY1MTE5
OF0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4MTBdDQogICAg
RnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMDNmY2NiYWFjZDE5
N2Y0OTNmNDc3YzMxYjJiODBjMGFkODgyNGQ2MF0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tf
U0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsweDEwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19T
SEExX0hhc2hfTW9kX0Z1bmM6IFs3Y2QyMGIxZmY2MGYwYjczYWY1YmVjY2RmY2I1OTUwOTYwYmMx
ZTFkXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweDEw
XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBb
Y2VjZjNiMWIxOGRkMzYyMDUzNWI4ZWY5YWYxMDA5ZDI1Yjc1Y2I0NF0NCiAgICBGcmFtZVswMF0g
IEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4MTBdDQogICAgRnJhbWVb
MDBdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbNTI5NWRiY2UwMzc5MDI2NTEwMjU2MDk2ZGViZDQ3
NjgwYWUzYWJmMl0NCiAgICBGcmFtZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDVdDQog
ICAgRnJhbWVbMDZdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMzFhYTFlZGQxZTdjYzdlZGI3MmU0
ZjhjNjlkMTFhYzZkNzViNjdhMV0NCiAgICBGcmFtZVswNl0gIEQyICAgRnJhbWVHcm91cEhhc2g6
IFsweDddDQogICAgRnJhbWVbMDhdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbZGUxMDViYzgyMWI5
ZjY0MWU3MjFmYzhiMjg5NjMyMGNmYWZiM2I4ZV0NCiAgICBGcmFtZVswOF0gIEQyICAgRnJhbWVH
cm91cEhhc2g6IFsweDldDQogICAgRnJhbWVbMGFdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbY2Y4
MzkwOGNkYmM1ODYwZWFkMTQ3YTc2NzdkNThiYWIyMWI3OTM0Ml0NCiAgICBGcmFtZVswYV0gIEQy
ICAgRnJhbWVHcm91cEhhc2g6IFsweGJdDQogICAgRnJhbWVbMGNdICBTVFIgIEZyYW1lR3JvdXBI
YXNoOiBbNjUzMjJiMzcxNTQ2MGY5OTYxM2NjODZlMTQ4MmZkYzFjYjY3NTUxYV0NCiAgICBGcmFt
ZVswY10gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweGRdDQogICAgRnJhbWVbMGVdICBTVFIgIEZy
YW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMwMGQzOWQzOGJiYzk1YmEwNTkwMDAzMWEwOV0N
CiAgICBGcmFtZVswZV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweGVdDQogICAgRnJhbWVbMGZd
ICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2VmYzM4ZTYwODZjZWJiMTJkNjA2M2RhNjdmMzlj
Njg4YWU3OF0NCiAgICBGcmFtZVswZl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweGZdDQogICAg
RnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9VbmlxdWVfU3RhY2tfTW9kdWxlczogWzB4Nl0NCiAg
ICBGcmFtZVswN10gICAgICAgSXNfVUlUaHJlYWQNCiAgICBGcmFtZVswN10gICAgICAgSXNfV25k
UHJvYw0KICAgIEZyYW1lWzA5XSAgICAgICBOb3RTYWZlRHVyaW5nU2h1dGRvd24NCiAgICBGcmFt
ZVswYV0gICAgICAgQVBJQ2FsbGVyQ2FuZGlkYXRlDQogICAgRnJhbWVbMGVdICAgICAgIENvbXBs
ZXRlU3RhY2tXYWxrDQogICAgRnJhbWVbMDBdICAgICAgIElzX1VJVGhyZWFkDQogICAgRnJhbWVb
MDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRS
ZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFk
X0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVsw
MF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVb
MDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweDEwXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRf
RnJhbWVfQ291bnQ6IFsweDFdDQogICAgRnJhbWVbMDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3Rh
Y2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVbMDBdICAgICAgIE5vdFN5c0VudGVyDQogICAgRnJh
bWVbMDBdICBEMSAgIEFyY2hfQVhfUmVnaXN0ZXI6IFsweGZmZmZmZmZmZmZmZmZmN2ZdDQogICAg
RnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0JYOiBbMHgwMDAwMDAwMDAwMDAwMTIwXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9DWDogWzB4MDAwMDAwMDAwMDAwMTAw
MF0NCiAgICBGcmFtZVswMF0gIEQxICAgQXJjaF9EWF9SZWdpc3RlcjogWzB4MDAwMDAxZjAwYmNk
ZWRhOF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX1NJDQogICAgRnJhbWVbMDBdICBE
MSAgIHN0YWNrYWRkcl9ESTogWzB4MDAwMDAwMThmNDU5ZTFiOF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY0NTllMDcwXQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBzdGFja2FkZHJfQlA6IFsweDAwMDAwMDE4ZjQ1OWUxZTBdDQogICAgRnJhbWVbMDBdICBEMSAg
IExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDM4YzFjMGM4XQ0KICAgIEZyYW1lWzAw
XSAgICAgICBOVUxMX21zcl9yOA0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3Jfcjk6IFsweDAwMDAw
MWYwNTdmMDI4ZjhdDQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3JfcjEwOiBbMHgw
MDAwMDAwMDAwMDAwMTIwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfbXNyX3IxMTog
WzB4MDAwMDAwMThmNDU5ZGZhMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3IxMjogWzB4MDAw
MDAxZjA1N2YwMjhkMF0NCiAgICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTM6IFsw
eDAwMDAwMDAwMDAwMDAxMjBdDQogICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yMTQ6IFsweDAwMDAw
MDAwZmZmZmZmZmZdDQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3JfcjE1OiBbMHgw
MDAwMDAwMDAwMDAwMDAxXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJbnN0cnVjdGlvbl9Qb2ludGVy
OiBbMHgwMDAwN2ZmZDM4YzFjMGM4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICByZWFkX29mZnNldF9B
cmNoX0NYOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICByZWFkX0Fy
Y2hfQ1g6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0F0
dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MWZdDQoNCiAgICBGcmFtZVswMF0gIFRy
aWFnZSBTeW1ib2w6IFtXZWJLaXQhV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUrMHgzOF0NCiAg
ICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtXZWJLaXQhV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpnZXRTb21lRGF0YSsweDJlXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW1dlYktp
dCFXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKzB4MTJmXQ0KICAgIEZy
YW1lWzAzXSAgVHJpYWdlIFN5bWJvbDogW1dlYktpdCFXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcisweGY5XQ0KICAgIEZyYW1lWzA0XSAgVHJpYWdlIFN5
bWJvbDogW1dlYktpdCFXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cisweDJjXQ0KICAgIEZyYW1lWzA1XSAgVHJpYWdlIFN5bWJvbDogW1dlYktpdCFXVEY6OkRldGFp
bDo6Q2FsbGFibGVXcmFwcGVyPGBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YSc6OmAyJzo6PGxhbWJk
YV8xPix2b2lkPjo6Y2FsbCsweDdmXQ0KICAgIEZyYW1lWzA2XSAgVHJpYWdlIFN5bWJvbDogW1dU
RiFXVEY6OlJ1bkxvb3A6OnBlcmZvcm1Xb3JrKzB4MjZlXQ0KICAgIEZyYW1lWzA3XSAgSWdub3Jl
IFN5bWJvbDogW1dURiFXVEY6OlJ1bkxvb3A6OlJ1bkxvb3BXbmRQcm9jKzB4NWNdDQogICAgRnJh
bWVbMDhdICBUcmlhZ2UgU3ltYm9sOiBbVVNFUjMyIVVzZXJDYWxsV2luUHJvY0NoZWNrV293KzB4
MmY4XQ0KICAgIEZyYW1lWzA5XSAgVHJpYWdlIFN5bWJvbDogW1VTRVIzMiFEaXNwYXRjaE1lc3Nh
Z2VXb3JrZXIrMHgyNDldDQogICAgRnJhbWVbMGFdICBUcmlhZ2UgU3ltYm9sOiBbRHVtcFJlbmRl
clRyZWVMaWIhcnVuVGVzdCsweGFkOF0NCiAgICBGcmFtZVswYl0gIFRyaWFnZSBTeW1ib2w6IFtE
dW1wUmVuZGVyVHJlZUxpYiFtYWluKzB4NWQzXQ0KICAgIEZyYW1lWzBjXSAgVHJpYWdlIFN5bWJv
bDogW0R1bXBSZW5kZXJUcmVlIW1haW4rMHg4MDVdDQogICAgRnJhbWVbMGRdICBUcmlhZ2UgU3lt
Ym9sOiBbRHVtcFJlbmRlclRyZWUhX19zY3J0X2NvbW1vbl9tYWluX3NlaCsweDEwY10NCiAgICBG
cmFtZVswZV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4
MTRdDQogICAgRnJhbWVbMGZdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0
YXJ0KzB4MjFdDQoNCiAgMSBJZDogMTdkYy4zMGFjDQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3Rl
bVRpZDogWzB4MzBhY10NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rp
b25fVGltZV8obXMpOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFkZHJl
c3M6IFtudGRsbCFUcHBXb3JrZXJUaHJlYWRdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0
YXJ0QWRkcmVzczogWzB4MDAwMDdmZmQ4OTQ0MmFkMF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX01vZDogWzlmMzE3NzAwMDk2Yzc1MDFmZDI0ZWI1MTEyYTkxNGRiOGYyZDg0
OTVdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsweDRdDQogICAg
RnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbM2Y0MWUzNjJhOTZj
NTk4ODI5MDBjODNkMTU0ODFkYTM0Yjg0OTEyOF0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tf
U0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsweDRdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NI
QTFfSGFzaF9Nb2RfRnVuYzogWzc4OTczZWQzZmYxMTFkNWE5ZWMxMjQ4OWIyMzY3NDRkYzJhZDk3
ODhdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4NF0N
CiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzAx
ZjRlYWE4YmJlNDczMTIzNjYyZWJkNjdhNzU5ZTQyMTBkNjZjNGRdDQogICAgRnJhbWVbMDBdICBE
MiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsweDRdDQogICAgRnJhbWVbMDBd
ICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMjU2Y2E2Y2QwMjk5OTU5MjYwMTVhMDMyMTAxMDNhNzBh
YzcwNTYxZV0NCiAgICBGcmFtZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDFdDQogICAg
RnJhbWVbMDJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMwMGQzOWQzOGJi
Yzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswMl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsw
eDJdDQogICAgRnJhbWVbMDNdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2VmYzM4ZTYwODZj
ZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVswM10gIEQyICAgRnJhbWVHcm91
cEhhc2g6IFsweDNdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9VbmlxdWVfU3RhY2tf
TW9kdWxlczogWzB4Ml0NCiAgICBGcmFtZVswMV0gICAgICAgTnRXb3JrZXJUaHJlYWQNCiAgICBG
cmFtZVswMl0gICAgICAgQ29tcGxldGVTdGFja1dhbGsNCiAgICBGcmFtZVswMF0gIEQxICAgVGhy
ZWFkTG9jYWxlOiBbMHg0MDldDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZFJlYWRBZGRyZXNzOiBb
MHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfQWRkcmVzc0F0UGFn
ZUJvdW5kYXJ5OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFy
X251bGxfUkVBRDogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVt
YmVyX29mX1N0YWNrX0ZyYW1lczogWzB4NF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0ZyYW1l
X0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJZ25vcmVkX0ZyYW1lX0NvdW50OiBb
MHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBGcmFtZXNfbm90X2luX3N0YWNrX3JhbmdlOiBbMHgw
XQ0KICAgIEZyYW1lWzAwXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFy
X251bGxfQXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMDFkM10NCiAgICBGcmFtZVswMF0gIEQxICAg
QXJjaF9CWF9SZWdpc3RlcjogWzB4MDAwMDAxZjAwYmNiNjVjMF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgbmVhcl9udWxsX0FyY2hfQ1g6IFsweDAwMDAwMDAwMDAwMDAwNzBdDQogICAgRnJhbWVbMDBd
ICAgICAgIE5PUF9BcmNoX0RYDQogICAgRnJhbWVbMDBdICAgICAgIE5PUF9BcmNoX1NJDQogICAg
RnJhbWVbMDBdICBEMSAgIEFyY2hfRElfUmVnaXN0ZXI6IFsweDAwMDAwMWYwMGJjYjY1YzBdDQog
ICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDogWzB4MDAwMDAwMThmNDhmZjg3OF0NCiAg
ICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0JQDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRl
ZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg5NDkwN2M0XQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBOZWFyX05VTExfbXNyX3I4OiBbMHgwMDAwMDAwMDAwMDAwMjA3XQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBOZWFyX05VTExfbXNyX3I5OiBbMHgwMDAwMDAwMDAwMDAwMjA3XQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBOZWFyX05VTExfbXNyX3IxMDogWzB4MDAwMDAwMDAwMDAwMDAzZF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTE6IFsweDAwMDAwMDAwMDAwMDAzZDJdDQogICAg
RnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMg0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21z
cl9yMTMNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjE0DQogICAgRnJhbWVbMDBdICAg
ICAgIE5VTExfbXNyX3IxNQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJbnN0cnVjdGlvbl9Qb2ludGVy
OiBbMHgwMDAwN2ZmZDg5NDkwN2M0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19BdHRyaWJ1
dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDFmXQ0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2Ug
U3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yV29ya1ZpYVdvcmtlckZhY3RvcnkrMHgxNF0NCiAgICBG
cmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFUcHBXb3JrZXJUaHJlYWQrMHgyZjddDQog
ICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVu
aysweDE0XQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJl
YWRTdGFydCsweDIxXQ0KDQogIDIgSWQ6IDE3ZGMuMWE1MA0KICAgIEZyYW1lWzAwXSAgRDEgICBT
eXN0ZW1UaWQ6IFsweDFhNTBdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRy
YWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRB
ZGRyZXNzOiBbbnRkbGwhVHBwV29ya2VyVGhyZWFkXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJl
YWRTdGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkODk0NDJhZDBdDQogICAgRnJhbWVbMDBdICBTVFIg
IFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFs5ZjMxNzcwMDA5NmM3NTAxZmQyNGViNTExMmE5MTRkYjhm
MmQ4NDk1XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kOiBbMHg0XQ0K
ICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzNmNDFlMzYy
YTk2YzU5ODgyOTAwYzgzZDE1NDgxZGEzNGI4NDkxMjhdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0
YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFj
a19TSEExX0hhc2hfTW9kX0Z1bmM6IFs3ODk3M2VkM2ZmMTExZDVhOWVjMTI0ODliMjM2NzQ0ZGMy
YWQ5Nzg4XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsw
eDRdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6
IFswMWY0ZWFhOGJiZTQ3MzEyMzY2MmViZDY3YTc1OWU0MjEwZDY2YzRkXQ0KICAgIEZyYW1lWzAw
XSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMHg0XQ0KICAgIEZyYW1l
WzAwXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzI1NmNhNmNkMDI5OTk1OTI2MDE1YTAzMjEwMTAz
YTcwYWM3MDU2MWVdDQogICAgRnJhbWVbMDBdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0K
ICAgIEZyYW1lWzAyXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlk
MzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNo
OiBbMHgyXQ0KICAgIEZyYW1lWzAzXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2
MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQogICAgRnJhbWVbMDNdICBEMiAgIEZyYW1l
R3JvdXBIYXNoOiBbMHgzXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0
YWNrX01vZHVsZXM6IFsweDJdDQogICAgRnJhbWVbMDFdICAgICAgIE50V29ya2VyVGhyZWFkDQog
ICAgRnJhbWVbMDJdICAgICAgIENvbXBsZXRlU3RhY2tXYWxrDQogICAgRnJhbWVbMDBdICBEMSAg
IFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVz
czogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NB
dFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAg
bmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAg
IE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweDRdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9G
cmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3Vu
dDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgRnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTog
WzB4MF0NCiAgICBGcmFtZVswMF0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMF0gIEQxICAg
bmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAwMDAwMDAxZDNdDQogICAgRnJhbWVbMDBdICBE
MSAgIEFyY2hfQlhfUmVnaXN0ZXI6IFsweDAwMDAwMWYwMGJjYjcwNjBdDQogICAgRnJhbWVbMDBd
ICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBbMHgwMDAwMDAwMDAwMDAwMDcwXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBBcmNoX0RYX1JlZ2lzdGVyOiBbMHgwMDAwMDFmMDBiY2I2Y2UwXQ0KICAgIEZy
YW1lWzAwXSAgICAgICBOT1BfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX0RJX1Jl
Z2lzdGVyOiBbMHgwMDAwMDFmMDBiY2I3MDYwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2Fk
ZHJfU1A6IFsweDAwMDAwMDE4ZjQ5ZmY1YjhdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJj
aF9CUA0KICAgIEZyYW1lWzAwXSAgRDEgICBMb2FkZWRNb2R1bGVfQXJjaF9JUDogWzB4MDAwMDdm
ZmQ4OTQ5MDdjNF0NCiAgICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yODogWzB4MDAw
MDAwMDAwMDAwMDdlNV0NCiAgICBGcmFtZVswMF0gIEQxICAgbG9hZGVkbW9kdWxlX21zcl9yOTog
WzB4MDAwMDdmZmQ0NjdlZGY4OF0NCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3IxMDogWzB4MDAw
MDAxZjA1MjViNmRhMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbG9hZGVkbW9kdWxlX21zcl9yMTE6
IFsweDAwMDA3ZmZkNDY4MDQ5MThdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMg0K
ICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0gICAgICAgTlVM
TF9tc3JfcjE0DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxNQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBJbnN0cnVjdGlvbl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDkwN2M0XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBTdGFja19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDEw
XQ0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yV29ya1Zp
YVdvcmtlckZhY3RvcnkrMHgxNF0NCiAgICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtudGRs
bCFUcHBXb3JrZXJUaHJlYWQrMHgyZjddDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBb
S0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdl
IFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxXQ0KDQogIDMgSWQ6IDE3ZGMu
M2ZlYw0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsweDNmZWNdDQogICAgRnJhbWVb
MDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4Zl0NCiAgICBG
cmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbbnRkbGwhVHBwV29ya2VyVGhyZWFk
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkODk0
NDJhZDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFs5ZjMxNzcw
MDA5NmM3NTAxZmQyNGViNTExMmE5MTRkYjhmMmQ4NDk1XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBT
dGFja19TSEExX0hhc2hfTW9kOiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEEx
X0hhc2hfVW5pcXVlX01vZDogWzNmNDFlMzYyYTk2YzU5ODgyOTAwYzgzZDE1NDgxZGEzNGI4NDkx
MjhdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHg0
XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFs3ODk3M2Vk
M2ZmMTExZDVhOWVjMTI0ODliMjM2NzQ0ZGMyYWQ5Nzg4XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBT
dGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweDRdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNr
X1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFswMWY0ZWFhOGJiZTQ3MzEyMzY2MmViZDY3YTc1
OWU0MjEwZDY2YzRkXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1
bmNfT2Zmc2V0OiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzI1
NmNhNmNkMDI5OTk1OTI2MDE1YTAzMjEwMTAzYTcwYWM3MDU2MWVdDQogICAgRnJhbWVbMDBdICBE
MiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFtZUdyb3Vw
SGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJh
bWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgyXQ0KICAgIEZyYW1lWzAzXSAgU1RSICBG
cmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhd
DQogICAgRnJhbWVbMDNdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgzXQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVsZXM6IFsweDJdDQogICAgRnJhbWVb
MDFdICAgICAgIE50V29ya2VyVGhyZWFkDQogICAgRnJhbWVbMDJdICAgICAgIENvbXBsZXRlU3Rh
Y2tXYWxrDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBG
cmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAw
MTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAw
MDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweDRd
DQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVsw
MF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAg
RnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0gICAgICAgV2Fp
dF9BUEkNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAw
MDAwMDAxZDNdDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfQlhfUmVnaXN0ZXI6IFsweDAwMDAw
MWYwMGJjYmE0NjBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBbMHgw
MDAwMDAwMDAwMDAwMDcwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX0RYX1JlZ2lzdGVyOiBb
MHgwMDAwMDFmMDBiY2JhMGUwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBOT1BfQXJjaF9TSQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBBcmNoX0RJX1JlZ2lzdGVyOiBbMHgwMDAwMDFmMDBiY2JhNDYwXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfU1A6IFsweDAwMDAwMDE4ZjRhZmZiOThdDQog
ICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CUA0KICAgIEZyYW1lWzAwXSAgRDEgICBMb2Fk
ZWRNb2R1bGVfQXJjaF9JUDogWzB4MDAwMDdmZmQ4OTQ5MDdjNF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgTmVhcl9OVUxMX21zcl9yODogWzB4MDAwMDAwMDAwMDAwMDVlNl0NCiAgICBGcmFtZVswMF0g
IEQxICAgTmVhcl9OVUxMX21zcl9yOTogWzB4MDAwMDAwMDAwMDAwMDVlNl0NCiAgICBGcmFtZVsw
MF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTA6IFsweDAwMDAwMDAwMDAwMDA1ZTBdDQogICAgRnJh
bWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3JfcjExOiBbMHgwMDAwMDAwMDAwMDAwNWVjXQ0KICAg
IEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTINCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9t
c3JfcjEzDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxNA0KICAgIEZyYW1lWzAwXSAg
ICAgICBOVUxMX21zcl9yMTUNCiAgICBGcmFtZVswMF0gIEQxICAgSW5zdHJ1Y3Rpb25fUG9pbnRl
cjogWzB4MDAwMDdmZmQ4OTQ5MDdjNF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfQXR0cmli
dXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgyMF0NCg0KICAgIEZyYW1lWzAwXSAgVHJpYWdl
IFN5bWJvbDogW250ZGxsIU50V2FpdEZvcldvcmtWaWFXb3JrZXJGYWN0b3J5KzB4MTRdDQogICAg
RnJhbWVbMDFdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhVHBwV29ya2VyVGhyZWFkKzB4MmY3XQ0K
ICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1
bmsrMHgxNF0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxVc2VyVGhy
ZWFkU3RhcnQrMHgyMV0NCg0KICA0IElkOiAxN2RjLjNiNDANCiAgICBGcmFtZVswMF0gIEQxICAg
U3lzdGVtVGlkOiBbMHgzYjQwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0
cmFjdGlvbl9UaW1lXyhtcyk6IFsweGZdDQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0
QWRkcmVzczogW3VjcnRiYXNlIXRocmVhZF9zdGFydDx1bnNpZ25lZCBpbnQgKF9fY2RlY2wqKSh2
b2lkICopLDE+XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAw
MDA3ZmZkODZlMDFiNzBdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6
IFtiMmM2OTRhM2VmNDNjNTUyMGEwZTk3ODlmYzVlYTU2YWIzZGI1ODdiXQ0KICAgIEZyYW1lWzAw
XSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kOiBbMHhhXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBT
dGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogW2NiZjcxZmEyMjkxZDg2NGFjODc5NWU5NzQ5ZTQy
ZGE0MzMxMzEwNzBdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVf
TW9kOiBbMHhhXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6
IFtmOTkzNzNlYzMyNDVjNzBhNjM1NTllYjZiMzI1NzE4MWI0MGYxNGU2XQ0KICAgIEZyYW1lWzAw
XSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweGFdDQogICAgRnJhbWVbMDBdICBT
VFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFs0ZTU3NzNkZGZhZjRjZDA1YTYw
YmU0YTg0YWM2MjQ5ODE0NGQ1YmRmXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hh
c2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMHhhXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3Vw
SGFzaDogW2JiNmYwYmYwYzI3MmQxNTBkY2RmZDY5NTg2OGM0YTg0ZmJhOWI2OTddDQogICAgRnJh
bWVbMDBdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgwXQ0KICAgIEZyYW1lWzAxXSAgU1RSICBG
cmFtZUdyb3VwSGFzaDogWzI5OWQxZmIxNjY4NDA4MzY2MDE0MTY1NTQyODVmMzFlNzZlZDc5ODNd
DQogICAgRnJhbWVbMDFdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAy
XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogW2FmMzM3YWIwNzZhOTZhOTI3NjdjZjY3MjczMzg3NmU0
Yjg3ZTAwMmFdDQogICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg0XQ0KICAg
IEZyYW1lWzA1XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzkyYjg4MzBlYzYzYjdmNGY4NWM1ZWNh
ZmM1MmY4OTYxZWViMjZjOWRdDQogICAgRnJhbWVbMDVdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBb
MHg1XQ0KICAgIEZyYW1lWzA2XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzMyZTg1ZGFkZDBlOGRi
MjA3ZWJiNWNmZWM0M2I1MjRjZTg0ZjJhZTZdDQogICAgRnJhbWVbMDZdICBEMiAgIEZyYW1lR3Jv
dXBIYXNoOiBbMHg2XQ0KICAgIEZyYW1lWzA3XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzQxNTZi
NWRjNTliOTE4ZDUyZTg4M2I5Mzk3NjVkMThkZWFhZWM4YTddDQogICAgRnJhbWVbMDddICBEMiAg
IEZyYW1lR3JvdXBIYXNoOiBbMHg3XQ0KICAgIEZyYW1lWzA4XSAgU1RSICBGcmFtZUdyb3VwSGFz
aDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVb
MDhdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg4XQ0KICAgIEZyYW1lWzA5XSAgU1RSICBGcmFt
ZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQog
ICAgRnJhbWVbMDldICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg5XQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVsZXM6IFsweDhdDQogICAgRnJhbWVbMDhd
ICAgICAgIENvbXBsZXRlU3RhY2tXYWxrDQogICAgRnJhbWVbMDBdICAgICAgIElzX1VJVGhyZWFk
DQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZF9MYXN0U3RhdHVzOiBbMHhjMDAwMDAzNF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgVGhyZWFkTG9jYWxlOiBbMHg0MDldDQogICAgRnJhbWVbMDBdICBE
MSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBCYWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfUkVBRDogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1N0YWNrX0ZyYW1lczogWzB4YV0NCiAgICBGcmFt
ZVswMF0gIEQxICAgQmFkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJ
Z25vcmVkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBGcmFtZXNfbm90
X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZyYW1lWzAxXSAgICAgICBJc19JZGxlV2FpdEZv
ck1lc3NhZ2UNCiAgICBGcmFtZVswMF0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMV0gICAg
ICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMF0gIEQxICAgYmFkcHRyX0FyY2hfQVg6IFsweDAwMDAw
MDAwMDAwMDE0ODZdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0JYOiBbMHgw
MDAwMDAwMDAwMDAwMDAxXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9DWDog
WzB4MDAwMDAwMDAwMDAwMDAwMl0NCiAgICBGcmFtZVswMF0gICAgICAgTk9QX0FyY2hfRFgNCiAg
ICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX1NJOiBbMHgwMDAwMDAxOGY0YmZmYjM4XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9ESTogWzB4MDAwMDAwMDAwMDAwMDAwMl0N
CiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY0YmZmODA4XQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9CUDogWzB4MDAwMDAwMDAwMDAwMDAw
Ml0NCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6IFsweDAwMDA3ZmZk
ODcwZmExMDRdDQogICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yODogWzB4MDAwMDAxZjAwYmQ5ZDc2
OF0NCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3I5OiBbMHgwMDAwMDFmMDBiZDk2ZDAwXQ0KICAg
IEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTANCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2th
ZGRyX21zcl9yMTE6IFsweDAwMDAwMDE4ZjRiZmY4ZTBdDQogICAgRnJhbWVbMDBdICAgICAgIE5V
TExfbXNyX3IxMg0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjEzOiBbMHgwMDAwMDAwMGZmZmZm
ZmZmXQ0KICAgIEZyYW1lWzAwXSAgICAgICBOT1BfbXNyX3IxNA0KICAgIEZyYW1lWzAwXSAgRDEg
ICBzdGFja2FkZHJfbXNyX3IxNTogWzB4MDAwMDAwMThmNGJmZmIyMl0NCiAgICBGcmFtZVswMF0g
IEQxICAgSW5zdHJ1Y3Rpb25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4NzBmYTEwNF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgU3RhY2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0K
DQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbd2luMzJ1IU50VXNlck1zZ1dhaXRGb3JN
dWx0aXBsZU9iamVjdHNFeCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW1VT
RVIzMiFSZWFsTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KzB4MWVdDQogICAgRnJhbWVbMDJd
ICBUcmlhZ2UgU3ltYm9sOiBbQ29yZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRo
UnVuTG9vcCsweDhiNjBkXQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDogW0NvcmVGb3Vu
ZGF0aW9uIUNGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3ArMHg4YWU3N10NCiAgICBGcmFt
ZVswNF0gIFRyaWFnZSBTeW1ib2w6IFtDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hlZHVs
ZVdpdGhSdW5Mb29wKzB4ODdjZWRdDQogICAgRnJhbWVbMDVdICBUcmlhZ2UgU3ltYm9sOiBbQ0ZO
ZXR3b3JrIUNGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkrMHhkODNdDQogICAgRnJhbWVbMDZd
ICBUcmlhZ2UgU3ltYm9sOiBbcHRocmVhZFZDMiFwdGhyZWFkX3J3bG9ja2F0dHJfaW5pdCsweDU0
YjldDQogICAgRnJhbWVbMDddICBUcmlhZ2UgU3ltYm9sOiBbdWNydGJhc2UhdGhyZWFkX3N0YXJ0
PHVuc2lnbmVkIGludCAoX19jZGVjbCopKzB4NDJdDQogICAgRnJhbWVbMDhdICBUcmlhZ2UgU3lt
Ym9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0KICAgIEZyYW1lWzA5XSAg
VHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxXQ0KDQogIDUgSWQ6
IDE3ZGMuNGQ4Yw0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsweDRkOGNdDQogICAg
RnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MTBd
DQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczogW2xpYmRpc3BhdGNoIWRp
c3BhdGNoX2FmdGVyXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsw
eDAwMDA3ZmZkNmM1NTdmZDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9N
b2Q6IFtlYTQzZmQ5NTFhYjFmNGFjMDY1NjJjZmQ4NDdjZDM2MWQzYjAxMDNkXQ0KICAgIEZyYW1l
WzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kOiBbMHg5XQ0KICAgIEZyYW1lWzAwXSAgU1RS
ICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzhlYmFiNDg4ZjUwMzhkNzk1MTUyYTdhMjBh
NTRhNGZiOWQ1NDAzN2JdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Vbmlx
dWVfTW9kOiBbMHg5XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1
bmM6IFs1MmEyNDE5ZDhhMjdkM2JlYTIyMDgzODk0OGUzNzM3NDFhNzE4NTcwXQ0KICAgIEZyYW1l
WzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweDldDQogICAgRnJhbWVbMDBd
ICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFswNDAxM2VhNjNiNmM3MjU3
MzBiZDQyNmNlYmI2YmE2ZjVhY2ZkYmUzXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEEx
X0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMHg5XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdy
b3VwSGFzaDogWzA4NmI0MWYxZDE3ZmNkNzk2ZTc4OWI0MzExODI4ZTUxZGNlMTgzZWJdDQogICAg
RnJhbWVbMDBdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgwXQ0KICAgIEZyYW1lWzAxXSAgU1RS
ICBGcmFtZUdyb3VwSGFzaDogWzQ3NzgyMDk4YTkwNzFjZGY2NTEyZWIxYjJlZjQyNjVmNWY0Mjlm
ZmJdDQogICAgRnJhbWVbMDFdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1l
WzAyXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogW2VhZDhlZDdiZWZlMGRjZDU3NWI3YzkwOTcwZTBi
YzI5YTlmZGY0MDddDQogICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg2XQ0K
ICAgIEZyYW1lWzA3XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlk
MzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVbMDddICBEMiAgIEZyYW1lR3JvdXBIYXNo
OiBbMHg3XQ0KICAgIEZyYW1lWzA4XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2
MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQogICAgRnJhbWVbMDhdICBEMiAgIEZyYW1l
R3JvdXBIYXNoOiBbMHg4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0
YWNrX01vZHVsZXM6IFsweDRdDQogICAgRnJhbWVbMDddICAgICAgIENvbXBsZXRlU3RhY2tXYWxr
DQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZF9MYXN0U3RhdHVzOiBbMHhjMDAwMDAwZF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgVGhyZWFkTG9jYWxlOiBbMHg0MDldDQogICAgRnJhbWVbMDBdICBE
MSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBCYWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfUkVBRDogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1N0YWNrX0ZyYW1lczogWzB4OV0NCiAgICBGcmFt
ZVswMF0gIEQxICAgQmFkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJ
Z25vcmVkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBGcmFtZXNfbm90
X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBXYWl0X0FQSQ0KICAg
IEZyYW1lWzAxXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxf
QXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMDAwNF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9B
cmNoX0JYDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBbMHgwMDAwMDAw
MDAwMDAwMzc4XQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfRFgNCiAgICBGcmFtZVsw
MF0gIEQxICAgc3RhY2thZGRyX1NJOiBbMHgwMDAwMDAxOGY0Y2ZmYmU4XQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBuZWFyX251bGxfQXJjaF9ESTogWzB4MDAwMDAwMDAwMDAwMDM3OF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY0Y2ZmYmI4XQ0KICAgIEZyYW1l
WzAwXSAgICAgICBudWxsX0FyY2hfQlANCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxl
X0FyY2hfSVA6IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICBEMSAgIGxvYWRl
ZG1vZHVsZV9tc3Jfcjg6IFsweDAwMDA3ZmZkNmM1NjZmYzBdDQogICAgRnJhbWVbMDBdICBEMSAg
IGxvYWRlZG1vZHVsZV9tc3Jfcjk6IFsweDAwMDA3ZmZkNmM1NTdmZDBdDQogICAgRnJhbWVbMDBd
ICAgICAgIE5VTExfbXNyX3IxMA0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTENCiAg
ICBGcmFtZVswMF0gIEQxICAgbXNyX3IxMjogWzB4MDAwMDAwMDA3ZmZmZmZmZl0NCiAgICBGcmFt
ZVswMF0gICAgICAgT25lQml0X21zcl9yMTMNCiAgICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxM
X21zcl9yMTQ6IFsweDAwMDAwMDAwMDAwMDAzNzhdDQogICAgRnJhbWVbMDBdICBEMSAgIE1pbnVz
T25lX21zcl9yMTU6IFsweGZmZmZmZmZmZmZmZmZmZmZdDQogICAgRnJhbWVbMDBdICBEMSAgIElu
c3RydWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICBE
MSAgIFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCg0KICAgIEZy
YW1lWzAwXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIU50V2FpdEZvclNpbmdsZU9iamVjdCsweDE0
XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTEJBU0UhV2FpdEZvclNpbmds
ZU9iamVjdEV4KzB4OGVdDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbbGliZGlzcGF0
Y2ghZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQrMHg3Yl0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBT
eW1ib2w6IFtsaWJkaXNwYXRjaCFkaXNwYXRjaF9tYWluKzB4NTMyXQ0KICAgIEZyYW1lWzA0XSAg
VHJpYWdlIFN5bWJvbDogW2xpYmRpc3BhdGNoIWRpc3BhdGNoX21haW4rMHg2YjldDQogICAgRnJh
bWVbMDVdICBUcmlhZ2UgU3ltYm9sOiBbbGliZGlzcGF0Y2ghZGlzcGF0Y2hfZ2V0X3NwZWNpZmlj
KzB4M2ZlXQ0KICAgIEZyYW1lWzA2XSAgVHJpYWdlIFN5bWJvbDogW2xpYmRpc3BhdGNoIWRpc3Bh
dGNoX2FmdGVyKzB4ZTdlXQ0KICAgIEZyYW1lWzA3XSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTDMy
IUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNF0NCiAgICBGcmFtZVswOF0gIFRyaWFnZSBTeW1ib2w6
IFtudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMV0NCg0KICA2IElkOiAxN2RjLjU4YzgNCiAg
ICBGcmFtZVswMF0gIEQxICAgU3lzdGVtVGlkOiBbMHg1OGM4XQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQogICAgRnJhbWVbMDBd
ICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczogW2xpYmRpc3BhdGNoIWRpc3BhdGNoX2FmdGVyXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkNmM1NTdm
ZDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFs4MzZjM2NhNWU2
MDBiNDAwNDcyM2QzOWNkZTI2OWE0NzFkMjk0YTBkXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFj
a19TSEExX0hhc2hfTW9kOiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hh
c2hfVW5pcXVlX01vZDogWzhlYmFiNDg4ZjUwMzhkNzk1MTUyYTdhMjBhNTRhNGZiOWQ1NDAzN2Jd
DQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHg2XQ0K
ICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFtjOTNlMjM5ZWFm
YzZhNjUyYjQ4MmRmNzE3NWMyYTQ1YzkzNmFjZTJlXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFj
a19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NI
QTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFtmM2IzMzZiMzVlMDJlY2Q4ZDYzZTQ2ZGMxMThlYjNm
MTU4NjI0ZWU2XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNf
T2Zmc2V0OiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzA4NmI0
MWYxZDE3ZmNkNzk2ZTc4OWI0MzExODI4ZTUxZGNlMTgzZWJdDQogICAgRnJhbWVbMDBdICBEMiAg
IEZyYW1lR3JvdXBIYXNoOiBbMHgwXQ0KICAgIEZyYW1lWzAxXSAgU1RSICBGcmFtZUdyb3VwSGFz
aDogWzQ3NzgyMDk4YTkwNzFjZGY2NTEyZWIxYjJlZjQyNjVmNWY0MjlmZmJdDQogICAgRnJhbWVb
MDFdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFt
ZUdyb3VwSGFzaDogWzM5ZGY0NTA5MmMwZGNkYWU2NTIyN2M3NGFkZGI2NDI1ODAyMjEwYjZdDQog
ICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgzXQ0KICAgIEZyYW1lWzA0XSAg
U1RSICBGcmFtZUdyb3VwSGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJhMDU5MDAw
MzFhMDldDQogICAgRnJhbWVbMDRdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg0XQ0KICAgIEZy
YW1lWzA1XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEyZDYwNjNk
YTY3ZjM5YzY4OGFlNzhdDQogICAgRnJhbWVbMDVdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg1
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVsZXM6IFsw
eDRdDQogICAgRnJhbWVbMDRdICAgICAgIENvbXBsZXRlU3RhY2tXYWxrDQogICAgRnJhbWVbMDBd
ICBEMSAgIFRocmVhZF9MYXN0U3RhdHVzOiBbMHhjMDAwMDAwZF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgVGhyZWFkTG9jYWxlOiBbMHg0MDldDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZFJlYWRBZGRy
ZXNzOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfQWRkcmVz
c0F0UGFnZUJvdW5kYXJ5OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBuZWFyX251bGxfUkVBRDogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgTnVtYmVyX29mX1N0YWNrX0ZyYW1lczogWzB4Nl0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFk
X0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJZ25vcmVkX0ZyYW1lX0Nv
dW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBGcmFtZXNfbm90X2luX3N0YWNrX3Jhbmdl
OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAxXSAgICAg
ICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9BWDogWzB4MDAw
MDAwMDAwMDAwMDAwNF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0JYDQogICAgRnJh
bWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBbMHgwMDAwMDAwMDAwMDAwMzgwXQ0KICAg
IEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfRFgNCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2th
ZGRyX1NJOiBbMHgwMDAwMDAxOGY0ZGZmNmM4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251
bGxfQXJjaF9ESTogWzB4MDAwMDAwMDAwMDAwMDM4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3Rh
Y2thZGRyX1NQOiBbMHgwMDAwMDAxOGY0ZGZmNjk4XQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxs
X0FyY2hfQlANCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6IFsweDAw
MDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3Jfcjg6IFsw
eDAwMDAwMDAwMDAwMDAwMGNdDQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3Jfcjk6
IFsweDAwMDAwMDAwMDAwMDAzN2ZdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMA0K
ICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjExOiBbMHgwMDAwMDFmMDBiZDkzZmMwXQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBtc3JfcjEyOiBbMHgwMDAwMDAwMGZmZmZmZmZmXQ0KICAgIEZyYW1lWzAw
XSAgICAgICBOVUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9y
MTQ6IFsweDAwMDAwMDAwMDAwMDAzODBdDQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9t
c3JfcjE1OiBbMHgwMDAwMDAwMDAwMDAwMDAxXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJbnN0cnVj
dGlvbl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBT
dGFja19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQoNCiAgICBGcmFtZVsw
MF0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3QrMHgxNF0NCiAg
ICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUxCQVNFIVdhaXRGb3JTaW5nbGVPYmpl
Y3RFeCsweDhlXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW2xpYmRpc3BhdGNoIWRp
c3BhdGNoX3NlbWFwaG9yZV93YWl0KzB4N2JdDQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3ltYm9s
OiBbbGliZGlzcGF0Y2ghZGlzcGF0Y2hfYWZ0ZXIrMHhlZGNdDQogICAgRnJhbWVbMDRdICBUcmlh
Z2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0KICAgIEZyYW1l
WzA1XSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxXQ0KDQog
IDcgSWQ6IDE3ZGMuNTdhYw0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsweDU3YWNd
DQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVfKG1zKTog
WzB4Zl0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbdWNydGJhc2Uh
dGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCopKHZvaWQgKiksMT5dDQogICAgRnJh
bWVbMDBdICBEMSAgIFRocmVhZFN0YXJ0QWRkcmVzczogWzB4MDAwMDdmZmQ4NmUwMWI3MF0NCiAg
ICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZDogW2IyYzY5NGEzZWY0M2M1NTIw
YTBlOTc4OWZjNWVhNTZhYjNkYjU4N2JdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFf
SGFzaF9Nb2Q6IFsweGFdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Vbmlx
dWVfTW9kOiBbY2JmNzFmYTIyOTFkODY0YWM4Nzk1ZTk3NDllNDJkYTQzMzEzMTA3MF0NCiAgICBG
cmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsweGFdDQogICAgRnJh
bWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogW2Y5OTM3M2VjMzI0NWM3MGE2
MzU1OWViNmIzMjU3MTgxYjQwZjE0ZTZdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFf
SGFzaF9Nb2RfRnVuYzogWzB4YV0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNo
X01vZF9GdW5jX09mZnNldDogWzRlNTc3M2RkZmFmNGNkMDVhNjBiZTRhODRhYzYyNDk4MTQ0ZDVi
ZGZdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6
IFsweGFdDQogICAgRnJhbWVbMDBdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbYmI2ZjBiZjBjMjcy
ZDE1MGRjZGZkNjk1ODY4YzRhODRmYmE5YjY5N10NCiAgICBGcmFtZVswMF0gIEQyICAgRnJhbWVH
cm91cEhhc2g6IFsweDBdDQogICAgRnJhbWVbMDFdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMjk5
ZDFmYjE2Njg0MDgzNjYwMTQxNjU1NDI4NWYzMWU3NmVkNzk4M10NCiAgICBGcmFtZVswMV0gIEQy
ICAgRnJhbWVHcm91cEhhc2g6IFsweDFdDQogICAgRnJhbWVbMDJdICBTVFIgIEZyYW1lR3JvdXBI
YXNoOiBbYWYzMzdhYjA3NmE5NmE5Mjc2N2NmNjcyNzMzODc2ZTRiODdlMDAyYV0NCiAgICBGcmFt
ZVswMl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDRdDQogICAgRnJhbWVbMDVdICBTVFIgIEZy
YW1lR3JvdXBIYXNoOiBbOTJiODgzMGVjNjNiN2Y0Zjg1YzVlY2FmYzUyZjg5NjFlZWIyNmM5ZF0N
CiAgICBGcmFtZVswNV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDVdDQogICAgRnJhbWVbMDZd
ICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMzJlODVkYWRkMGU4ZGIyMDdlYmI1Y2ZlYzQzYjUyNGNl
ODRmMmFlNl0NCiAgICBGcmFtZVswNl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDZdDQogICAg
RnJhbWVbMDddICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbNDE1NmI1ZGM1OWI5MThkNTJlODgzYjkz
OTc2NWQxOGRlYWFlYzhhN10NCiAgICBGcmFtZVswN10gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsw
eDddDQogICAgRnJhbWVbMDhdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMw
MGQzOWQzOGJiYzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswOF0gIEQyICAgRnJhbWVHcm91
cEhhc2g6IFsweDhdDQogICAgRnJhbWVbMDldICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2Vm
YzM4ZTYwODZjZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVswOV0gIEQyICAg
RnJhbWVHcm91cEhhc2g6IFsweDldDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9Vbmlx
dWVfU3RhY2tfTW9kdWxlczogWzB4OF0NCiAgICBGcmFtZVswOF0gICAgICAgQ29tcGxldGVTdGFj
a1dhbGsNCiAgICBGcmFtZVswMF0gICAgICAgSXNfVUlUaHJlYWQNCiAgICBGcmFtZVswMF0gIEQx
ICAgVGhyZWFkX0xhc3RTdGF0dXM6IFsweGMwMDAwMDM0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBU
aHJlYWRMb2NhbGU6IFsweDQwOV0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkUmVhZEFkZHJlc3M6
IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9BZGRyZXNzQXRQ
YWdlQm91bmRhcnk6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5l
YXJfbnVsbF9SRUFEOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBO
dW1iZXJfb2ZfU3RhY2tfRnJhbWVzOiBbMHhhXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfRnJh
bWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRfRnJhbWVfQ291bnQ6
IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3RhY2tfcmFuZ2U6IFsw
eDBdDQogICAgRnJhbWVbMDFdICAgICAgIElzX0lkbGVXYWl0Rm9yTWVzc2FnZQ0KICAgIEZyYW1l
WzAwXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAxXSAgICAgICBXYWl0X0FQSQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBiYWRwdHJfQXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMTQ4Nl0NCiAgICBG
cmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQlg6IFsweDAwMDAwMDAwMDAwMDAwMDFdDQog
ICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBbMHgwMDAwMDAwMDAwMDAwMDAy
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfRFg6IFsweDAwMDAwMDE4ZjRlZmY0NTBd
DQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TSTogWzB4MDAwMDAwMThmNGVmZjZmOF0N
CiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfREk6IFsweDAwMDAwMDAwMDAwMDAw
MDJdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDogWzB4MDAwMDAwMThmNGVmZjNj
OF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQlA6IFsweDAwMDAwMDAwMDAw
MDAwMDJdDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAw
N2ZmZDg3MGZhMTA0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOA0KICAgIEZyYW1l
WzAwXSAgRDEgICBtc3Jfcjk6IFsweDAwMDAwMWYwNGZhODAwMDBdDQogICAgRnJhbWVbMDBdICAg
ICAgIE5VTExfbXNyX3IxMA0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjExOiBbMHgwMDAwMDFm
MDRmYjRlNWMwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTINCiAgICBGcmFtZVsw
MF0gIEQxICAgbXNyX3IxMzogWzB4MDAwMDAwMDBmZmZmZmZmZl0NCiAgICBGcmFtZVswMF0gIEQx
ICAgc3RhY2thZGRyX21zcl9yMTQ6IFsweDAwMDAwMDE4ZjRlZmY0NTBdDQogICAgRnJhbWVbMDBd
ICBEMSAgIHN0YWNrYWRkcl9tc3JfcjE1OiBbMHgwMDAwMDAxOGY0ZWZmNmUyXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBJbnN0cnVjdGlvbl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg3MGZhMTA0XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBTdGFja19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsw
eDBdDQoNCiAgICBGcmFtZVswMF0gIFRyaWFnZSBTeW1ib2w6IFt3aW4zMnUhTnRVc2VyTXNnV2Fp
dEZvck11bHRpcGxlT2JqZWN0c0V4KzB4MTRdDQogICAgRnJhbWVbMDFdICBUcmlhZ2UgU3ltYm9s
OiBbVVNFUjMyIVJlYWxNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgrMHgxZV0NCiAgICBGcmFt
ZVswMl0gIFRyaWFnZSBTeW1ib2w6IFtDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hlZHVs
ZVdpdGhSdW5Mb29wKzB4OGI2MGRdDQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3ltYm9sOiBbQ29y
ZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcCsweDhhZTc3XQ0KICAg
IEZyYW1lWzA0XSAgVHJpYWdlIFN5bWJvbDogW0NvcmVGb3VuZGF0aW9uIUNGUmVhZFN0cmVhbVNj
aGVkdWxlV2l0aFJ1bkxvb3ArMHg4N2NlZF0NCiAgICBGcmFtZVswNV0gIFRyaWFnZSBTeW1ib2w6
IFtDRk5ldHdvcmshQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeSsweGQ4M10NCiAgICBGcmFt
ZVswNl0gIFRyaWFnZSBTeW1ib2w6IFtwdGhyZWFkVkMyIXB0aHJlYWRfcndsb2NrYXR0cl9pbml0
KzB4NTRiOV0NCiAgICBGcmFtZVswN10gIFRyaWFnZSBTeW1ib2w6IFt1Y3J0YmFzZSF0aHJlYWRf
c3RhcnQ8dW5zaWduZWQgaW50IChfX2NkZWNsKikrMHg0Ml0NCiAgICBGcmFtZVswOF0gIFRyaWFn
ZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQogICAgRnJhbWVb
MDldICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjFdDQoNCiAg
OCBJZDogMTdkYy4zNTljDQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3RlbVRpZDogWzB4MzU5Y10N
CiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rpb25fVGltZV8obXMpOiBb
MHgwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFkZHJlc3M6IFtjb21iYXNlIVJv
R2V0U2VydmVyQWN0aXZhdGFibGVDbGFzc2VzXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRT
dGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkODg5NWFkZDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0
YWNrX1NIQTFfSGFzaF9Nb2Q6IFs2YzVmMGY4NjdkNTQ4OGZlNjg4NWMzMmE3ZmViM2NiMjBlYWU2
YTFkXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kOiBbMHg4XQ0KICAg
IEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzhlOTkyZDk5ODVi
NWRkNzYyZDAzZjlmZWVjZjlkMGRjNjhhYWEwOTZdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNr
X1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHg4XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19T
SEExX0hhc2hfTW9kX0Z1bmM6IFs5ZmJjNWQ2M2VhMTY5MDcyYzYzZDk2MTJlZmViY2ViNzg5NDdi
MjZmXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweDhd
DQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsx
MDgyN2U0MmMxMTA1YTI3MjFlZmM5YTExMWZmZTY2YTJiZTUyNTY3XQ0KICAgIEZyYW1lWzAwXSAg
RDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMHg4XQ0KICAgIEZyYW1lWzAw
XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogW2QxNzVlNTRhNDEzODhmZjRhZGQyN2JlMTA4YzhjYmZh
YmVhMmI3NWZdDQogICAgRnJhbWVbMDBdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgwXQ0KICAg
IEZyYW1lWzAxXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzQ4ZjE4YTRkOWQ4Y2Q3YTcyMzViMjU5
MjI4MjczZjhiNzVkYmE1MTldDQogICAgRnJhbWVbMDFdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBb
MHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzVlOWQ4OTllY2ExYTMw
YmY5NDM4ZTU4MGM4YTM1MzAwY2FlMzgyYzBdDQogICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3Jv
dXBIYXNoOiBbMHg1XQ0KICAgIEZyYW1lWzA2XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzdlYTQ5
MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVbMDZdICBEMiAg
IEZyYW1lR3JvdXBIYXNoOiBbMHg2XQ0KICAgIEZyYW1lWzA3XSAgU1RSICBGcmFtZUdyb3VwSGFz
aDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQogICAgRnJhbWVb
MDddICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg3XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1i
ZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVsZXM6IFsweDRdDQogICAgRnJhbWVbMDZdICAgICAgIENv
bXBsZXRlU3RhY2tXYWxrDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZF9MYXN0U3RhdHVzOiBb
MHhjMDAwMDAwZF0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkTG9jYWxlOiBbMHg0MDldDQog
ICAgRnJhbWVbMDBdICBEMSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5OiBbMHgwMDAwMDAw
MDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfUkVBRDogWzB4MDAwMDAw
MDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1N0YWNrX0ZyYW1lczog
WzB4OF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBJZ25vcmVkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBGcmFtZXNfbm90X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgICAg
ICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAxXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBuZWFyX251bGxfQXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMDA1Yl0NCiAgICBGcmFtZVsw
MF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQlg6IFsweDAwMDAwMDAwMDAwMDAwMDFdDQogICAgRnJh
bWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBbMHgwMDAwMDAwMDAwMDAwMDAxXQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfRFg6IFsweDAwMDAwMDE4ZjRmZmY3NjBdDQogICAg
RnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251
bGxfQXJjaF9ESTogWzB4MDAwMDAwMDAwMDAwMDAwMV0NCiAgICBGcmFtZVswMF0gIEQxICAgc3Rh
Y2thZGRyX1NQOiBbMHgwMDAwMDAxOGY0ZmZmNDE4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFy
X251bGxfQXJjaF9CUDogWzB4MDAwMDAwMDAwMDAwMDQzNF0NCiAgICBGcmFtZVswMF0gIEQxICAg
TG9hZGVkTW9kdWxlX0FyY2hfSVA6IFsweDAwMDA3ZmZkODk0OGQ4YzRdDQogICAgRnJhbWVbMDBd
ICAgICAgIE5VTExfbXNyX3I4DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I5DQogICAg
RnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMA0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21z
cl9yMTENCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3IxMjogWzB4MDAwMDAwMDBmZmZmZmZmZl0N
CiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX21zcl9yMTM6IFsweDAwMDAwMDE4ZjRmZmY3
NjBdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxNA0KICAgIEZyYW1lWzAwXSAgICAg
ICBOVUxMX21zcl9yMTUNCiAgICBGcmFtZVswMF0gIEQxICAgSW5zdHJ1Y3Rpb25fUG9pbnRlcjog
WzB4MDAwMDdmZmQ4OTQ4ZDhjNF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfQXR0cmlidXRl
X0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3lt
Ym9sOiBbbnRkbGwhTnRXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKzB4MTRdDQogICAgRnJhbWVbMDFd
ICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMQkFTRSFXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgrMHhm
MF0NCiAgICBGcmFtZVswMl0gIFRyaWFnZSBTeW1ib2w6IFtjb21iYXNlIVJvR2V0U2VydmVyQWN0
aXZhdGFibGVDbGFzc2VzKzB4MTQ3Nl0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6IFtj
b21iYXNlIVJvR2V0U2VydmVyQWN0aXZhdGFibGVDbGFzc2VzKzB4MTJmMF0NCiAgICBGcmFtZVsw
NF0gIFRyaWFnZSBTeW1ib2w6IFtjb21iYXNlIVJvR2V0U2VydmVyQWN0aXZhdGFibGVDbGFzc2Vz
KzB4MTEwMF0NCiAgICBGcmFtZVswNV0gIFRyaWFnZSBTeW1ib2w6IFtjb21iYXNlIVJvR2V0U2Vy
dmVyQWN0aXZhdGFibGVDbGFzc2VzKzB4MTA4OV0NCiAgICBGcmFtZVswNl0gIFRyaWFnZSBTeW1i
b2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQogICAgRnJhbWVbMDddICBU
cmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjFdDQoNCiAgOSBJZDog
MTdkYy4yZmRjDQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3RlbVRpZDogWzB4MmZkY10NCiAgICBG
cmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgxMF0N
CiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbbnRkbGwhVHBwV29ya2Vy
VGhyZWFkXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAwMDA3
ZmZkODk0NDJhZDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFs5
ZjMxNzcwMDA5NmM3NTAxZmQyNGViNTExMmE5MTRkYjhmMmQ4NDk1XQ0KICAgIEZyYW1lWzAwXSAg
RDIgICBTdGFja19TSEExX0hhc2hfTW9kOiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFj
a19TSEExX0hhc2hfVW5pcXVlX01vZDogWzNmNDFlMzYyYTk2YzU5ODgyOTAwYzgzZDE1NDgxZGEz
NGI4NDkxMjhdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9k
OiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFs3
ODk3M2VkM2ZmMTExZDVhOWVjMTI0ODliMjM2NzQ0ZGMyYWQ5Nzg4XQ0KICAgIEZyYW1lWzAwXSAg
RDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweDRdDQogICAgRnJhbWVbMDBdICBTVFIg
IFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFswMWY0ZWFhOGJiZTQ3MzEyMzY2MmVi
ZDY3YTc1OWU0MjEwZDY2YzRkXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hf
TW9kX0Z1bmNfT2Zmc2V0OiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3VwSGFz
aDogWzI1NmNhNmNkMDI5OTk1OTI2MDE1YTAzMjEwMTAzYTcwYWM3MDU2MWVdDQogICAgRnJhbWVb
MDBdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFt
ZUdyb3VwSGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJhMDU5MDAwMzFhMDldDQog
ICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgyXQ0KICAgIEZyYW1lWzAzXSAg
U1RSICBGcmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4
OGFlNzhdDQogICAgRnJhbWVbMDNdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgzXQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVsZXM6IFsweDJdDQogICAg
RnJhbWVbMDFdICAgICAgIE50V29ya2VyVGhyZWFkDQogICAgRnJhbWVbMDJdICAgICAgIENvbXBs
ZXRlU3RhY2tXYWxrDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZF9MYXN0U3RhdHVzOiBbMHhj
MDAwMDAwZF0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkTG9jYWxlOiBbMHg0MDldDQogICAg
RnJhbWVbMDBdICBEMSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBCYWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5OiBbMHgwMDAwMDAwMDAw
MDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfUkVBRDogWzB4MDAwMDAwMDAw
MDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1N0YWNrX0ZyYW1lczogWzB4
NF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBJZ25vcmVkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBGcmFtZXNfbm90X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBX
YWl0X0FQSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9BWDogWzB4MDAwMDAw
MDAwMDAwMDFkM10NCiAgICBGcmFtZVswMF0gIEQxICAgQXJjaF9CWF9SZWdpc3RlcjogWzB4MDAw
MDAxZjA0ZjY1NGU4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQ1g6IFsw
eDAwMDAwMDAwMDAwMDAyMjhdDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfRFhfUmVnaXN0ZXI6
IFsweDAwMDAwMWYwNGY2NTRiMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfU0lfUmVnaXN0
ZXI6IFsweDAwMDAwMWYwMGJjY2FhYzBdDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfRElfUmVn
aXN0ZXI6IFsweDAwMDAwMWYwNGY2NTRlODBdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRk
cl9TUDogWzB4MDAwMDAwMThmNTBmZjczOF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNo
X0JQDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2Zm
ZDg5NDkwN2M0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOA0KICAgIEZyYW1lWzAw
XSAgRDEgICBOZWFyX05VTExfbXNyX3I5OiBbMHgwMDAwMDAwMDAwMDAwMDI5XQ0KICAgIEZyYW1l
WzAwXSAgICAgICBOVUxMX21zcl9yMTANCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3IxMTogWzB4
ZjI4YzVmZjk4MDAwMDAzNl0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEyDQogICAg
RnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMw0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21z
cl9yMTQNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjE1DQogICAgRnJhbWVbMDBdICBE
MSAgIEluc3RydWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OTA3YzRdDQogICAgRnJhbWVb
MDBdICBEMSAgIFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MTBdDQoN
CiAgICBGcmFtZVswMF0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JXb3JrVmlhV29y
a2VyRmFjdG9yeSsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVRw
cFdvcmtlclRocmVhZCsweDJmN10NCiAgICBGcmFtZVswMl0gIFRyaWFnZSBTeW1ib2w6IFtLRVJO
RUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3lt
Ym9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjFdDQoNCiAgMTAgSWQ6IDE3ZGMuMmU5
OA0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsweDJlOThdDQogICAgRnJhbWVbMDBd
ICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCiAgICBGcmFt
ZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbbnRkbGwhVHBwV29ya2VyVGhyZWFkXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkODk0NDJh
ZDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFs5ZjMxNzcwMDA5
NmM3NTAxZmQyNGViNTExMmE5MTRkYjhmMmQ4NDk1XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFj
a19TSEExX0hhc2hfTW9kOiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hh
c2hfVW5pcXVlX01vZDogWzNmNDFlMzYyYTk2YzU5ODgyOTAwYzgzZDE1NDgxZGEzNGI4NDkxMjhd
DQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHg0XQ0K
ICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFs3ODk3M2VkM2Zm
MTExZDVhOWVjMTI0ODliMjM2NzQ0ZGMyYWQ5Nzg4XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFj
a19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweDRdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NI
QTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFswMWY0ZWFhOGJiZTQ3MzEyMzY2MmViZDY3YTc1OWU0
MjEwZDY2YzRkXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNf
T2Zmc2V0OiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzI1NmNh
NmNkMDI5OTk1OTI2MDE1YTAzMjEwMTAzYTcwYWM3MDU2MWVdDQogICAgRnJhbWVbMDBdICBEMiAg
IEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFtZUdyb3VwSGFz
aDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVb
MDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgyXQ0KICAgIEZyYW1lWzAzXSAgU1RSICBGcmFt
ZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQog
ICAgRnJhbWVbMDNdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgzXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVsZXM6IFsweDJdDQogICAgRnJhbWVbMDFd
ICAgICAgIE50V29ya2VyVGhyZWFkDQogICAgRnJhbWVbMDJdICAgICAgIENvbXBsZXRlU3RhY2tX
YWxrDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAw
MF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEw
MDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweDRdDQog
ICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0g
IEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgRnJh
bWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0gICAgICAgV2FpdF9B
UEkNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAwMDAw
MDAxZDNdDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfQlhfUmVnaXN0ZXI6IFsweDAwMDAwMWYw
NGY2NTgzYjBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBbMHgwMDAw
MDAwMDAwMDAwMjI4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX0RYX1JlZ2lzdGVyOiBbMHgw
MDAwMDFmMDRmNjU4MDMwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX1NJX1JlZ2lzdGVyOiBb
MHgwMDAwMDFmMDBiY2NhYWMwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX0RJX1JlZ2lzdGVy
OiBbMHgwMDAwMDFmMDRmNjU4M2IwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfU1A6
IFsweDAwMDAwMDE4ZjUxZmY5YzhdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CUA0K
ICAgIEZyYW1lWzAwXSAgRDEgICBMb2FkZWRNb2R1bGVfQXJjaF9JUDogWzB4MDAwMDdmZmQ4OTQ5
MDdjNF0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjgNCiAgICBGcmFtZVswMF0gIEQx
ICAgTmVhcl9OVUxMX21zcl9yOTogWzB4MDAwMDAwMDAwMDAwMDEwMF0NCiAgICBGcmFtZVswMF0g
ICAgICAgTk9QX21zcl9yMTANCiAgICBGcmFtZVswMF0gIEQxICAgbG9hZGVkbW9kdWxlX21zcl9y
MTE6IFsweDAwMDA3ZmZkODkyOTliNjBdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3Ix
Mg0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0gICAgICAg
TlVMTF9tc3JfcjE0DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxNQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBJbnN0cnVjdGlvbl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDkwN2M0XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBTdGFja19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsw
eDFmXQ0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yV29y
a1ZpYVdvcmtlckZhY3RvcnkrMHgxNF0NCiAgICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtu
dGRsbCFUcHBXb3JrZXJUaHJlYWQrMHgyZjddDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9s
OiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0KICAgIEZyYW1lWzAzXSAgVHJp
YWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxXQ0KDQogIDExIElkOiAx
N2RjLjVkY2MNCiAgICBGcmFtZVswMF0gIEQxICAgU3lzdGVtVGlkOiBbMHg1ZGNjXQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQog
ICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczogW250ZGxsIVRwcFdvcmtlclRo
cmVhZF0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2Zm
ZDg5NDQyYWQwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kOiBbOWYz
MTc3MDAwOTZjNzUwMWZkMjRlYjUxMTJhOTE0ZGI4ZjJkODQ5NV0NCiAgICBGcmFtZVswMF0gIEQy
ICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tf
U0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFszZjQxZTM2MmE5NmM1OTg4MjkwMGM4M2QxNTQ4MWRhMzRi
ODQ5MTI4XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDog
WzB4NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbNzg5
NzNlZDNmZjExMWQ1YTllYzEyNDg5YjIzNjc0NGRjMmFkOTc4OF0NCiAgICBGcmFtZVswMF0gIEQy
ICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBT
dGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMDFmNGVhYThiYmU0NzMxMjM2NjJlYmQ2
N2E3NTllNDIxMGQ2NmM0ZF0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01v
ZF9GdW5jX09mZnNldDogWzB4NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6
IFsyNTZjYTZjZDAyOTk5NTkyNjAxNWEwMzIxMDEwM2E3MGFjNzA1NjFlXQ0KICAgIEZyYW1lWzAw
XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVH
cm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAg
IEZyYW1lWzAyXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4Ml0NCiAgICBGcmFtZVswM10gIFNU
UiAgRnJhbWVHcm91cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhh
ZTc4XQ0KICAgIEZyYW1lWzAzXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4M10NCiAgICBGcmFt
ZVswMF0gIEQxICAgTnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVzOiBbMHgyXQ0KICAgIEZy
YW1lWzAxXSAgICAgICBOdFdvcmtlclRocmVhZA0KICAgIEZyYW1lWzAyXSAgICAgICBDb21wbGV0
ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgICAgICBJc19VSVRocmVhZA0KICAgIEZyYW1lWzAw
XSAgRDEgICBUaHJlYWRMb2NhbGU6IFsweDQwOV0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkUmVh
ZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9B
ZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBd
ICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tfRnJhbWVzOiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBCYWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRfRnJh
bWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3RhY2tf
cmFuZ2U6IFsweDBdDQogICAgRnJhbWVbMDBdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBd
ICBEMSAgIG5lYXJfbnVsbF9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAwMWQzXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBBcmNoX0JYX1JlZ2lzdGVyOiBbMHgwMDAwMDFmMDUyMDIyMTMwXQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9DWDogWzB4MDAwMDAwMDAwMDAwMDAxOF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgQXJjaF9EWF9SZWdpc3RlcjogWzB4MDAwMDAxZjA1MjAyMWRiMF0N
CiAgICBGcmFtZVswMF0gIEQxICAgQXJjaF9TSV9SZWdpc3RlcjogWzB4MDAwMDAxZjAwYmNiMGI1
MF0NCiAgICBGcmFtZVswMF0gIEQxICAgQXJjaF9ESV9SZWdpc3RlcjogWzB4MDAwMDAxZjA1MjAy
MjEzMF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY1MmZm
YzE4XQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfQlANCiAgICBGcmFtZVswMF0gIEQx
ICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6IFsweDAwMDA3ZmZkODk0OTA3YzRdDQogICAgRnJhbWVb
MDBdICAgICAgIE5VTExfbXNyX3I4DQogICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yOTogWzB4MDAw
MDAxZjA1MjViYjVlMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3IxMDogWzB4MDAwMDAwMDA3
ZmZlMDNiMF0NCiAgICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTE6IFsweDAwMDAw
MDAwMDAwMDAyNDZdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMg0KICAgIEZyYW1l
WzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjE0
DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxNQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJ
bnN0cnVjdGlvbl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDkwN2M0XQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBTdGFja19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDFmXQ0KDQogICAg
RnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yV29ya1ZpYVdvcmtlckZh
Y3RvcnkrMHgxNF0NCiAgICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFUcHBXb3Jr
ZXJUaHJlYWQrMHgyZjddDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIh
QmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDog
W250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxXQ0KDQogIDEyIElkOiAxN2RjLjRmNTANCiAg
ICBGcmFtZVswMF0gIEQxICAgU3lzdGVtVGlkOiBbMHg0ZjUwXQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQogICAgRnJhbWVbMDBd
ICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczogW2F0aXVtZDY0IVhkeEluaXRYb3BBZGFwdGVyU2Vy
dmljZXNdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0YXJ0QWRkcmVzczogWzB4MDAwMDdm
ZmQzN2QyNmQwOF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzA3
MmRhNjllNWM4ZWJiNDg0YjI3YzhiOGZkNzg0NGI5OThlMTIwNjNdDQogICAgRnJhbWVbMDBdICBE
MiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNr
X1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbOTViYzY1MjQxYzczNjVhMGZkYWIxN2Y1ZDFiYTM2ZmVm
ZDYwZmY2NV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6
IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzRl
ODM2YmJjNzUwOTNiYmU0M2RiODlkODYxMGY4ODhmY2Y1ZGFjODZdDQogICAgRnJhbWVbMDBdICBE
MiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAg
U3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzk5NDkwZGJhNjhhNjE1MTJiYjhjNjdk
ZDliYzZkYTYwYjBlYTlhMzZdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9N
b2RfRnVuY19PZmZzZXQ6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIEZyYW1lR3JvdXBIYXNo
OiBbMDg2YjQxZjFkMTdmY2Q3OTZlNzg5YjQzMTE4MjhlNTFkY2UxODNlYl0NCiAgICBGcmFtZVsw
MF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDBdDQogICAgRnJhbWVbMDFdICBTVFIgIEZyYW1l
R3JvdXBIYXNoOiBbNDc3ODIwOThhOTA3MWNkZjY1MTJlYjFiMmVmNDI2NWY1ZjQyOWZmYl0NCiAg
ICBGcmFtZVswMV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDFdDQogICAgRnJhbWVbMDJdICBT
VFIgIEZyYW1lR3JvdXBIYXNoOiBbZWZmODMzM2EwNTQ0Mzg1YWY1OWM2ZjFkYzg4MDE5NDcxMGVh
MTc2NF0NCiAgICBGcmFtZVswMl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDNdDQogICAgRnJh
bWVbMDRdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMwMGQzOWQzOGJiYzk1
YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswNF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDRd
DQogICAgRnJhbWVbMDVdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2VmYzM4ZTYwODZjZWJi
MTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVswNV0gIEQyICAgRnJhbWVHcm91cEhh
c2g6IFsweDVdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9VbmlxdWVfU3RhY2tfTW9k
dWxlczogWzB4NF0NCiAgICBGcmFtZVswNF0gICAgICAgQ29tcGxldGVTdGFja1dhbGsNCiAgICBG
cmFtZVswMF0gIEQxICAgVGhyZWFkX0xhc3RTdGF0dXM6IFsweGMwMDAwMDBkXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6IFsweDQwOV0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFk
UmVhZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEJh
ZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVb
MDBdICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tfRnJhbWVzOiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRf
RnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3Rh
Y2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVbMDBdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVb
MDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0FY
OiBbMHgwMDAwMDAwMDAwMDAwMDA0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfQlgN
CiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQ1g6IFsweDAwMDAwMDAwMDAwMDA1
MTRdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9EWA0KICAgIEZyYW1lWzAwXSAgICAg
ICBudWxsX0FyY2hfU0kNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfREk6IFsw
eDAwMDAwMDAwMDAwMDA1MTRdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDogWzB4
MDAwMDAwMThmNTNmZmIyOF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0JQDQogICAg
RnJhbWVbMDBdICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg5NDhjZGY0
XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOA0KICAgIEZyYW1lWzAwXSAgICAgICBO
VUxMX21zcl9yOQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTANCiAgICBGcmFtZVsw
MF0gICAgICAgTlVMTF9tc3JfcjExDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMg0K
ICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0gIEQxICAgTmVh
cl9OVUxMX21zcl9yMTQ6IFsweDAwMDAwMDAwMDAwMDA1MTRdDQogICAgRnJhbWVbMDBdICAgICAg
IE5VTExfbXNyX3IxNQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJbnN0cnVjdGlvbl9Qb2ludGVyOiBb
MHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19BdHRyaWJ1dGVf
RXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQoNCiAgICBGcmFtZVswMF0gIFRyaWFnZSBTeW1i
b2w6IFtudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3QrMHgxNF0NCiAgICBGcmFtZVswMV0gIFRy
aWFnZSBTeW1ib2w6IFtLRVJORUxCQVNFIVdhaXRGb3JTaW5nbGVPYmplY3RFeCsweDhlXQ0KICAg
IEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW2F0aXVtZDY0IU9wZW5BZGFwdGVyKzB4Njc1NGRd
DQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3ltYm9sOiBbYXRpdW1kNjQhWGR4SW5pdFhvcEFkYXB0
ZXJTZXJ2aWNlcysweDgyYzg4XQ0KICAgIEZyYW1lWzA0XSAgVHJpYWdlIFN5bWJvbDogW0tFUk5F
TDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNF0NCiAgICBGcmFtZVswNV0gIFRyaWFnZSBTeW1i
b2w6IFtudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMV0NCg0KICAxMyBJZDogMTdkYy41OGIw
DQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3RlbVRpZDogWzB4NThiMF0NCiAgICBGcmFtZVswMF0g
IEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgxMF0NCiAgICBGcmFt
ZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbYXRpdW1kNjQhWGR4SW5pdFhvcEFkYXB0
ZXJTZXJ2aWNlc10NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbMHgw
MDAwN2ZmZDM3ZDI2ZDA4XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9k
OiBbMDcyZGE2OWU1YzhlYmI0ODRiMjdjOGI4ZmQ3ODQ0Yjk5OGUxMjA2M10NCiAgICBGcmFtZVsw
MF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAg
U3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFs5NWJjNjUyNDFjNzM2NWEwZmRhYjE3ZjVkMWJh
MzZmZWZkNjBmZjY1XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfVW5pcXVl
X01vZDogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5j
OiBbNGU4MzZiYmM3NTA5M2JiZTQzZGI4OWQ4NjEwZjg4OGZjZjVkYWM4Nl0NCiAgICBGcmFtZVsw
MF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAg
U1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbOTk0OTBkYmE2OGE2MTUxMmJi
OGM2N2RkOWJjNmRhNjBiMGVhOWEzNl0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9I
YXNoX01vZF9GdW5jX09mZnNldDogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAgRnJhbWVHcm91
cEhhc2g6IFswODZiNDFmMWQxN2ZjZDc5NmU3ODliNDMxMTgyOGU1MWRjZTE4M2ViXQ0KICAgIEZy
YW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MF0NCiAgICBGcmFtZVswMV0gIFNUUiAg
RnJhbWVHcm91cEhhc2g6IFs0Nzc4MjA5OGE5MDcxY2RmNjUxMmViMWIyZWY0MjY1ZjVmNDI5ZmZi
XQ0KICAgIEZyYW1lWzAxXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MV0NCiAgICBGcmFtZVsw
Ml0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFtlZmY4MzMzYTA1NDQzODVhZjU5YzZmMWRjODgwMTk0
NzEwZWExNzY0XQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4M10NCiAg
ICBGcmFtZVswNF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4
YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzA0XSAgRDIgICBGcmFtZUdyb3VwSGFzaDog
WzB4NF0NCiAgICBGcmFtZVswNV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswYjBjZWZjMzhlNjA4
NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZyYW1lWzA1XSAgRDIgICBGcmFtZUdy
b3VwSGFzaDogWzB4NV0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1VuaXF1ZV9TdGFj
a19Nb2R1bGVzOiBbMHg0XQ0KICAgIEZyYW1lWzA0XSAgICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0K
ICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRfTGFzdFN0YXR1czogWzB4YzAwMDAwMGRdDQogICAg
RnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBG
cmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAg
RnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweDZdDQogICAgRnJhbWVb
MDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgSWdu
b3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgRnJhbWVzX25vdF9p
bl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0gICAgICAgV2FpdF9BUEkNCiAgICBG
cmFtZVswMV0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0Fy
Y2hfQVg6IFsweDAwMDAwMDAwMDAwMDAwMDRdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJj
aF9CWA0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9DWDogWzB4MDAwMDAwMDAw
MDAwMDUwNF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0RYDQogICAgRnJhbWVbMDBd
ICAgICAgIG51bGxfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9E
STogWzB4MDAwMDAwMDAwMDAwMDUwNF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX1NQ
OiBbMHgwMDAwMDAxOGY1NGZmODI4XQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfQlAN
CiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6IFsweDAwMDA3ZmZkODk0
OGNkZjRdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I4DQogICAgRnJhbWVbMDBdICAg
ICAgIE5VTExfbXNyX3I5DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMA0KICAgIEZy
YW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTENCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3Jf
cjEyDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMw0KICAgIEZyYW1lWzAwXSAgRDEg
ICBOZWFyX05VTExfbXNyX3IxNDogWzB4MDAwMDAwMDAwMDAwMDUwNF0NCiAgICBGcmFtZVswMF0g
ICAgICAgTlVMTF9tc3JfcjE1DQogICAgRnJhbWVbMDBdICBEMSAgIEluc3RydWN0aW9uX1BvaW50
ZXI6IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0F0dHJp
YnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCg0KICAgIEZyYW1lWzAwXSAgVHJpYWdl
IFN5bWJvbDogW250ZGxsIU50V2FpdEZvclNpbmdsZU9iamVjdCsweDE0XQ0KICAgIEZyYW1lWzAx
XSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTEJBU0UhV2FpdEZvclNpbmdsZU9iamVjdEV4KzB4OGVd
DQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbYXRpdW1kNjQhT3BlbkFkYXB0ZXIrMHg2
NzU0ZF0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6IFthdGl1bWQ2NCFYZHhJbml0WG9w
QWRhcHRlclNlcnZpY2VzKzB4ODJjODhdDQogICAgRnJhbWVbMDRdICBUcmlhZ2UgU3ltYm9sOiBb
S0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0KICAgIEZyYW1lWzA1XSAgVHJpYWdl
IFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxXQ0KDQogIDE0IElkOiAxN2Rj
LjM5ZmMNCiAgICBGcmFtZVswMF0gIEQxICAgU3lzdGVtVGlkOiBbMHgzOWZjXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQogICAg
RnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczogW2F0aXVtZDY0IVhkeEluaXRYb3BB
ZGFwdGVyU2VydmljZXNdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0YXJ0QWRkcmVzczog
WzB4MDAwMDdmZmQzN2QyNmQwOF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNo
X01vZDogWzA3MmRhNjllNWM4ZWJiNDg0YjI3YzhiOGZkNzg0NGI5OThlMTIwNjNdDQogICAgRnJh
bWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsweDZdDQogICAgRnJhbWVbMDBdICBT
VFIgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbOTViYzY1MjQxYzczNjVhMGZkYWIxN2Y1
ZDFiYTM2ZmVmZDYwZmY2NV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX1Vu
aXF1ZV9Nb2Q6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Rf
RnVuYzogWzRlODM2YmJjNzUwOTNiYmU0M2RiODlkODYxMGY4ODhmY2Y1ZGFjODZdDQogICAgRnJh
bWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4Nl0NCiAgICBGcmFtZVsw
MF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzk5NDkwZGJhNjhhNjE1
MTJiYjhjNjdkZDliYzZkYTYwYjBlYTlhMzZdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NI
QTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIEZyYW1l
R3JvdXBIYXNoOiBbMDg2YjQxZjFkMTdmY2Q3OTZlNzg5YjQzMTE4MjhlNTFkY2UxODNlYl0NCiAg
ICBGcmFtZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDBdDQogICAgRnJhbWVbMDFdICBT
VFIgIEZyYW1lR3JvdXBIYXNoOiBbNDc3ODIwOThhOTA3MWNkZjY1MTJlYjFiMmVmNDI2NWY1ZjQy
OWZmYl0NCiAgICBGcmFtZVswMV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDFdDQogICAgRnJh
bWVbMDJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbZWZmODMzM2EwNTQ0Mzg1YWY1OWM2ZjFkYzg4
MDE5NDcxMGVhMTc2NF0NCiAgICBGcmFtZVswMl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDNd
DQogICAgRnJhbWVbMDRdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMwMGQz
OWQzOGJiYzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswNF0gIEQyICAgRnJhbWVHcm91cEhh
c2g6IFsweDRdDQogICAgRnJhbWVbMDVdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2VmYzM4
ZTYwODZjZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVswNV0gIEQyICAgRnJh
bWVHcm91cEhhc2g6IFsweDVdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9VbmlxdWVf
U3RhY2tfTW9kdWxlczogWzB4NF0NCiAgICBGcmFtZVswNF0gICAgICAgQ29tcGxldGVTdGFja1dh
bGsNCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkX0xhc3RTdGF0dXM6IFsweGMwMDAwMDBkXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6IFsweDQwOV0NCiAgICBGcmFtZVswMF0g
IEQxICAgQmFkUmVhZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBd
ICBEMSAgIEJhZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQog
ICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tfRnJhbWVzOiBbMHg2XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAg
IElnbm9yZWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEZyYW1lc19u
b3RfaW5fc3RhY2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVbMDBdICAgICAgIFdhaXRfQVBJDQog
ICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVs
bF9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAwMDA0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxs
X0FyY2hfQlgNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQ1g6IFsweDAwMDAw
MDAwMDAwMDA1ZDhdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9EWA0KICAgIEZyYW1l
WzAwXSAgICAgICBudWxsX0FyY2hfU0kNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0Fy
Y2hfREk6IFsweDAwMDAwMDAwMDAwMDA1ZDhdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRk
cl9TUDogWzB4MDAwMDAwMThmNTVmZmIxOF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNo
X0JQDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2Zm
ZDg5NDhjZGY0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOA0KICAgIEZyYW1lWzAw
XSAgICAgICBOVUxMX21zcl9yOQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTANCiAg
ICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjExDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExf
bXNyX3IxMg0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0g
IEQxICAgTmVhcl9OVUxMX21zcl9yMTQ6IFsweDAwMDAwMDAwMDAwMDA1ZDhdDQogICAgRnJhbWVb
MDBdICAgICAgIE5VTExfbXNyX3IxNQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJbnN0cnVjdGlvbl9Q
b2ludGVyOiBbMHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19B
dHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQoNCiAgICBGcmFtZVswMF0gIFRy
aWFnZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3QrMHgxNF0NCiAgICBGcmFt
ZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUxCQVNFIVdhaXRGb3JTaW5nbGVPYmplY3RFeCsw
eDhlXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW2F0aXVtZDY0IU9wZW5BZGFwdGVy
KzB4Njc1NGRdDQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3ltYm9sOiBbYXRpdW1kNjQhWGR4SW5p
dFhvcEFkYXB0ZXJTZXJ2aWNlcysweDgyYzg4XQ0KICAgIEZyYW1lWzA0XSAgVHJpYWdlIFN5bWJv
bDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNF0NCiAgICBGcmFtZVswNV0gIFRy
aWFnZSBTeW1ib2w6IFtudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMV0NCg0KICAxNSBJZDog
MTdkYy40N2JjDQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3RlbVRpZDogWzB4NDdiY10NCiAgICBG
cmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0K
ICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFkZHJlc3M6IFthdGl1bWQ2NCFYZHhJbml0
WG9wQWRhcHRlclNlcnZpY2VzXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJl
c3M6IFsweDAwMDA3ZmZkMzdkMjZkMDhdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFf
SGFzaF9Nb2Q6IFswNzJkYTY5ZTVjOGViYjQ4NGIyN2M4YjhmZDc4NDRiOTk4ZTEyMDYzXQ0KICAg
IEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kOiBbMHg2XQ0KICAgIEZyYW1lWzAw
XSAgU1RSICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzk1YmM2NTI0MWM3MzY1YTBmZGFi
MTdmNWQxYmEzNmZlZmQ2MGZmNjVdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFz
aF9VbmlxdWVfTW9kOiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hf
TW9kX0Z1bmM6IFs0ZTgzNmJiYzc1MDkzYmJlNDNkYjg5ZDg2MTBmODg4ZmNmNWRhYzg2XQ0KICAg
IEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweDZdDQogICAgRnJh
bWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFs5OTQ5MGRiYTY4
YTYxNTEyYmI4YzY3ZGQ5YmM2ZGE2MGIwZWE5YTM2XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFj
a19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBG
cmFtZUdyb3VwSGFzaDogWzA4NmI0MWYxZDE3ZmNkNzk2ZTc4OWI0MzExODI4ZTUxZGNlMTgzZWJd
DQogICAgRnJhbWVbMDBdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgwXQ0KICAgIEZyYW1lWzAx
XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzQ3NzgyMDk4YTkwNzFjZGY2NTEyZWIxYjJlZjQyNjVm
NWY0MjlmZmJdDQogICAgRnJhbWVbMDFdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAg
IEZyYW1lWzAyXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogW2VmZjgzMzNhMDU0NDM4NWFmNTljNmYx
ZGM4ODAxOTQ3MTBlYTE3NjRdDQogICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBb
MHgzXQ0KICAgIEZyYW1lWzA0XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzdlYTQ5MmZlYjE0MTlj
MDBkMzlkMzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVbMDRdICBEMiAgIEZyYW1lR3Jv
dXBIYXNoOiBbMHg0XQ0KICAgIEZyYW1lWzA1XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzBiMGNl
ZmMzOGU2MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQogICAgRnJhbWVbMDVdICBEMiAg
IEZyYW1lR3JvdXBIYXNoOiBbMHg1XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfVW5p
cXVlX1N0YWNrX01vZHVsZXM6IFsweDRdDQogICAgRnJhbWVbMDRdICAgICAgIENvbXBsZXRlU3Rh
Y2tXYWxrDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZF9MYXN0U3RhdHVzOiBbMHhjMDAwMDAw
ZF0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkTG9jYWxlOiBbMHg0MDldDQogICAgRnJhbWVb
MDBdICBEMSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBCYWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5OiBbMHgwMDAwMDAwMDAwMDAxMDAw
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfUkVBRDogWzB4MDAwMDAwMDAwMDAwMTAw
MF0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1N0YWNrX0ZyYW1lczogWzB4Nl0NCiAg
ICBGcmFtZVswMF0gIEQxICAgQmFkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBJZ25vcmVkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBGcmFt
ZXNfbm90X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBXYWl0X0FQ
SQ0KICAgIEZyYW1lWzAxXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFy
X251bGxfQXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMDAwNF0NCiAgICBGcmFtZVswMF0gICAgICAg
bnVsbF9BcmNoX0JYDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBbMHgw
MDAwMDAwMDAwMDAwNWM4XQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfRFgNCiAgICBG
cmFtZVswMF0gICAgICAgbnVsbF9BcmNoX1NJDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVs
bF9BcmNoX0RJOiBbMHgwMDAwMDAwMDAwMDAwNWM4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFj
a2FkZHJfU1A6IFsweDAwMDAwMDE4ZjU2ZmY2ZjhdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxf
QXJjaF9CUA0KICAgIEZyYW1lWzAwXSAgRDEgICBMb2FkZWRNb2R1bGVfQXJjaF9JUDogWzB4MDAw
MDdmZmQ4OTQ4Y2RmNF0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjgNCiAgICBGcmFt
ZVswMF0gICAgICAgTlVMTF9tc3JfcjkNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEw
DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMQ0KICAgIEZyYW1lWzAwXSAgICAgICBO
VUxMX21zcl9yMTINCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEzDQogICAgRnJhbWVb
MDBdICBEMSAgIE5lYXJfTlVMTF9tc3JfcjE0OiBbMHgwMDAwMDAwMDAwMDAwNWM4XQ0KICAgIEZy
YW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTUNCiAgICBGcmFtZVswMF0gIEQxICAgSW5zdHJ1Y3Rp
b25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4OTQ4Y2RmNF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3Rh
Y2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHhmXQ0KDQogICAgRnJhbWVbMDBd
ICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yU2luZ2xlT2JqZWN0KzB4MTRdDQogICAg
RnJhbWVbMDFdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMQkFTRSFXYWl0Rm9yU2luZ2xlT2JqZWN0
RXgrMHg4ZV0NCiAgICBGcmFtZVswMl0gIFRyaWFnZSBTeW1ib2w6IFthdGl1bWQ2NCFPcGVuQWRh
cHRlcisweDY3NTRkXQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDogW2F0aXVtZDY0IVhk
eEluaXRYb3BBZGFwdGVyU2VydmljZXMrMHg4MmM4OF0NCiAgICBGcmFtZVswNF0gIFRyaWFnZSBT
eW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQogICAgRnJhbWVbMDVd
ICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjFdDQoNCiAgMTYg
SWQ6IDE3ZGMuM2I4OA0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsweDNiODhdDQog
ICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4
MF0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbYXRpdW1kNjQhWGR4
SW5pdFhvcEFkYXB0ZXJTZXJ2aWNlc10NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkU3RhcnRB
ZGRyZXNzOiBbMHgwMDAwN2ZmZDM3ZDI2ZDA4XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19T
SEExX0hhc2hfTW9kOiBbMDcyZGE2OWU1YzhlYmI0ODRiMjdjOGI4ZmQ3ODQ0Yjk5OGUxMjA2M10N
CiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4Nl0NCiAgICBGcmFt
ZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFs5NWJjNjUyNDFjNzM2NWEw
ZmRhYjE3ZjVkMWJhMzZmZWZkNjBmZjY1XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEEx
X0hhc2hfVW5pcXVlX01vZDogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9I
YXNoX01vZF9GdW5jOiBbNGU4MzZiYmM3NTA5M2JiZTQzZGI4OWQ4NjEwZjg4OGZjZjVkYWM4Nl0N
CiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbMHg2XQ0KICAg
IEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbOTk0OTBk
YmE2OGE2MTUxMmJiOGM2N2RkOWJjNmRhNjBiMGVhOWEzNl0NCiAgICBGcmFtZVswMF0gIEQyICAg
U3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNU
UiAgRnJhbWVHcm91cEhhc2g6IFswODZiNDFmMWQxN2ZjZDc5NmU3ODliNDMxMTgyOGU1MWRjZTE4
M2ViXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MF0NCiAgICBGcmFt
ZVswMV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs0Nzc4MjA5OGE5MDcxY2RmNjUxMmViMWIyZWY0
MjY1ZjVmNDI5ZmZiXQ0KICAgIEZyYW1lWzAxXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MV0N
CiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFtlZmY4MzMzYTA1NDQzODVhZjU5
YzZmMWRjODgwMTk0NzEwZWExNzY0XQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFtZUdyb3VwSGFz
aDogWzB4M10NCiAgICBGcmFtZVswNF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3ZWE0OTJmZWIx
NDE5YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzA0XSAgRDIgICBGcmFt
ZUdyb3VwSGFzaDogWzB4NF0NCiAgICBGcmFtZVswNV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFsw
YjBjZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZyYW1lWzA1XSAg
RDIgICBGcmFtZUdyb3VwSGFzaDogWzB4NV0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29m
X1VuaXF1ZV9TdGFja19Nb2R1bGVzOiBbMHg0XQ0KICAgIEZyYW1lWzA0XSAgICAgICBDb21wbGV0
ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRfTGFzdFN0YXR1czogWzB4YzAw
MDAwMGRdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBG
cmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAw
MTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAw
MDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweDZd
DQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVsw
MF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAg
RnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0gICAgICAgV2Fp
dF9BUEkNCiAgICBGcmFtZVswMV0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMF0gIEQxICAg
bmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAwMDAwMDAwMDRdDQogICAgRnJhbWVbMDBdICAg
ICAgIG51bGxfQXJjaF9CWA0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9DWDog
WzB4MDAwMDAwMDAwMDAwMDViOF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0RYDQog
ICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFy
X251bGxfQXJjaF9ESTogWzB4MDAwMDAwMDAwMDAwMDViOF0NCiAgICBGcmFtZVswMF0gIEQxICAg
c3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY1N2ZmOGE4XQ0KICAgIEZyYW1lWzAwXSAgICAgICBu
dWxsX0FyY2hfQlANCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6IFsw
eDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I4DQogICAg
RnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I5DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNy
X3IxMA0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTENCiAgICBGcmFtZVswMF0gICAg
ICAgTlVMTF9tc3JfcjEyDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMw0KICAgIEZy
YW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxNDogWzB4MDAwMDAwMDAwMDAwMDViOF0NCiAg
ICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjE1DQogICAgRnJhbWVbMDBdICBEMSAgIEluc3Ry
dWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICBEMSAg
IFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCg0KICAgIEZyYW1l
WzAwXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIU50V2FpdEZvclNpbmdsZU9iamVjdCsweDE0XQ0K
ICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTEJBU0UhV2FpdEZvclNpbmdsZU9i
amVjdEV4KzB4OGVdDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbYXRpdW1kNjQhT3Bl
bkFkYXB0ZXIrMHg2NzU0ZF0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6IFthdGl1bWQ2
NCFYZHhJbml0WG9wQWRhcHRlclNlcnZpY2VzKzB4ODJjODhdDQogICAgRnJhbWVbMDRdICBUcmlh
Z2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0KICAgIEZyYW1l
WzA1XSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxXQ0KDQog
IDE3IElkOiAxN2RjLjRiMWMNCiAgICBGcmFtZVswMF0gIEQxICAgU3lzdGVtVGlkOiBbMHg0YjFj
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9UaW1lXyhtcyk6
IFsweDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczogW2F0aXVtZDY0
IVhkeEluaXRYb3BBZGFwdGVyU2VydmljZXNdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0
YXJ0QWRkcmVzczogWzB4MDAwMDdmZmQzN2QyNmQwOF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX01vZDogWzA3MmRhNjllNWM4ZWJiNDg0YjI3YzhiOGZkNzg0NGI5OThlMTIw
NjNdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsweDZdDQogICAg
RnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbOTViYzY1MjQxYzcz
NjVhMGZkYWIxN2Y1ZDFiYTM2ZmVmZDYwZmY2NV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tf
U0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NI
QTFfSGFzaF9Nb2RfRnVuYzogWzRlODM2YmJjNzUwOTNiYmU0M2RiODlkODYxMGY4ODhmY2Y1ZGFj
ODZdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4Nl0N
CiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzk5
NDkwZGJhNjhhNjE1MTJiYjhjNjdkZDliYzZkYTYwYjBlYTlhMzZdDQogICAgRnJhbWVbMDBdICBE
MiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsweDZdDQogICAgRnJhbWVbMDBd
ICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMDg2YjQxZjFkMTdmY2Q3OTZlNzg5YjQzMTE4MjhlNTFk
Y2UxODNlYl0NCiAgICBGcmFtZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDBdDQogICAg
RnJhbWVbMDFdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbNDc3ODIwOThhOTA3MWNkZjY1MTJlYjFi
MmVmNDI2NWY1ZjQyOWZmYl0NCiAgICBGcmFtZVswMV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsw
eDFdDQogICAgRnJhbWVbMDJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbZWZmODMzM2EwNTQ0Mzg1
YWY1OWM2ZjFkYzg4MDE5NDcxMGVhMTc2NF0NCiAgICBGcmFtZVswMl0gIEQyICAgRnJhbWVHcm91
cEhhc2g6IFsweDNdDQogICAgRnJhbWVbMDRdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDky
ZmViMTQxOWMwMGQzOWQzOGJiYzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswNF0gIEQyICAg
RnJhbWVHcm91cEhhc2g6IFsweDRdDQogICAgRnJhbWVbMDVdICBTVFIgIEZyYW1lR3JvdXBIYXNo
OiBbMGIwY2VmYzM4ZTYwODZjZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVsw
NV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDVdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJl
cl9vZl9VbmlxdWVfU3RhY2tfTW9kdWxlczogWzB4NF0NCiAgICBGcmFtZVswNF0gICAgICAgQ29t
cGxldGVTdGFja1dhbGsNCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkX0xhc3RTdGF0dXM6IFsw
eGMwMDAwMDBkXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6IFsweDQwOV0NCiAg
ICBGcmFtZVswMF0gIEQxICAgQmFkUmVhZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQog
ICAgRnJhbWVbMDBdICBEMSAgIEJhZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsweDAwMDAwMDAw
MDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBbMHgwMDAwMDAw
MDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tfRnJhbWVzOiBb
MHg2XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJh
bWVbMDBdICBEMSAgIElnbm9yZWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBE
MSAgIEZyYW1lc19ub3RfaW5fc3RhY2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVbMDBdICAgICAg
IFdhaXRfQVBJDQogICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBE
MSAgIG5lYXJfbnVsbF9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAwMDA0XQ0KICAgIEZyYW1lWzAw
XSAgICAgICBudWxsX0FyY2hfQlgNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hf
Q1g6IFsweDAwMDAwMDAwMDAwMDA1OTRdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9E
WA0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfU0kNCiAgICBGcmFtZVswMF0gIEQxICAg
bmVhcl9udWxsX0FyY2hfREk6IFsweDAwMDAwMDAwMDAwMDA1OTRdDQogICAgRnJhbWVbMDBdICBE
MSAgIHN0YWNrYWRkcl9TUDogWzB4MDAwMDAwMThmNThmZjc1OF0NCiAgICBGcmFtZVswMF0gICAg
ICAgbnVsbF9BcmNoX0JQDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQ
OiBbMHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOA0K
ICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxM
X21zcl9yMTANCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjExDQogICAgRnJhbWVbMDBd
ICAgICAgIE5VTExfbXNyX3IxMg0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAg
ICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTQ6IFsweDAwMDAwMDAwMDAwMDA1OTRd
DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxNQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJ
bnN0cnVjdGlvbl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBTdGFja19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQoNCiAgICBG
cmFtZVswMF0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3QrMHgx
NF0NCiAgICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUxCQVNFIVdhaXRGb3JTaW5n
bGVPYmplY3RFeCsweDhlXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW2F0aXVtZDY0
IU9wZW5BZGFwdGVyKzB4Njc1NGRdDQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3ltYm9sOiBbYXRp
dW1kNjQhWGR4SW5pdFhvcEFkYXB0ZXJTZXJ2aWNlcysweDgyYzg4XQ0KICAgIEZyYW1lWzA0XSAg
VHJpYWdlIFN5bWJvbDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNF0NCiAgICBG
cmFtZVswNV0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMV0N
Cg0KICAxOCBJZDogMTdkYy41MjA0DQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3RlbVRpZDogWzB4
NTIwNF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rpb25fVGltZV8o
bXMpOiBbMHgxMF0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbYXRp
dW1kNjQhWGR4SW5pdFhvcEFkYXB0ZXJTZXJ2aWNlc10NCiAgICBGcmFtZVswMF0gIEQxICAgVGhy
ZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDM3ZDI2ZDA4XQ0KICAgIEZyYW1lWzAwXSAgU1RS
ICBTdGFja19TSEExX0hhc2hfTW9kOiBbMDcyZGE2OWU1YzhlYmI0ODRiMjdjOGI4ZmQ3ODQ0Yjk5
OGUxMjA2M10NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4Nl0N
CiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFs5NWJjNjUy
NDFjNzM2NWEwZmRhYjE3ZjVkMWJhMzZmZWZkNjBmZjY1XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBT
dGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbNGU4MzZiYmM3NTA5M2JiZTQzZGI4OWQ4NjEwZjg4OGZj
ZjVkYWM4Nl0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBb
MHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0
OiBbOTk0OTBkYmE2OGE2MTUxMmJiOGM2N2RkOWJjNmRhNjBiMGVhOWEzNl0NCiAgICBGcmFtZVsw
MF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4Nl0NCiAgICBGcmFt
ZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswODZiNDFmMWQxN2ZjZDc5NmU3ODliNDMxMTgy
OGU1MWRjZTE4M2ViXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MF0N
CiAgICBGcmFtZVswMV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs0Nzc4MjA5OGE5MDcxY2RmNjUx
MmViMWIyZWY0MjY1ZjVmNDI5ZmZiXQ0KICAgIEZyYW1lWzAxXSAgRDIgICBGcmFtZUdyb3VwSGFz
aDogWzB4MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFtlZmY4MzMzYTA1
NDQzODVhZjU5YzZmMWRjODgwMTk0NzEwZWExNzY0XQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFt
ZUdyb3VwSGFzaDogWzB4M10NCiAgICBGcmFtZVswNF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3
ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzA0XSAg
RDIgICBGcmFtZUdyb3VwSGFzaDogWzB4NF0NCiAgICBGcmFtZVswNV0gIFNUUiAgRnJhbWVHcm91
cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZy
YW1lWzA1XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4NV0NCiAgICBGcmFtZVswMF0gIEQxICAg
TnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVzOiBbMHg0XQ0KICAgIEZyYW1lWzA0XSAgICAg
ICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRfTGFzdFN0YXR1
czogWzB4YzAwMDAwMGRdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAw
MF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAw
MDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAw
MDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFt
ZXM6IFsweDZdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVsw
MF0gIEQxICAgRnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0g
ICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMV0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVsw
MF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAwMDAwMDAwMDRdDQogICAgRnJh
bWVbMDBdICAgICAgIG51bGxfQXJjaF9CWA0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxf
QXJjaF9DWDogWzB4MDAwMDAwMDAwMDAwMDVhNF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9B
cmNoX0RYDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBuZWFyX251bGxfQXJjaF9ESTogWzB4MDAwMDAwMDAwMDAwMDVhNF0NCiAgICBGcmFtZVsw
MF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY1OWZmZGU4XQ0KICAgIEZyYW1lWzAw
XSAgICAgICBudWxsX0FyY2hfQlANCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0Fy
Y2hfSVA6IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNy
X3I4DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I5DQogICAgRnJhbWVbMDBdICAgICAg
IE5VTExfbXNyX3IxMA0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTENCiAgICBGcmFt
ZVswMF0gICAgICAgTlVMTF9tc3JfcjEyDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3Ix
Mw0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxNDogWzB4MDAwMDAwMDAwMDAw
MDVhNF0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjE1DQogICAgRnJhbWVbMDBdICBE
MSAgIEluc3RydWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVb
MDBdICBEMSAgIFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCg0K
ICAgIEZyYW1lWzAwXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIU50V2FpdEZvclNpbmdsZU9iamVj
dCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTEJBU0UhV2FpdEZv
clNpbmdsZU9iamVjdEV4KzB4OGVdDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbYXRp
dW1kNjQhT3BlbkFkYXB0ZXIrMHg2NzU0ZF0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6
IFthdGl1bWQ2NCFYZHhJbml0WG9wQWRhcHRlclNlcnZpY2VzKzB4ODJjODhdDQogICAgRnJhbWVb
MDRdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0K
ICAgIEZyYW1lWzA1XSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsw
eDIxXQ0KDQogIDE5IElkOiAxN2RjLjJkZTgNCiAgICBGcmFtZVswMF0gIEQxICAgU3lzdGVtVGlk
OiBbMHgyZGU4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9U
aW1lXyhtcyk6IFsweDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczog
W2F0aXVtZDY0IVhkeEluaXRYb3BBZGFwdGVyU2VydmljZXNdDQogICAgRnJhbWVbMDBdICBEMSAg
IFRocmVhZFN0YXJ0QWRkcmVzczogWzB4MDAwMDdmZmQzN2QyNmQwOF0NCiAgICBGcmFtZVswMF0g
IFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzA3MmRhNjllNWM4ZWJiNDg0YjI3YzhiOGZkNzg0
NGI5OThlMTIwNjNdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsw
eDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbOTVi
YzY1MjQxYzczNjVhMGZkYWIxN2Y1ZDFiYTM2ZmVmZDYwZmY2NV0NCiAgICBGcmFtZVswMF0gIEQy
ICAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIg
IFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzRlODM2YmJjNzUwOTNiYmU0M2RiODlkODYxMGY4
ODhmY2Y1ZGFjODZdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVu
YzogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09m
ZnNldDogWzk5NDkwZGJhNjhhNjE1MTJiYjhjNjdkZDliYzZkYTYwYjBlYTlhMzZdDQogICAgRnJh
bWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsweDZdDQogICAg
RnJhbWVbMDBdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMDg2YjQxZjFkMTdmY2Q3OTZlNzg5YjQz
MTE4MjhlNTFkY2UxODNlYl0NCiAgICBGcmFtZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsw
eDBdDQogICAgRnJhbWVbMDFdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbNDc3ODIwOThhOTA3MWNk
ZjY1MTJlYjFiMmVmNDI2NWY1ZjQyOWZmYl0NCiAgICBGcmFtZVswMV0gIEQyICAgRnJhbWVHcm91
cEhhc2g6IFsweDFdDQogICAgRnJhbWVbMDJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbZWZmODMz
M2EwNTQ0Mzg1YWY1OWM2ZjFkYzg4MDE5NDcxMGVhMTc2NF0NCiAgICBGcmFtZVswMl0gIEQyICAg
RnJhbWVHcm91cEhhc2g6IFsweDNdDQogICAgRnJhbWVbMDRdICBTVFIgIEZyYW1lR3JvdXBIYXNo
OiBbN2VhNDkyZmViMTQxOWMwMGQzOWQzOGJiYzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVsw
NF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDRdDQogICAgRnJhbWVbMDVdICBTVFIgIEZyYW1l
R3JvdXBIYXNoOiBbMGIwY2VmYzM4ZTYwODZjZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAg
ICBGcmFtZVswNV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDVdDQogICAgRnJhbWVbMDBdICBE
MSAgIE51bWJlcl9vZl9VbmlxdWVfU3RhY2tfTW9kdWxlczogWzB4NF0NCiAgICBGcmFtZVswNF0g
ICAgICAgQ29tcGxldGVTdGFja1dhbGsNCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkX0xhc3RT
dGF0dXM6IFsweGMwMDAwMDBkXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6IFsw
eDQwOV0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkUmVhZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAw
MDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsw
eDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBb
MHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tf
RnJhbWVzOiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBd
DQogICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJh
bWVbMDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3RhY2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVb
MDBdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJh
bWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAwMDA0XQ0KICAg
IEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfQlgNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9u
dWxsX0FyY2hfQ1g6IFsweDAwMDAwMDAwMDAwMDA1NzRdDQogICAgRnJhbWVbMDBdICAgICAgIG51
bGxfQXJjaF9EWA0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfU0kNCiAgICBGcmFtZVsw
MF0gIEQxICAgbmVhcl9udWxsX0FyY2hfREk6IFsweDAwMDAwMDAwMDAwMDA1NzRdDQogICAgRnJh
bWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDogWzB4MDAwMDAwMThmNWFmZmE3OF0NCiAgICBGcmFt
ZVswMF0gICAgICAgbnVsbF9BcmNoX0JQDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRlZE1vZHVs
ZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxM
X21zcl9yOA0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOQ0KICAgIEZyYW1lWzAwXSAg
ICAgICBOVUxMX21zcl9yMTANCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjExDQogICAg
RnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMg0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21z
cl9yMTMNCiAgICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTQ6IFsweDAwMDAwMDAw
MDAwMDA1NzRdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxNQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBJbnN0cnVjdGlvbl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBTdGFja19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBd
DQoNCiAgICBGcmFtZVswMF0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JTaW5nbGVP
YmplY3QrMHgxNF0NCiAgICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUxCQVNFIVdh
aXRGb3JTaW5nbGVPYmplY3RFeCsweDhlXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDog
W2F0aXVtZDY0IU9wZW5BZGFwdGVyKzB4Njc1NGRdDQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3lt
Ym9sOiBbYXRpdW1kNjQhWGR4SW5pdFhvcEFkYXB0ZXJTZXJ2aWNlcysweDgyYzg4XQ0KICAgIEZy
YW1lWzA0XSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgx
NF0NCiAgICBGcmFtZVswNV0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxVc2VyVGhyZWFkU3Rh
cnQrMHgyMV0NCg0KICAyMCBJZDogMTdkYy4yZTljDQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3Rl
bVRpZDogWzB4MmU5Y10NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rp
b25fVGltZV8obXMpOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFkZHJl
c3M6IFthdGl1bWQ2NCFYZHhJbml0WG9wQWRhcHRlclNlcnZpY2VzXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkMzdkMjZkMDhdDQogICAgRnJhbWVb
MDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFswNzJkYTY5ZTVjOGViYjQ4NGIyN2M4Yjhm
ZDc4NDRiOTk4ZTEyMDYzXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9k
OiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDog
Wzk1YmM2NTI0MWM3MzY1YTBmZGFiMTdmNWQxYmEzNmZlZmQ2MGZmNjVdDQogICAgRnJhbWVbMDBd
ICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAg
U1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFs0ZTgzNmJiYzc1MDkzYmJlNDNkYjg5ZDg2
MTBmODg4ZmNmNWRhYzg2XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9k
X0Z1bmM6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVu
Y19PZmZzZXQ6IFs5OTQ5MGRiYTY4YTYxNTEyYmI4YzY3ZGQ5YmM2ZGE2MGIwZWE5YTM2XQ0KICAg
IEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMHg2XQ0K
ICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzA4NmI0MWYxZDE3ZmNkNzk2ZTc4
OWI0MzExODI4ZTUxZGNlMTgzZWJdDQogICAgRnJhbWVbMDBdICBEMiAgIEZyYW1lR3JvdXBIYXNo
OiBbMHgwXQ0KICAgIEZyYW1lWzAxXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzQ3NzgyMDk4YTkw
NzFjZGY2NTEyZWIxYjJlZjQyNjVmNWY0MjlmZmJdDQogICAgRnJhbWVbMDFdICBEMiAgIEZyYW1l
R3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogW2Vm
ZjgzMzNhMDU0NDM4NWFmNTljNmYxZGM4ODAxOTQ3MTBlYTE3NjRdDQogICAgRnJhbWVbMDJdICBE
MiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgzXQ0KICAgIEZyYW1lWzA0XSAgU1RSICBGcmFtZUdyb3Vw
SGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJh
bWVbMDRdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg0XQ0KICAgIEZyYW1lWzA1XSAgU1RSICBG
cmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhd
DQogICAgRnJhbWVbMDVdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg1XQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVsZXM6IFsweDRdDQogICAgRnJhbWVb
MDRdICAgICAgIENvbXBsZXRlU3RhY2tXYWxrDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZF9M
YXN0U3RhdHVzOiBbMHhjMDAwMDAwZF0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkTG9jYWxl
OiBbMHg0MDldDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAw
MDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5
OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfUkVB
RDogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1N0
YWNrX0ZyYW1lczogWzB4Nl0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0ZyYW1lX0NvdW50OiBb
MHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJZ25vcmVkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBGcmFtZXNfbm90X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZy
YW1lWzAwXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAxXSAgICAgICBXYWl0X0FQSQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMDAwNF0N
CiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0JYDQogICAgRnJhbWVbMDBdICBEMSAgIG5l
YXJfbnVsbF9BcmNoX0NYOiBbMHgwMDAwMDAwMDAwMDAwNTg0XQ0KICAgIEZyYW1lWzAwXSAgICAg
ICBudWxsX0FyY2hfRFgNCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX1NJDQogICAgRnJh
bWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0RJOiBbMHgwMDAwMDAwMDAwMDAwNTg0XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfU1A6IFsweDAwMDAwMDE4ZjViZmY2ZDhdDQogICAg
RnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CUA0KICAgIEZyYW1lWzAwXSAgRDEgICBMb2FkZWRN
b2R1bGVfQXJjaF9JUDogWzB4MDAwMDdmZmQ4OTQ4Y2RmNF0NCiAgICBGcmFtZVswMF0gICAgICAg
TlVMTF9tc3JfcjgNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjkNCiAgICBGcmFtZVsw
MF0gICAgICAgTlVMTF9tc3JfcjEwDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMQ0K
ICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTINCiAgICBGcmFtZVswMF0gICAgICAgTlVM
TF9tc3JfcjEzDQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3JfcjE0OiBbMHgwMDAw
MDAwMDAwMDAwNTg0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTUNCiAgICBGcmFt
ZVswMF0gIEQxICAgSW5zdHJ1Y3Rpb25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4OTQ4Y2RmNF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgU3RhY2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBb
MHgwXQ0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yU2lu
Z2xlT2JqZWN0KzB4MTRdDQogICAgRnJhbWVbMDFdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMQkFT
RSFXYWl0Rm9yU2luZ2xlT2JqZWN0RXgrMHg4ZV0NCiAgICBGcmFtZVswMl0gIFRyaWFnZSBTeW1i
b2w6IFthdGl1bWQ2NCFPcGVuQWRhcHRlcisweDY3NTRkXQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdl
IFN5bWJvbDogW2F0aXVtZDY0IVhkeEluaXRYb3BBZGFwdGVyU2VydmljZXMrMHg4MmM4OF0NCiAg
ICBGcmFtZVswNF0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5r
KzB4MTRdDQogICAgRnJhbWVbMDVdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVh
ZFN0YXJ0KzB4MjFdDQoNCiAgMjEgSWQ6IDE3ZGMuNWJiMA0KICAgIEZyYW1lWzAwXSAgRDEgICBT
eXN0ZW1UaWQ6IFsweDViYjBdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRy
YWN0aW9uX1RpbWVfKG1zKTogWzB4MTBdDQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0
QWRkcmVzczogW250ZGxsIVRwcFdvcmtlclRocmVhZF0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhy
ZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDg5NDQyYWQwXQ0KICAgIEZyYW1lWzAwXSAgU1RS
ICBTdGFja19TSEExX0hhc2hfTW9kOiBbOWYzMTc3MDAwOTZjNzUwMWZkMjRlYjUxMTJhOTE0ZGI4
ZjJkODQ5NV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4NF0N
CiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFszZjQxZTM2
MmE5NmM1OTg4MjkwMGM4M2QxNTQ4MWRhMzRiODQ5MTI4XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBT
dGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbNzg5NzNlZDNmZjExMWQ1YTllYzEyNDg5YjIzNjc0NGRj
MmFkOTc4OF0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBb
MHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0
OiBbMDFmNGVhYThiYmU0NzMxMjM2NjJlYmQ2N2E3NTllNDIxMGQ2NmM0ZF0NCiAgICBGcmFtZVsw
MF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4NF0NCiAgICBGcmFt
ZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFsyNTZjYTZjZDAyOTk5NTkyNjAxNWEwMzIxMDEw
M2E3MGFjNzA1NjFlXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MV0N
CiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5YzAwZDM5
ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFtZUdyb3VwSGFz
aDogWzB4Ml0NCiAgICBGcmFtZVswM10gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswYjBjZWZjMzhl
NjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZyYW1lWzAzXSAgRDIgICBGcmFt
ZUdyb3VwSGFzaDogWzB4M10NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1VuaXF1ZV9T
dGFja19Nb2R1bGVzOiBbMHgyXQ0KICAgIEZyYW1lWzAxXSAgICAgICBOdFdvcmtlclRocmVhZA0K
ICAgIEZyYW1lWzAyXSAgICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgICAg
ICBJc19VSVRocmVhZA0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRfTGFzdFN0YXR1czogWzB4
YzAwMDAwMGRdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAw
MDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAw
MDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsw
eDRdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgRnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0gICAgICAg
V2FpdF9BUEkNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAw
MDAwMDAwMDAxZDNdDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfQlhfUmVnaXN0ZXI6IFsweDAw
MDAwMWYwNTIwMjI4NzBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0NYOiBb
MHgwMDAwMDAwMDAwMDAwN2VjXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX0RYX1JlZ2lzdGVy
OiBbMHgwMDAwMDFmMDUyMDIyNGYwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBOT1BfQXJjaF9TSQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX0RJX1JlZ2lzdGVyOiBbMHgwMDAwMDFmMDUyMDIyODcw
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfU1A6IFsweDAwMDAwMDE4ZjVjZmY4ODhd
DQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CUA0KICAgIEZyYW1lWzAwXSAgRDEgICBM
b2FkZWRNb2R1bGVfQXJjaF9JUDogWzB4MDAwMDdmZmQ4OTQ5MDdjNF0NCiAgICBGcmFtZVswMF0g
ICAgICAgTlVMTF9tc3JfcjgNCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3I5OiBbMHgwMDAwMDAw
MDdmZmUwM2IwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjEwOiBbMHgwMDAwMDFmMDUyNDBl
MGMwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjExOiBbMHgwMDAwMDFmMDUyNDBlMGUwXQ0K
ICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTINCiAgICBGcmFtZVswMF0gICAgICAgTlVM
TF9tc3JfcjEzDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxNA0KICAgIEZyYW1lWzAw
XSAgICAgICBOVUxMX21zcl9yMTUNCiAgICBGcmFtZVswMF0gIEQxICAgSW5zdHJ1Y3Rpb25fUG9p
bnRlcjogWzB4MDAwMDdmZmQ4OTQ5MDdjNF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfQXR0
cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHhmXQ0KDQogICAgRnJhbWVbMDBdICBUcmlh
Z2UgU3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yV29ya1ZpYVdvcmtlckZhY3RvcnkrMHgxNF0NCiAg
ICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFUcHBXb3JrZXJUaHJlYWQrMHgyZjdd
DQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRU
aHVuaysweDE0XQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJU
aHJlYWRTdGFydCsweDIxXQ0KDQogIDIyIElkOiAxN2RjLjJmZjQNCiAgICBGcmFtZVswMF0gIEQx
ICAgU3lzdGVtVGlkOiBbMHgyZmY0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNf
RXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0
YXJ0QWRkcmVzczogW250ZGxsIVRwcFdvcmtlclRocmVhZF0NCiAgICBGcmFtZVswMF0gIEQxICAg
VGhyZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDg5NDQyYWQwXQ0KICAgIEZyYW1lWzAwXSAg
U1RSICBTdGFja19TSEExX0hhc2hfTW9kOiBbOWYzMTc3MDAwOTZjNzUwMWZkMjRlYjUxMTJhOTE0
ZGI4ZjJkODQ5NV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4
NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFszZjQx
ZTM2MmE5NmM1OTg4MjkwMGM4M2QxNTQ4MWRhMzRiODQ5MTI4XQ0KICAgIEZyYW1lWzAwXSAgRDIg
ICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4NF0NCiAgICBGcmFtZVswMF0gIFNUUiAg
U3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbNzg5NzNlZDNmZjExMWQ1YTllYzEyNDg5YjIzNjc0
NGRjMmFkOTc4OF0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5j
OiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zm
c2V0OiBbMDFmNGVhYThiYmU0NzMxMjM2NjJlYmQ2N2E3NTllNDIxMGQ2NmM0ZF0NCiAgICBGcmFt
ZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4NF0NCiAgICBG
cmFtZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFsyNTZjYTZjZDAyOTk5NTkyNjAxNWEwMzIx
MDEwM2E3MGFjNzA1NjFlXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4
MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5YzAw
ZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFtZUdyb3Vw
SGFzaDogWzB4Ml0NCiAgICBGcmFtZVswM10gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswYjBjZWZj
MzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZyYW1lWzAzXSAgRDIgICBG
cmFtZUdyb3VwSGFzaDogWzB4M10NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1VuaXF1
ZV9TdGFja19Nb2R1bGVzOiBbMHgyXQ0KICAgIEZyYW1lWzAxXSAgICAgICBOdFdvcmtlclRocmVh
ZA0KICAgIEZyYW1lWzAyXSAgICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAg
ICAgICBJc19VSVRocmVhZA0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6IFsweDQw
OV0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkUmVhZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAwMDEw
MDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsweDAw
MDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBbMHgw
MDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tfRnJh
bWVzOiBbMHg0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBdDQog
ICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVb
MDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3RhY2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVbMDBd
ICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0FYOiBb
MHgwMDAwMDAwMDAwMDAwMWQzXQ0KICAgIEZyYW1lWzAwXSAgICAgICBOT1BfQXJjaF9CWA0KICAg
IEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9DWDogWzB4MDAwMDAwMDAwMDAwMDAxOF0N
CiAgICBGcmFtZVswMF0gIEQxICAgQXJjaF9EWF9SZWdpc3RlcjogWzB4MDAwMDAxZjA1MjAyMWEx
MF0NCiAgICBGcmFtZVswMF0gIEQxICAgQXJjaF9TSV9SZWdpc3RlcjogWzB4MDAwMDAxZjAwYmNi
MGI1MF0NCiAgICBGcmFtZVswMF0gICAgICAgTk9QX0FyY2hfREkNCiAgICBGcmFtZVswMF0gIEQx
ICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY1ZGZmN2M4XQ0KICAgIEZyYW1lWzAwXSAgICAg
ICBudWxsX0FyY2hfQlANCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6
IFsweDAwMDA3ZmZkODk0OTA3YzRdDQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3Jf
cjg6IFsweDAwMDAwMDAwMDAwMDAwMDhdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I5
DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMA0KICAgIEZyYW1lWzAwXSAgRDEgICBO
ZWFyX05VTExfbXNyX3IxMTogWzB4MDAwMDAwMDAwMDAwMDI0Nl0NCiAgICBGcmFtZVswMF0gICAg
ICAgTlVMTF9tc3JfcjEyDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMw0KICAgIEZy
YW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTQNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3Jf
cjE1DQogICAgRnJhbWVbMDBdICBEMSAgIEluc3RydWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZk
ODk0OTA3YzRdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9u
X1RpbWVfKG1zKTogWzB4MjBdDQoNCiAgICBGcmFtZVswMF0gIFRyaWFnZSBTeW1ib2w6IFtudGRs
bCFOdFdhaXRGb3JXb3JrVmlhV29ya2VyRmFjdG9yeSsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJp
YWdlIFN5bWJvbDogW250ZGxsIVRwcFdvcmtlclRocmVhZCsweDJmN10NCiAgICBGcmFtZVswMl0g
IFRyaWFnZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQogICAg
RnJhbWVbMDNdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjFd
DQoNCiAgMjMgSWQ6IDE3ZGMuNTY2MA0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsw
eDU2NjBdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVf
KG1zKTogWzB4MF0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbV1RG
IXRocmVhZF9zdGFydDx1bnNpZ25lZCBpbnQgKF9fY2RlY2wqKSh2b2lkICopLDE+XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkNWNkMTk1NzRdDQog
ICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFs3YWUwOTdkMzQ5MjFhMDg1
N2E2ZjJmNDI5NzM4YTgwN2EyMmU5MjllXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEEx
X0hhc2hfTW9kOiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfVW5p
cXVlX01vZDogWzgwNWMzOTYwY2I0YmM0ZTdlNTEzZWIwMTc3Y2U5NjdmODA5MDAxNDJdDQogICAg
RnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHhjXQ0KICAgIEZy
YW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFs3ZjE5Y2U3NTY1YmY4MzA5
YWI4ZTBhNjg4MWUwOTVjZWE1ZWE4ZjQxXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEEx
X0hhc2hfTW9kX0Z1bmM6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFz
aF9Nb2RfRnVuY19PZmZzZXQ6IFs0N2NlZDg1NTBkODYxNTgxZWE3ODI3Nzk2YjNjNDQ4MmEzMjc4
NDQ4XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0
OiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogW2JiNmYwYmYwYzI3
MmQxNTBkY2RmZDY5NTg2OGM0YTg0ZmJhOWI2OTddDQogICAgRnJhbWVbMDBdICBEMiAgIEZyYW1l
R3JvdXBIYXNoOiBbMHgwXQ0KICAgIEZyYW1lWzAxXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzI5
OWQxZmIxNjY4NDA4MzY2MDE0MTY1NTQyODVmMzFlNzZlZDc5ODNdDQogICAgRnJhbWVbMDFdICBE
MiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFtZUdyb3Vw
SGFzaDogW2FmMzM3YWIwNzZhOTZhOTI3NjdjZjY3MjczMzg3NmU0Yjg3ZTAwMmFdDQogICAgRnJh
bWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg0XQ0KICAgIEZyYW1lWzA1XSAgU1RSICBG
cmFtZUdyb3VwSGFzaDogW2E4MWM0ZjliMTE5NGYxMjFlZTVmM2EyMmQxZWI4YjlkNjc3OGU0NDRd
DQogICAgRnJhbWVbMDVdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg2XQ0KICAgIEZyYW1lWzA3
XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzE0NDk1ZjNlMjE1OTRjM2UzZDc3OGEyMWUzOGE3YTFm
MmZjZmE3YWJdDQogICAgRnJhbWVbMDddICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg5XQ0KICAg
IEZyYW1lWzBhXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhi
YmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVbMGFdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBb
MHhhXQ0KICAgIEZyYW1lWzBiXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2
Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQogICAgRnJhbWVbMGJdICBEMiAgIEZyYW1lR3Jv
dXBIYXNoOiBbMHhiXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNr
X01vZHVsZXM6IFsweDddDQogICAgRnJhbWVbMGFdICAgICAgIENvbXBsZXRlU3RhY2tXYWxrDQog
ICAgRnJhbWVbMDBdICAgICAgIElzX1VJVGhyZWFkDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVh
ZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4
MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VC
b3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9u
dWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJl
cl9vZl9TdGFja19GcmFtZXM6IFsweGNdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9D
b3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4
MF0NCiAgICBGcmFtZVswMF0gIEQxICAgRnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0N
CiAgICBGcmFtZVswMF0gICAgICAgQ09NX0xvZ2ljYWxUaHJlYWRJZA0KICAgICAgICAgICAgICAg
R1VJRDogezlhZjJkMTdjLWU0Y2YtNGM2Zi1iMWMzLWJkZDBkNTE1NzliM30NCiAgICBGcmFtZVsw
MV0gICAgICAgSXNfSWRsZVdhaXRGb3JNZXNzYWdlDQogICAgRnJhbWVbMDBdICAgICAgIFdhaXRf
QVBJDQogICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIGJh
ZHB0cl9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAxNDg2XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBu
ZWFyX251bGxfQXJjaF9CWDogWzB4MDAwMDAwMDAwMDAwMDAwMV0NCiAgICBGcmFtZVswMF0gIEQx
ICAgbmVhcl9udWxsX0FyY2hfQ1g6IFsweDAwMDAwMDAwMDAwMDAwMDJdDQogICAgRnJhbWVbMDBd
ICBEMSAgIHN0YWNrYWRkcl9EWDogWzB4MDAwMDAwMThmNWVmZjRkMF0NCiAgICBGcmFtZVswMF0g
IEQxICAgc3RhY2thZGRyX1NJOiBbMHgwMDAwMDAxOGY1ZWZmNzc4XQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBuZWFyX251bGxfQXJjaF9ESTogWzB4MDAwMDAwMDAwMDAwMDAwMl0NCiAgICBGcmFtZVsw
MF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY1ZWZmNDQ4XQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBuZWFyX251bGxfQXJjaF9CUDogWzB4MDAwMDAwMDAwMDAwMDAwMl0NCiAgICBGcmFt
ZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6IFsweDAwMDA3ZmZkODcwZmExMDRdDQog
ICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9tc3Jfcjg6IFsweDAwMDAwMDE4ZjVlZmQ4MDBd
DQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3Jfcjk6IFsweDAwMDAwMDAwMDAwMDAw
MmVdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9tc3JfcjEwOiBbMHgwMDAwMDAxOGY1
ZWZkODA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfbXNyX3IxMTogWzB4MDAwMDAw
MThmNWVmZDgwYV0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEyDQogICAgRnJhbWVb
MDBdICBEMSAgIG1zcl9yMTM6IFsweDAwMDAwMDAwZmZmZmZmZmZdDQogICAgRnJhbWVbMDBdICBE
MSAgIHN0YWNrYWRkcl9tc3JfcjE0OiBbMHgwMDAwMDAxOGY1ZWZmNGQwXQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBzdGFja2FkZHJfbXNyX3IxNTogWzB4MDAwMDAwMThmNWVmZjc2Ml0NCiAgICBGcmFt
ZVswMF0gIEQxICAgSW5zdHJ1Y3Rpb25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4NzBmYTEwNF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgU3RhY2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBb
MHgwXQ0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbd2luMzJ1IU50VXNlck1zZ1dh
aXRGb3JNdWx0aXBsZU9iamVjdHNFeCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJv
bDogW1VTRVIzMiFSZWFsTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KzB4MWVdDQogICAgRnJh
bWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbQ29yZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1
bGVXaXRoUnVuTG9vcCsweDhiNjBkXQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDogW0Nv
cmVGb3VuZGF0aW9uIUNGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3ArMHg4YWU3N10NCiAg
ICBGcmFtZVswNF0gIFRyaWFnZSBTeW1ib2w6IFtDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1T
Y2hlZHVsZVdpdGhSdW5Mb29wKzB4ODdjZWRdDQogICAgRnJhbWVbMDVdICBUcmlhZ2UgU3ltYm9s
OiBbV2ViS2l0IWBXZWJDb3JlOjpnZXRSdW5Mb29wJzo6YDUnOjo8bGFtYmRhXzE+OjpvcGVyYXRv
cisweGM2XQ0KICAgIEZyYW1lWzA2XSAgVHJpYWdlIFN5bWJvbDogW1dlYktpdCFXVEY6OkRldGFp
bDo6Q2FsbGFibGVXcmFwcGVyPGBXZWJDb3JlOjpnZXRSdW5Mb29wJzo6YDUnOjo8bGFtYmRhXzE+
LHZvaWQ+OjpjYWxsKzB4ZF0NCiAgICBGcmFtZVswN10gIFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RG
OjpUaHJlYWQ6OmVudHJ5UG9pbnQrMHhjMV0NCiAgICBGcmFtZVswOF0gIFRyaWFnZSBTeW1ib2w6
IFtXVEYhV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KzB4OV0NCiAgICBGcmFtZVswOV0gIFRyaWFn
ZSBTeW1ib2w6IFtXVEYhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCopKzB4NTBd
DQogICAgRnJhbWVbMGFdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRU
aHVuaysweDE0XQ0KICAgIEZyYW1lWzBiXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJU
aHJlYWRTdGFydCsweDIxXQ0KDQogIDI0IElkOiAxN2RjLjJkNzQNCiAgICBGcmFtZVswMF0gIEQx
ICAgU3lzdGVtVGlkOiBbMHgyZDc0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNf
RXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweGZdDQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0
YXJ0QWRkcmVzczogW1dJTklORVQhVXJsQ2FjaGVTZXRHbG9iYWxMaW1pdF0NCiAgICBGcmFtZVsw
MF0gIEQxICAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDdjODk2MDMwXQ0KICAgIEZy
YW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kOiBbN2I0OWFjODllZjhhMzI4Y2E5ZDNj
YmUyYTYzNTIyMmUwMjZiYTk3Yl0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNo
X01vZDogWzB4NV0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9N
b2Q6IFtlOGY3OTY0NjRjMjZhYWM1NGQ0MjA4MzdiNGM3OWJiZTM2ZDk4ODM0XQ0KICAgIEZyYW1l
WzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4NV0NCiAgICBGcmFtZVsw
MF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbNjdlOWYzYmE4NzBmMGIxNTFjNzNh
ZDg3ZDA1MDk5NmM1ODNkMjYzOV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNo
X01vZF9GdW5jOiBbMHg1XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9k
X0Z1bmNfT2Zmc2V0OiBbNWIwOTk4MjM4MzYzODA0NDlhYjJmNGNiODM2OTljOGZlYTMwNmVmZl0N
CiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4
NV0NCiAgICBGcmFtZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswODZiNDFmMWQxN2ZjZDc5
NmU3ODliNDMxMTgyOGU1MWRjZTE4M2ViXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3Vw
SGFzaDogWzB4MF0NCiAgICBGcmFtZVswMV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs0Nzc4MjA5
OGE5MDcxY2RmNjUxMmViMWIyZWY0MjY1ZjVmNDI5ZmZiXQ0KICAgIEZyYW1lWzAxXSAgRDIgICBG
cmFtZUdyb3VwSGFzaDogWzB4MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6
IFtlZjAyMjYwOWQ1NzhkYTNlMmYyZjU1OWZjMDBkMmY0YmNiMTBkYzFjXQ0KICAgIEZyYW1lWzAy
XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4Ml0NCiAgICBGcmFtZVswM10gIFNUUiAgRnJhbWVH
cm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAg
IEZyYW1lWzAzXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4M10NCiAgICBGcmFtZVswNF0gIFNU
UiAgRnJhbWVHcm91cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhh
ZTc4XQ0KICAgIEZyYW1lWzA0XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4NF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgTnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVzOiBbMHg0XQ0KICAgIEZy
YW1lWzAzXSAgICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJl
YWRfTGFzdFN0YXR1czogWzB4YzAwMDAwMGRdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExv
Y2FsZTogWzB4NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAw
MDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3Vu
ZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxs
X1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9v
Zl9TdGFja19GcmFtZXM6IFsweDVdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3Vu
dDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0N
CiAgICBGcmFtZVswMF0gIEQxICAgRnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAg
ICBGcmFtZVswMF0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMV0gICAgICAgV2FpdF9BUEkN
CiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAwMDAwMDAw
MDRdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CWA0KICAgIEZyYW1lWzAwXSAgRDEg
ICBuZWFyX251bGxfQXJjaF9DWDogWzB4MDAwMDAwMDAwMDAwMDljY10NCiAgICBGcmFtZVswMF0g
ICAgICAgbnVsbF9BcmNoX0RYDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9TSQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9ESTogWzB4MDAwMDAwMDAwMDAwMDljY10N
CiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY1ZmZmOWU4XQ0K
ICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfQlANCiAgICBGcmFtZVswMF0gIEQxICAgTG9h
ZGVkTW9kdWxlX0FyY2hfSVA6IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICAg
ICAgIE5VTExfbXNyX3I4DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I5DQogICAgRnJh
bWVbMDBdICAgICAgIE5VTExfbXNyX3IxMA0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9y
MTENCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEyDQogICAgRnJhbWVbMDBdICAgICAg
IE5VTExfbXNyX3IxMw0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxNDogWzB4
MDAwMDAwMDAwMDAwMDljY10NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjE1DQogICAg
RnJhbWVbMDBdICBEMSAgIEluc3RydWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OGNkZjRd
DQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1z
KTogWzB4MF0NCg0KICAgIEZyYW1lWzAwXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIU50V2FpdEZv
clNpbmdsZU9iamVjdCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5F
TEJBU0UhV2FpdEZvclNpbmdsZU9iamVjdEV4KzB4OGVdDQogICAgRnJhbWVbMDJdICBUcmlhZ2Ug
U3ltYm9sOiBbV0lOSU5FVCFVcmxDYWNoZVNldEdsb2JhbExpbWl0KzB4MjA5MF0NCiAgICBGcmFt
ZVswM10gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRd
DQogICAgRnJhbWVbMDRdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0
KzB4MjFdDQoNCiAgMjUgSWQ6IDE3ZGMuMzkzNA0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1U
aWQ6IFsweDM5MzRdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9u
X1RpbWVfKG1zKTogWzB4MF0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNz
OiBbdWNydGJhc2UhdGhyZWFkX3N0YXJ0PHZvaWQgKF9fY2RlY2wqKSh2b2lkICopLDA+XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkODZlMDUwZDBd
DQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFthNDQ4NGVjYTM1NTc5
NGU5OGE3MTY4NDk1Mjg1M2EwMGQ4MjI4N2FlXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19T
SEExX0hhc2hfTW9kOiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hf
VW5pcXVlX01vZDogWzA4ODQxZTI0YmNiY2Q5ZDY0ZGIzNmNiZjE0MWY5ODdkYWI0ZTZkYjZdDQog
ICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHg2XQ0KICAg
IEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFswMDBjZmVlZDM5NzU3
NzE5ZDdmMjUwYWY2N2ZiOGVjMmEwY2QxNjkxXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19T
SEExX0hhc2hfTW9kX0Z1bmM6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFf
SGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsxYjRiYzAyMWU0OGJkY2UzNDg5Y2U1MTE0ZDVlNTk1Njcx
YzBmYzk5XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zm
c2V0OiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogW2NkYTAwYWY1
MWRkZTY0NzM4OTk5ODE2N2E3ZTZlMzc3NDIxNTc1ZWNdDQogICAgRnJhbWVbMDBdICBEMiAgIEZy
YW1lR3JvdXBIYXNoOiBbMHgwXQ0KICAgIEZyYW1lWzAxXSAgU1RSICBGcmFtZUdyb3VwSGFzaDog
WzNlODE3ZTU2NzdjZjBhOTYyM2UyZGY0ZDBlMmI2OWM5MDNkODc4ZGNdDQogICAgRnJhbWVbMDFd
ICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFtZUdy
b3VwSGFzaDogWzA1NGJjM2RiZGQ5OGNkYjU3ZTlhZmI3Njk0MzEyN2ViMjM4YmI4MWRdDQogICAg
RnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgyXQ0KICAgIEZyYW1lWzAzXSAgU1RS
ICBGcmFtZUdyb3VwSGFzaDogWzJlZjFkOGQ4N2FhM2RkN2E2M2QxM2I4OGM1YTZiODA4YTQ5MTcx
MTZdDQogICAgRnJhbWVbMDNdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgzXQ0KICAgIEZyYW1l
WzA0XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJh
MDU5MDAwMzFhMDldDQogICAgRnJhbWVbMDRdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg0XQ0K
ICAgIEZyYW1lWzA1XSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEy
ZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQogICAgRnJhbWVbMDVdICBEMiAgIEZyYW1lR3JvdXBIYXNo
OiBbMHg1XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVs
ZXM6IFsweDVdDQogICAgRnJhbWVbMDRdICAgICAgIENvbXBsZXRlU3RhY2tXYWxrDQogICAgRnJh
bWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBC
YWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAg
QmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJh
bWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweDZdDQogICAgRnJhbWVbMDBd
ICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgSWdub3Jl
ZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgRnJhbWVzX25vdF9pbl9z
dGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6
IFsweDAwMDAwMDAwMDAwMDAxMTldDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CWA0K
ICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9DWDogWzB4MDAwMDAwMDAwMDAwMGIx
OF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0RYDQogICAgRnJhbWVbMDBdICAgICAg
IG51bGxfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfREkNCiAgICBGcmFt
ZVswMF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY2MGZmOGE4XQ0KICAgIEZyYW1l
WzAwXSAgICAgICBudWxsX0FyY2hfQlANCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxl
X0FyY2hfSVA6IFsweDAwMDA3ZmZkODk0OGYwODRdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExf
bXNyX3I4DQogICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yOTogWzB4MDAwMDAwMDAwMDAyMDAxOV0N
CiAgICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTA6IFsweDAwMDAwMDAwMDAwMDAw
MTVdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMQ0KICAgIEZyYW1lWzAwXSAgICAg
ICBOVUxMX21zcl9yMTINCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEzDQogICAgRnJh
bWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3JfcjE0OiBbMHgwMDAwMDAwMDAwMDAwMDA0XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxNTogWzB4MDAwMDAwMDAwMDAwMDAwMV0N
CiAgICBGcmFtZVswMF0gIEQxICAgSW5zdHJ1Y3Rpb25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4OTQ4
ZjA4NF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGlt
ZV8obXMpOiBbMHgwXQ0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRO
b3RpZnlDaGFuZ2VLZXkrMHgxNF0NCiAgICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJO
RUxCQVNFIVJlZ05vdGlmeUNoYW5nZUtleVZhbHVlKzB4YjBdDQogICAgRnJhbWVbMDJdICBUcmlh
Z2UgU3ltYm9sOiBbQ0ZOZXR3b3JrIUNGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKzB4MTAyYV0N
CiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6IFt1Y3J0YmFzZSF0aHJlYWRfc3RhcnQ8dm9p
ZCAoX19jZGVjbCopKzB4N2JdDQogICAgRnJhbWVbMDRdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVM
MzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0KICAgIEZyYW1lWzA1XSAgVHJpYWdlIFN5bWJv
bDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxXQ0KDQogIDI2IElkOiAxN2RjLjRjZDAN
CiAgICBGcmFtZVswMF0gIEQxICAgU3lzdGVtVGlkOiBbMHg0Y2QwXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDEwXQ0KICAgIEZyYW1l
WzAwXSAgU1RSICBUaHJlYWRTdGFydEFkZHJlc3M6IFt1Y3J0YmFzZSF0aHJlYWRfc3RhcnQ8dW5z
aWduZWQgaW50IChfX2NkZWNsKikodm9pZCAqKSwxPl0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhy
ZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDg2ZTAxYjcwXQ0KICAgIEZyYW1lWzAwXSAgU1RS
ICBTdGFja19TSEExX0hhc2hfTW9kOiBbNmI1NjUwMzA2NDM0M2I0ZWUyZTZjOTZhODM0ODQ1NjUx
NTVhYzY2Y10NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4Yl0N
CiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFtjYmY3MWZh
MjI5MWQ4NjRhYzg3OTVlOTc0OWU0MmRhNDMzMTMxMDcwXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBT
dGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4Yl0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbZjJhNDg4YTRkZjQ3ZWUyNzU2M2E5ZmFlNzY4OWZmOGU4
YWJmZDcxNV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBb
MHhiXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0
OiBbMDhiNDA2NTg0YTIyYTY1MGEyMWMyOWJiNWEwOTg5NThlMTk0OWNiMV0NCiAgICBGcmFtZVsw
MF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4Yl0NCiAgICBGcmFt
ZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFtiYjZmMGJmMGMyNzJkMTUwZGNkZmQ2OTU4Njhj
NGE4NGZiYTliNjk3XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MF0N
CiAgICBGcmFtZVswMV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFsyOTlkMWZiMTY2ODQwODM2NjAx
NDE2NTU0Mjg1ZjMxZTc2ZWQ3OTgzXQ0KICAgIEZyYW1lWzAxXSAgRDIgICBGcmFtZUdyb3VwSGFz
aDogWzB4MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFthZjMzN2FiMDc2
YTk2YTkyNzY3Y2Y2NzI3MzM4NzZlNGI4N2UwMDJhXQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFt
ZUdyb3VwSGFzaDogWzB4NF0NCiAgICBGcmFtZVswNV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs5
NDA3NjA5YzU3MTZlMTdhMDUwMDQ4Y2VmZWIwNTFkOGY1YzJjYTI3XQ0KICAgIEZyYW1lWzA1XSAg
RDIgICBGcmFtZUdyb3VwSGFzaDogWzB4Nl0NCiAgICBGcmFtZVswN10gIFNUUiAgRnJhbWVHcm91
cEhhc2g6IFszMmU4NWRhZGQwZThkYjIwN2ViYjVjZmVjNDNiNTI0Y2U4NGYyYWU2XQ0KICAgIEZy
YW1lWzA3XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4N10NCiAgICBGcmFtZVswOF0gIFNUUiAg
RnJhbWVHcm91cEhhc2g6IFs0MTU2YjVkYzU5YjkxOGQ1MmU4ODNiOTM5NzY1ZDE4ZGVhYWVjOGE3
XQ0KICAgIEZyYW1lWzA4XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4OF0NCiAgICBGcmFtZVsw
OV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1
OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzA5XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4OV0NCiAg
ICBGcmFtZVswYV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2
MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZyYW1lWzBhXSAgRDIgICBGcmFtZUdyb3VwSGFzaDog
WzB4YV0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVz
OiBbMHg4XQ0KICAgIEZyYW1lWzA5XSAgICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1l
WzAwXSAgICAgICBJc19VSVRocmVhZA0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRfTGFzdFN0
YXR1czogWzB4YzAwMDAwMGRdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4
NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAw
MTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4
MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsw
eDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19G
cmFtZXM6IFsweGJdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0N
CiAgICBGcmFtZVswMF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgRnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVsw
MV0gICAgICAgSXNfSWRsZVdhaXRGb3JNZXNzYWdlDQogICAgRnJhbWVbMDBdICAgICAgIFdhaXRf
QVBJDQogICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIGJh
ZHB0cl9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAxNDg2XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBu
ZWFyX251bGxfQXJjaF9CWDogWzB4MDAwMDAwMDAwMDAwMDAwMV0NCiAgICBGcmFtZVswMF0gIEQx
ICAgbmVhcl9udWxsX0FyY2hfQ1g6IFsweDAwMDAwMDAwMDAwMDAwMDJdDQogICAgRnJhbWVbMDBd
ICAgICAgIE5PUF9BcmNoX0RYDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TSTogWzB4
MDAwMDAwMThmNjFmZjhlOF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfREk6
IFsweDAwMDAwMDAwMDAwMDAwMDJdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDog
WzB4MDAwMDAwMThmNjFmZjViOF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hf
QlA6IFsweDAwMDAwMDAwMDAwMDAwMDJdDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRlZE1vZHVs
ZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg3MGZhMTA0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFj
a2FkZHJfbXNyX3I4OiBbMHgwMDAwMDAxOGY2MWZmNDQ4XQ0KICAgIEZyYW1lWzAwXSAgICAgICBO
VUxMX21zcl9yOQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxMDogWzB4MDAw
MDAwMDAwMDAwMDA4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX21zcl9yMTE6IFsw
eDAwMDAwMDE4ZjYxZmYzYThdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMg0KICAg
IEZyYW1lWzAwXSAgRDEgICBtc3JfcjEzOiBbMHgwMDAwMDAwMGZmZmZmZmZmXQ0KICAgIEZyYW1l
WzAwXSAgICAgICBOT1BfbXNyX3IxNA0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfbXNy
X3IxNTogWzB4MDAwMDAwMThmNjFmZjhkMl0NCiAgICBGcmFtZVswMF0gIEQxICAgSW5zdHJ1Y3Rp
b25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4NzBmYTEwNF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3Rh
Y2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0KDQogICAgRnJhbWVbMDBd
ICBUcmlhZ2UgU3ltYm9sOiBbd2luMzJ1IU50VXNlck1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNF
eCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW1VTRVIzMiFSZWFsTXNnV2Fp
dEZvck11bHRpcGxlT2JqZWN0c0V4KzB4MWVdDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9s
OiBbQ29yZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcCsweDhiNjBk
XQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDogW0NvcmVGb3VuZGF0aW9uIUNGUmVhZFN0
cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3ArMHg4YWU3N10NCiAgICBGcmFtZVswNF0gIFRyaWFnZSBT
eW1ib2w6IFtDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKzB4
ODdjZWRdDQogICAgRnJhbWVbMDVdICBUcmlhZ2UgU3ltYm9sOiBbQ0ZOZXR3b3JrISsweDI1MTBh
XQ0KICAgIEZyYW1lWzA2XSAgVHJpYWdlIFN5bWJvbDogW0NGTmV0d29yayErMHgyNTFhOV0NCiAg
ICBGcmFtZVswN10gIFRyaWFnZSBTeW1ib2w6IFtwdGhyZWFkVkMyIXB0aHJlYWRfcndsb2NrYXR0
cl9pbml0KzB4NTRiOV0NCiAgICBGcmFtZVswOF0gIFRyaWFnZSBTeW1ib2w6IFt1Y3J0YmFzZSF0
aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50IChfX2NkZWNsKikrMHg0Ml0NCiAgICBGcmFtZVswOV0g
IFRyaWFnZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQogICAg
RnJhbWVbMGFdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjFd
DQoNCiAgMjcgSWQ6IDE3ZGMuNWU0NA0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsw
eDVlNDRdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVf
KG1zKTogWzB4Zl0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbdWNy
dGJhc2UhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCopKHZvaWQgKiksMT5dDQog
ICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0YXJ0QWRkcmVzczogWzB4MDAwMDdmZmQ4NmUwMWI3
MF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzYyODNlNjcyMjM4
YTczYTg5ZmRlNjMxNzFkYjQ3NTRjNDcyN2E1NGRdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNr
X1NIQTFfSGFzaF9Nb2Q6IFsweDldDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFz
aF9VbmlxdWVfTW9kOiBbMzI4NTI2MWMzZmQ1YmJiMTQ2ZmMwYjA3OTA1MGM2ZGU2MWJmOWU5OV0N
CiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsweDldDQog
ICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzE3YmFiZThiMTAw
M2ZjZDgwMzhiMmNiNmFkNDFhOWIyNzU3MDMyYjNdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNr
X1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4OV0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hB
MV9IYXNoX01vZF9GdW5jX09mZnNldDogW2ZlMTk3YWE4MzEyOGYyZGEyZWJkMTFjYTYwZGI3OTZm
N2QwMTJmM2JdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19P
ZmZzZXQ6IFsweDldDQogICAgRnJhbWVbMDBdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMDg2YjQx
ZjFkMTdmY2Q3OTZlNzg5YjQzMTE4MjhlNTFkY2UxODNlYl0NCiAgICBGcmFtZVswMF0gIEQyICAg
RnJhbWVHcm91cEhhc2g6IFsweDBdDQogICAgRnJhbWVbMDFdICBTVFIgIEZyYW1lR3JvdXBIYXNo
OiBbOWMyNmY3YWZjMWJkNDVhN2IxZDgzYWIwMjE3NjQ1MDQ0MThkNzBiY10NCiAgICBGcmFtZVsw
MV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDJdDQogICAgRnJhbWVbMDNdICBTVFIgIEZyYW1l
R3JvdXBIYXNoOiBbZjY0Yjg4ZGVjYmY0NmE0YzQ5OWYyOTJhZTAwOGNlZmJmMTBiYmE0NV0NCiAg
ICBGcmFtZVswM10gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDNdDQogICAgRnJhbWVbMDRdICBT
VFIgIEZyYW1lR3JvdXBIYXNoOiBbNDgyNWYzYjczMThhNTc3NGQ0YWVmZDVlYjA5YjI2OGU5OTNh
ZTdkOV0NCiAgICBGcmFtZVswNF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDVdDQogICAgRnJh
bWVbMDZdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbNDE1NmI1ZGM1OWI5MThkNTJlODgzYjkzOTc2
NWQxOGRlYWFlYzhhN10NCiAgICBGcmFtZVswNl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDZd
DQogICAgRnJhbWVbMDddICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMwMGQz
OWQzOGJiYzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswN10gIEQyICAgRnJhbWVHcm91cEhh
c2g6IFsweDddDQogICAgRnJhbWVbMDhdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2VmYzM4
ZTYwODZjZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVswOF0gIEQyICAgRnJh
bWVHcm91cEhhc2g6IFsweDhdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9VbmlxdWVf
U3RhY2tfTW9kdWxlczogWzB4Nl0NCiAgICBGcmFtZVswN10gICAgICAgQ29tcGxldGVTdGFja1dh
bGsNCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkX0xhc3RTdGF0dXM6IFsweGMwMDAwMDBkXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6IFsweDQwOV0NCiAgICBGcmFtZVswMF0g
IEQxICAgQmFkUmVhZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBd
ICBEMSAgIEJhZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQog
ICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tfRnJhbWVzOiBbMHg5XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAg
IElnbm9yZWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEZyYW1lc19u
b3RfaW5fc3RhY2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVbMDBdICAgICAgIFdhaXRfQVBJDQog
ICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVs
bF9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAwMDA0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxs
X0FyY2hfQlgNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQ1g6IFsweDAwMDAw
MDAwMDAwMDBiM2NdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9EWDogWzB4MDAwMDAw
MThmNjJmZjMwMV0NCiAgICBGcmFtZVswMF0gICAgICAgTk9QX0FyY2hfU0kNCiAgICBGcmFtZVsw
MF0gICAgICAgbnVsbF9BcmNoX0RJDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDog
WzB4MDAwMDAwMThmNjJmZjMwOF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX0JQOiBb
MHgwMDAwMDAxOGY2MmZmMzgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBMb2FkZWRNb2R1bGVfQXJj
aF9JUDogWzB4MDAwMDdmZmQ4OTQ4Y2RmNF0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3Jf
cjgNCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3I5OiBbMHgwMDAwMDFmMDRmYmMxY2U4XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxMDogWzB4MDAwMDAwMDAwMDAwMDEwMl0N
CiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX21zcl9yMTE6IFsweDAwMDAwMDE4ZjYyZmY2
MjBdDQogICAgRnJhbWVbMDBdICBEMSAgIE5lYXJfTlVMTF9tc3JfcjEyOiBbMHgwMDAwMDAwMDAw
MDAwYjNjXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjEzOiBbMHgwMDAwMDFmMDUxY2FlZDAw
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxNDogWzB4MDAwMDAwMDAwMDAw
MGIwMF0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjE1DQogICAgRnJhbWVbMDBdICBE
MSAgIEluc3RydWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVb
MDBdICBEMSAgIFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCg0K
ICAgIEZyYW1lWzAwXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIU50V2FpdEZvclNpbmdsZU9iamVj
dCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW21zd3NvY2shU29ja1dhaXRG
b3JTaW5nbGVPYmplY3QrMHgxMGNdDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbbXN3
c29jayFXU1BTZWxlY3QrMHg4NWVdDQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3ltYm9sOiBbV1My
XzMyIXNlbGVjdCsweDEzN10NCiAgICBGcmFtZVswNF0gIFRyaWFnZSBTeW1ib2w6IFtDb3JlRm91
bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKzB4OTViMWJdDQogICAgRnJh
bWVbMDVdICBUcmlhZ2UgU3ltYm9sOiBbQ29yZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1
bGVXaXRoUnVuTG9vcCsweGU0MzhkXQ0KICAgIEZyYW1lWzA2XSAgVHJpYWdlIFN5bWJvbDogW3Vj
cnRiYXNlIXRocmVhZF9zdGFydDx1bnNpZ25lZCBpbnQgKF9fY2RlY2wqKSsweDQyXQ0KICAgIEZy
YW1lWzA3XSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgx
NF0NCiAgICBGcmFtZVswOF0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxVc2VyVGhyZWFkU3Rh
cnQrMHgyMV0NCg0KICAyOCBJZDogMTdkYy40YjQwDQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3Rl
bVRpZDogWzB4NGI0MF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rp
b25fVGltZV8obXMpOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFkZHJl
c3M6IFttc3dzb2NrIVNvY2tBc3luY1RocmVhZF0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFk
U3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDg2MmMxMDEwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBT
dGFja19TSEExX0hhc2hfTW9kOiBbNDE2YzMzYjdhNWI2NjU2OTZmODc2OTZiOWU0ZWExOWJjYWRk
NjhiMF0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4NF0NCiAg
ICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFs4YzBlZGZlYWUw
ZDBmYzI1OGQzZjljZTQ2ZTg1ZTNhNGE4NjQ2M2VjXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFj
a19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tf
U0hBMV9IYXNoX01vZF9GdW5jOiBbYmQzYjI1YjI2NWY2Y2VjYTQ3MWQ3ZjZkZDMwZDRmNGJjZDVi
Yjc5Ml0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbMHg0
XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBb
ZmVlMzFjNGI1NmI3OGUxZjFmNjI1MmUzNjdmNzA3MmM4OWVkZjMwOF0NCiAgICBGcmFtZVswMF0g
IEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4NF0NCiAgICBGcmFtZVsw
MF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFtjOTNkYWY1YTkxZWNmZGI5NjE3ODJiM2I4NDU3MDJk
MGU3OGIwZTAxXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MF0NCiAg
ICBGcmFtZVswMV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFtkZTIxY2M2NzM0MWM4MjVhMDc2ZDQw
YmRkZDNhNzljNjFlOTg0ZTQxXQ0KICAgIEZyYW1lWzAxXSAgRDIgICBGcmFtZUdyb3VwSGFzaDog
WzB4MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5
YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFtZUdy
b3VwSGFzaDogWzB4Ml0NCiAgICBGcmFtZVswM10gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswYjBj
ZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZyYW1lWzAzXSAgRDIg
ICBGcmFtZUdyb3VwSGFzaDogWzB4M10NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1Vu
aXF1ZV9TdGFja19Nb2R1bGVzOiBbMHgzXQ0KICAgIEZyYW1lWzAyXSAgICAgICBDb21wbGV0ZVN0
YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRfTGFzdFN0YXR1czogWzB4YzAwMDAw
MGRdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAw
MF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEw
MDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweDRdDQog
ICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0g
IEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgRnJh
bWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0gICAgICAgV2FpdF9B
UEkNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAwMDAw
MDAwMDldDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CWA0KICAgIEZyYW1lWzAwXSAg
RDEgICBuZWFyX251bGxfQXJjaF9DWDogWzB4MDAwMDAwMDAwMDAwMGI0NF0NCiAgICBGcmFtZVsw
MF0gIEQxICAgc3RhY2thZGRyX0RYOiBbMHgwMDAwMDAxOGY2M2ZmZGIwXQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBuZWFyX251bGxfQXJjaF9TSTogWzB4MDAwMDAwMDAwMDAwMDAwMV0NCiAgICBGcmFt
ZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfRDE6IFsweDAwMDA3ZmZkODYyYzAwMDBdDQog
ICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDogWzB4MDAwMDAwMThmNjNmZmQ0OF0NCiAg
ICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0JQDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRl
ZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg5NDhjZTk0XQ0KICAgIEZyYW1lWzAwXSAgICAg
ICBOVUxMX21zcl9yOA0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOQ0KICAgIEZyYW1l
WzAwXSAgICAgICBOVUxMX21zcl9yMTANCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEx
DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMg0KICAgIEZyYW1lWzAwXSAgICAgICBO
VUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjE0DQogICAgRnJhbWVb
MDBdICAgICAgIE5VTExfbXNyX3IxNQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJbnN0cnVjdGlvbl9Q
b2ludGVyOiBbMHgwMDAwN2ZmZDg5NDhjZTk0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19B
dHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDEwXQ0KDQogICAgRnJhbWVbMDBdICBU
cmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRSZW1vdmVJb0NvbXBsZXRpb24rMHgxNF0NCiAgICBGcmFt
ZVswMV0gIFRyaWFnZSBTeW1ib2w6IFttc3dzb2NrIVNvY2tBc3luY1RocmVhZCsweDliXQ0KICAg
IEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsr
MHgxNF0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxVc2VyVGhyZWFk
U3RhcnQrMHgyMV0NCg0KICAyOSBJZDogMTdkYy4yOWY0DQogICAgRnJhbWVbMDBdICBEMSAgIFN5
c3RlbVRpZDogWzB4MjlmNF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJh
Y3Rpb25fVGltZV8obXMpOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFk
ZHJlc3M6IFt1Y3J0YmFzZSF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50IChfX2NkZWNsKikodm9p
ZCAqKSwxPl0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAw
N2ZmZDg2ZTAxYjcwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kOiBb
NmI1NjUwMzA2NDM0M2I0ZWUyZTZjOTZhODM0ODQ1NjUxNTVhYzY2Y10NCiAgICBGcmFtZVswMF0g
IEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4Yl0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFtjYmY3MWZhMjI5MWQ4NjRhYzg3OTVlOTc0OWU0MmRh
NDMzMTMxMDcwXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01v
ZDogWzB4Yl0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBb
ZjJhNDg4YTRkZjQ3ZWUyNzU2M2E5ZmFlNzY4OWZmOGU4YWJmZDcxNV0NCiAgICBGcmFtZVswMF0g
IEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbMHhiXQ0KICAgIEZyYW1lWzAwXSAgU1RS
ICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMDhiNDA2NTg0YTIyYTY1MGEyMWMy
OWJiNWEwOTg5NThlMTk0OWNiMV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNo
X01vZF9GdW5jX09mZnNldDogWzB4Yl0NCiAgICBGcmFtZVswMF0gIFNUUiAgRnJhbWVHcm91cEhh
c2g6IFtiYjZmMGJmMGMyNzJkMTUwZGNkZmQ2OTU4NjhjNGE4NGZiYTliNjk3XQ0KICAgIEZyYW1l
WzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MF0NCiAgICBGcmFtZVswMV0gIFNUUiAgRnJh
bWVHcm91cEhhc2g6IFsyOTlkMWZiMTY2ODQwODM2NjAxNDE2NTU0Mjg1ZjMxZTc2ZWQ3OTgzXQ0K
ICAgIEZyYW1lWzAxXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MV0NCiAgICBGcmFtZVswMl0g
IFNUUiAgRnJhbWVHcm91cEhhc2g6IFthZjMzN2FiMDc2YTk2YTkyNzY3Y2Y2NzI3MzM4NzZlNGI4
N2UwMDJhXQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4NF0NCiAgICBG
cmFtZVswNV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs5NDA3NjA5YzU3MTZlMTdhMDUwMDQ4Y2Vm
ZWIwNTFkOGY1YzJjYTI3XQ0KICAgIEZyYW1lWzA1XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4
Nl0NCiAgICBGcmFtZVswN10gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFszMmU4NWRhZGQwZThkYjIw
N2ViYjVjZmVjNDNiNTI0Y2U4NGYyYWU2XQ0KICAgIEZyYW1lWzA3XSAgRDIgICBGcmFtZUdyb3Vw
SGFzaDogWzB4N10NCiAgICBGcmFtZVswOF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs0MTU2YjVk
YzU5YjkxOGQ1MmU4ODNiOTM5NzY1ZDE4ZGVhYWVjOGE3XQ0KICAgIEZyYW1lWzA4XSAgRDIgICBG
cmFtZUdyb3VwSGFzaDogWzB4OF0NCiAgICBGcmFtZVswOV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6
IFs3ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzA5
XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4OV0NCiAgICBGcmFtZVswYV0gIFNUUiAgRnJhbWVH
cm91cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAg
IEZyYW1lWzBhXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4YV0NCiAgICBGcmFtZVswMF0gIEQx
ICAgTnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVzOiBbMHg4XQ0KICAgIEZyYW1lWzA5XSAg
ICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgICAgICBJc19VSVRocmVhZA0K
ICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRfTGFzdFN0YXR1czogWzB4YzAwMDAwMGRdDQogICAg
RnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBG
cmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAg
RnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweGJdDQogICAgRnJhbWVb
MDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgSWdu
b3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgRnJhbWVzX25vdF9p
bl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMV0gICAgICAgSXNfSWRsZVdhaXRGb3JN
ZXNzYWdlDQogICAgRnJhbWVbMDBdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDFdICAgICAg
IFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIGJhZHB0cl9BcmNoX0FYOiBbMHgwMDAwMDAw
MDAwMDAxNDg2XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9CWDogWzB4MDAw
MDAwMDAwMDAwMDAwMV0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQ1g6IFsw
eDAwMDAwMDAwMDAwMDAwMDJdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9EWDogWzB4
MDAwMDAwMThmNjRmZjM1MF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX1NJOiBbMHgw
MDAwMDAxOGY2NGZmNWY4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9ESTog
WzB4MDAwMDAwMDAwMDAwMDAwMl0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX1NQOiBb
MHgwMDAwMDAxOGY2NGZmMmM4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9C
UDogWzB4MDAwMDAwMDAwMDAwMDAwMl0NCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxl
X0FyY2hfSVA6IFsweDAwMDA3ZmZkODcwZmExMDRdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExf
bXNyX3I4DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I5DQogICAgRnJhbWVbMDBdICAg
ICAgIE5VTExfbXNyX3IxMA0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTENCiAgICBG
cmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEyDQogICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yMTM6
IFsweDAwMDAwMDAwZmZmZmZmZmZdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9tc3Jf
cjE0OiBbMHgwMDAwMDAxOGY2NGZmMzUwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJf
bXNyX3IxNTogWzB4MDAwMDAwMThmNjRmZjVlMl0NCiAgICBGcmFtZVswMF0gIEQxICAgSW5zdHJ1
Y3Rpb25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4NzBmYTEwNF0NCiAgICBGcmFtZVswMF0gIEQxICAg
U3RhY2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0KDQogICAgRnJhbWVb
MDBdICBUcmlhZ2UgU3ltYm9sOiBbd2luMzJ1IU50VXNlck1zZ1dhaXRGb3JNdWx0aXBsZU9iamVj
dHNFeCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW1VTRVIzMiFSZWFsTXNn
V2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KzB4MWVdDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3lt
Ym9sOiBbQ29yZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcCsweDhi
NjBkXQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDogW0NvcmVGb3VuZGF0aW9uIUNGUmVh
ZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3ArMHg4YWU3N10NCiAgICBGcmFtZVswNF0gIFRyaWFn
ZSBTeW1ib2w6IFtDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29w
KzB4ODdjZWRdDQogICAgRnJhbWVbMDVdICBUcmlhZ2UgU3ltYm9sOiBbQ0ZOZXR3b3JrISsweDI1
MTBhXQ0KICAgIEZyYW1lWzA2XSAgVHJpYWdlIFN5bWJvbDogW0NGTmV0d29yayErMHgyNTFhOV0N
CiAgICBGcmFtZVswN10gIFRyaWFnZSBTeW1ib2w6IFtwdGhyZWFkVkMyIXB0aHJlYWRfcndsb2Nr
YXR0cl9pbml0KzB4NTRiOV0NCiAgICBGcmFtZVswOF0gIFRyaWFnZSBTeW1ib2w6IFt1Y3J0YmFz
ZSF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50IChfX2NkZWNsKikrMHg0Ml0NCiAgICBGcmFtZVsw
OV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQog
ICAgRnJhbWVbMGFdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4
MjFdDQoNCiAgMzAgSWQ6IDE3ZGMuMzJiMA0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6
IFsweDMyYjBdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1Rp
bWVfKG1zKTogWzB4MF0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBb
bGliZGlzcGF0Y2ghZGlzcGF0Y2hfYWZ0ZXJdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0
YXJ0QWRkcmVzczogWzB4MDAwMDdmZmQ2YzU1N2ZkMF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX01vZDogWzgzNmMzY2E1ZTYwMGI0MDA0NzIzZDM5Y2RlMjY5YTQ3MWQyOTRh
MGRdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsweDZdDQogICAg
RnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbOGViYWI0ODhmNTAz
OGQ3OTUxNTJhN2EyMGE1NGE0ZmI5ZDU0MDM3Yl0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tf
U0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsweDZdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NI
QTFfSGFzaF9Nb2RfRnVuYzogW2M5M2UyMzllYWZjNmE2NTJiNDgyZGY3MTc1YzJhNDVjOTM2YWNl
MmVdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4Nl0N
CiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogW2Yz
YjMzNmIzNWUwMmVjZDhkNjNlNDZkYzExOGViM2YxNTg2MjRlZTZdDQogICAgRnJhbWVbMDBdICBE
MiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsweDZdDQogICAgRnJhbWVbMDBd
ICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMDg2YjQxZjFkMTdmY2Q3OTZlNzg5YjQzMTE4MjhlNTFk
Y2UxODNlYl0NCiAgICBGcmFtZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDBdDQogICAg
RnJhbWVbMDFdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbNDc3ODIwOThhOTA3MWNkZjY1MTJlYjFi
MmVmNDI2NWY1ZjQyOWZmYl0NCiAgICBGcmFtZVswMV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsw
eDFdDQogICAgRnJhbWVbMDJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMzlkZjQ1MDkyYzBkY2Rh
ZTY1MjI3Yzc0YWRkYjY0MjU4MDIyMTBiNl0NCiAgICBGcmFtZVswMl0gIEQyICAgRnJhbWVHcm91
cEhhc2g6IFsweDNdDQogICAgRnJhbWVbMDRdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDky
ZmViMTQxOWMwMGQzOWQzOGJiYzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswNF0gIEQyICAg
RnJhbWVHcm91cEhhc2g6IFsweDRdDQogICAgRnJhbWVbMDVdICBTVFIgIEZyYW1lR3JvdXBIYXNo
OiBbMGIwY2VmYzM4ZTYwODZjZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVsw
NV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDVdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJl
cl9vZl9VbmlxdWVfU3RhY2tfTW9kdWxlczogWzB4NF0NCiAgICBGcmFtZVswNF0gICAgICAgQ29t
cGxldGVTdGFja1dhbGsNCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkX0xhc3RTdGF0dXM6IFsw
eGMwMDAwMDBkXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6IFsweDQwOV0NCiAg
ICBGcmFtZVswMF0gIEQxICAgQmFkUmVhZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQog
ICAgRnJhbWVbMDBdICBEMSAgIEJhZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsweDAwMDAwMDAw
MDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBbMHgwMDAwMDAw
MDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tfRnJhbWVzOiBb
MHg2XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJh
bWVbMDBdICBEMSAgIElnbm9yZWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBE
MSAgIEZyYW1lc19ub3RfaW5fc3RhY2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVbMDBdICAgICAg
IFdhaXRfQVBJDQogICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBE
MSAgIG5lYXJfbnVsbF9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAwMDA0XQ0KICAgIEZyYW1lWzAw
XSAgICAgICBudWxsX0FyY2hfQlgNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hf
Q1g6IFsweDAwMDAwMDAwMDAwMDA4NDhdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9E
WA0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfU0k6IFsweDAwMDAwMDE4ZjY1ZmZkNThd
DQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNoX0RJOiBbMHgwMDAwMDAwMDAwMDAw
ODQ4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfU1A6IFsweDAwMDAwMDE4ZjY1ZmZk
MjhdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CUA0KICAgIEZyYW1lWzAwXSAgRDEg
ICBMb2FkZWRNb2R1bGVfQXJjaF9JUDogWzB4MDAwMDdmZmQ4OTQ4Y2RmNF0NCiAgICBGcmFtZVsw
MF0gICAgICAgTlVMTF9tc3JfcjgNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjkNCiAg
ICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEwDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExf
bXNyX3IxMQ0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjEyOiBbMHgwMDAwMDAwMGZmZmZmZmZm
XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0gIEQxICAg
TmVhcl9OVUxMX21zcl9yMTQ6IFsweDAwMDAwMDAwMDAwMDA4NDhdDQogICAgRnJhbWVbMDBdICBE
MSAgIE5lYXJfTlVMTF9tc3JfcjE1OiBbMHgwMDAwMDAwMDAwMDAwMDAxXQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBJbnN0cnVjdGlvbl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBTdGFja19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBd
DQoNCiAgICBGcmFtZVswMF0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JTaW5nbGVP
YmplY3QrMHgxNF0NCiAgICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUxCQVNFIVdh
aXRGb3JTaW5nbGVPYmplY3RFeCsweDhlXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDog
W2xpYmRpc3BhdGNoIWRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KzB4N2JdDQogICAgRnJhbWVbMDNd
ICBUcmlhZ2UgU3ltYm9sOiBbbGliZGlzcGF0Y2ghZGlzcGF0Y2hfYWZ0ZXIrMHhlZGNdDQogICAg
RnJhbWVbMDRdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysw
eDE0XQ0KICAgIEZyYW1lWzA1XSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRT
dGFydCsweDIxXQ0KDQogIDMxIElkOiAxN2RjLjI1NjQNCiAgICBGcmFtZVswMF0gIEQxICAgU3lz
dGVtVGlkOiBbMHgyNTY0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFj
dGlvbl9UaW1lXyhtcyk6IFsweDEwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFk
ZHJlc3M6IFtsaWJkaXNwYXRjaCFkaXNwYXRjaF9hZnRlcl0NCiAgICBGcmFtZVswMF0gIEQxICAg
VGhyZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDZjNTU3ZmQwXQ0KICAgIEZyYW1lWzAwXSAg
U1RSICBTdGFja19TSEExX0hhc2hfTW9kOiBbODM2YzNjYTVlNjAwYjQwMDQ3MjNkMzljZGUyNjlh
NDcxZDI5NGEwZF0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4
Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFs4ZWJh
YjQ4OGY1MDM4ZDc5NTE1MmE3YTIwYTU0YTRmYjlkNTQwMzdiXQ0KICAgIEZyYW1lWzAwXSAgRDIg
ICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4Nl0NCiAgICBGcmFtZVswMF0gIFNUUiAg
U3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbYzkzZTIzOWVhZmM2YTY1MmI0ODJkZjcxNzVjMmE0
NWM5MzZhY2UyZV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5j
OiBbMHg2XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zm
c2V0OiBbZjNiMzM2YjM1ZTAyZWNkOGQ2M2U0NmRjMTE4ZWIzZjE1ODYyNGVlNl0NCiAgICBGcmFt
ZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4Nl0NCiAgICBG
cmFtZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswODZiNDFmMWQxN2ZjZDc5NmU3ODliNDMx
MTgyOGU1MWRjZTE4M2ViXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4
MF0NCiAgICBGcmFtZVswMV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs0Nzc4MjA5OGE5MDcxY2Rm
NjUxMmViMWIyZWY0MjY1ZjVmNDI5ZmZiXQ0KICAgIEZyYW1lWzAxXSAgRDIgICBGcmFtZUdyb3Vw
SGFzaDogWzB4MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFszOWRmNDUw
OTJjMGRjZGFlNjUyMjdjNzRhZGRiNjQyNTgwMjIxMGI2XQ0KICAgIEZyYW1lWzAyXSAgRDIgICBG
cmFtZUdyb3VwSGFzaDogWzB4M10NCiAgICBGcmFtZVswNF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6
IFs3ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzA0
XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4NF0NCiAgICBGcmFtZVswNV0gIFNUUiAgRnJhbWVH
cm91cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAg
IEZyYW1lWzA1XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4NV0NCiAgICBGcmFtZVswMF0gIEQx
ICAgTnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVzOiBbMHg0XQ0KICAgIEZyYW1lWzA0XSAg
ICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRfTGFzdFN0
YXR1czogWzB4YzAwMDAwMGRdDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4
NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAw
MTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4
MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsw
eDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19G
cmFtZXM6IFsweDZdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0N
CiAgICBGcmFtZVswMF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgRnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVsw
MF0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMV0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFt
ZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAwMDAwMDAwMDRdDQogICAg
RnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CWA0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251
bGxfQXJjaF9DWDogWzB4MDAwMDAwMDAwMDAwMGI1MF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVs
bF9BcmNoX0RYDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TSTogWzB4MDAwMDAwMThm
NjZmZmIwOF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfREk6IFsweDAwMDAw
MDAwMDAwMDBiNTBdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDogWzB4MDAwMDAw
MThmNjZmZmFkOF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0JQDQogICAgRnJhbWVb
MDBdICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg5NDhjZGY0XQ0KICAg
IEZyYW1lWzAwXSAgICAgICBPbmVCaXRfbXNyX3I4DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExf
bXNyX3I5DQogICAgRnJhbWVbMDBdICAgICAgIE9uZUJpdF9tc3JfcjEwDQogICAgRnJhbWVbMDBd
ICBEMSAgIG1zcl9yMTE6IFsweDAwMDAwMWYwNTc4NGFkZjBdDQogICAgRnJhbWVbMDBdICBEMSAg
IG1zcl9yMTI6IFsweDAwMDAwMDAwZmZmZmZmZmZdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExf
bXNyX3IxMw0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxNDogWzB4MDAwMDAw
MDAwMDAwMGI1MF0NCiAgICBGcmFtZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTU6IFsweDAw
MDAwMDAwMDAwMDAwMDFdDQogICAgRnJhbWVbMDBdICBEMSAgIEluc3RydWN0aW9uX1BvaW50ZXI6
IFsweDAwMDA3ZmZkODk0OGNkZjRdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0F0dHJpYnV0
ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCg0KICAgIEZyYW1lWzAwXSAgVHJpYWdlIFN5
bWJvbDogW250ZGxsIU50V2FpdEZvclNpbmdsZU9iamVjdCsweDE0XQ0KICAgIEZyYW1lWzAxXSAg
VHJpYWdlIFN5bWJvbDogW0tFUk5FTEJBU0UhV2FpdEZvclNpbmdsZU9iamVjdEV4KzB4OGVdDQog
ICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbbGliZGlzcGF0Y2ghZGlzcGF0Y2hfc2VtYXBo
b3JlX3dhaXQrMHg3Yl0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6IFtsaWJkaXNwYXRj
aCFkaXNwYXRjaF9hZnRlcisweGVkY10NCiAgICBGcmFtZVswNF0gIFRyaWFnZSBTeW1ib2w6IFtL
RVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQogICAgRnJhbWVbMDVdICBUcmlhZ2Ug
U3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjFdDQoNCiAgMzIgSWQ6IDE3ZGMu
MmM1MA0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsweDJjNTBdDQogICAgRnJhbWVb
MDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCiAgICBG
cmFtZVswMF0gIFNUUiAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbV1RGIXRocmVhZF9zdGFydDx1bnNp
Z25lZCBpbnQgKF9fY2RlY2wqKSh2b2lkICopLDE+XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJl
YWRTdGFydEFkZHJlc3M6IFsweDAwMDA3ZmZkNWNkMTk1NzRdDQogICAgRnJhbWVbMDBdICBTVFIg
IFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFtjZmUzZGE4Zjc0MmRjZDFhYmVjYTkwNmI2ZDk3MWRhMDdm
YjMwNmYxXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kOiBbMHhjXQ0K
ICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzcxNzdiNDky
NTg0Y2YyMzNkZTJiNDRlZDVlOTkzNjA4NWM3MTMzYzNdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0
YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFj
a19TSEExX0hhc2hfTW9kX0Z1bmM6IFtkNTJhYjZhNjdhMTcwOWE5ZGQ0YThjYjc3YzhjYmIwNTAz
YTMyODRiXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsw
eGNdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6
IFs5MjExMzRhZTAzMTc1ZmUyOTJiMzgwMDMwNzgzYzI4NDZkMzc0MzE3XQ0KICAgIEZyYW1lWzAw
XSAgRDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbMHhjXQ0KICAgIEZyYW1l
WzAwXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzUzNGZiMjc4MTEzMzU1ZGI0NTlmMTkzMDhlOGI2
ODIzZmNhNGE1ZWZdDQogICAgRnJhbWVbMDBdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0K
ICAgIEZyYW1lWzAyXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogW2NkYzhlYTVjNTQ2ZGI3NGNlOTc1
N2NhMTVlMTg4ZDE0Yzk3N2QwYjVdDQogICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNo
OiBbMHgyXQ0KICAgIEZyYW1lWzAzXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzk1MjRmZGVlZmNm
Y2VhYjU1MDJkMGM4Zjc1NWI3ZDBjY2NkMTQxZjZdDQogICAgRnJhbWVbMDNdICBEMiAgIEZyYW1l
R3JvdXBIYXNoOiBbMHg5XQ0KICAgIEZyYW1lWzBhXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzdl
YTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVbMGFdICBE
MiAgIEZyYW1lR3JvdXBIYXNoOiBbMHhhXQ0KICAgIEZyYW1lWzBiXSAgU1RSICBGcmFtZUdyb3Vw
SGFzaDogWzBiMGNlZmMzOGU2MDg2Y2ViYjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQogICAgRnJh
bWVbMGJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHhiXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBO
dW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01vZHVsZXM6IFsweDRdDQogICAgRnJhbWVbMGFdICAgICAg
IENvbXBsZXRlU3RhY2tXYWxrDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4
NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAw
MTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4
MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsw
eDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19G
cmFtZXM6IFsweGNdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0N
CiAgICBGcmFtZVswMF0gIEQxICAgSWdub3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgRnJhbWVzX25vdF9pbl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVsw
MF0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMV0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFt
ZVswMl0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hf
QVg6IFsweDAwMDAwMDAwMDAwMDAxZDBdDQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9C
WA0KICAgIEZyYW1lWzAwXSAgICAgICBBU0NJSV9BcmNoX0NYDQogICAgRnJhbWVbMDBdICBEMSAg
IHN0YWNrYWRkcl9EWDogWzB4MDAwMDAwMThmNjdmZjVkMF0NCiAgICBGcmFtZVswMF0gICAgICAg
bnVsbF9BcmNoX1NJDQogICAgRnJhbWVbMDBdICAgICAgIEFTQ0lJX0FyY2hfREkNCiAgICBGcmFt
ZVswMF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY2N2ZmNTI4XQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBzdGFja2FkZHJfQlA6IFsweDAwMDAwMDE4ZjY3ZmY1ODBdDQogICAgRnJhbWVb
MDBdICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg5NDkwNzY0XQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3I4OiBbMHgwMDAwMDAwMDAwMDAwMTAwXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3I5OiBbMHgwMDAwMDAwMDAwMDAwMTAw
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBsb2FkZWRtb2R1bGVfbXNyX3IxMDogWzB4MDAwMDdmZmQz
YjEwMDAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbG9hZGVkbW9kdWxlX21zcl9yMTE6IFsweDAw
MDA3ZmZkM2I5ZTcyODVdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9tc3JfcjEyOiBb
MHgwMDAwMDAxOGY2N2ZmNWQwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAg
ICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX21zcl9yMTQ6IFsweDAwMDAwMDE4ZjY3ZmY1NTBd
DQogICAgRnJhbWVbMDBdICAgICAgIEFTQ0lJX21zcl9yMTUNCiAgICBGcmFtZVswMF0gIEQxICAg
SW5zdHJ1Y3Rpb25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4OTQ5MDc2NF0NCiAgICBGcmFtZVswMF0g
IEQxICAgU3RhY2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0KDQogICAg
RnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yQWxlcnRCeVRocmVhZElk
KzB4MTRdDQogICAgRnJhbWVbMDFdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsU2xlZXBDb25k
aXRpb25WYXJpYWJsZVNSVysweDEzMV0NCiAgICBGcmFtZVswMl0gIFRyaWFnZSBTeW1ib2w6IFtL
RVJORUxCQVNFIVNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcrMHgyOV0NCiAgICBGcmFtZVswM10g
IFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCsweDc3
XQ0KICAgIEZyYW1lWzA0XSAgVHJpYWdlIFN5bWJvbDogW1dURiFXVEY6OlBhcmtpbmdMb3Q6OnBh
cmtDb25kaXRpb25hbGx5SW1wbCsweGVmXQ0KICAgIEZyYW1lWzA1XSAgSWdub3JlIFN5bWJvbDog
W1dURiFXVEY6OkNvbmRpdGlvbjo6d2FpdFVudGlsKzB4YjBdDQogICAgRnJhbWVbMDZdICBUcmlh
Z2UgU3ltYm9sOiBbV1RGIWBXVEY6OkF1dG9tYXRpY1RocmVhZDo6c3RhcnQnOjpgMic6OjxsYW1i
ZGFfMT46Om9wZXJhdG9yKzB4ZTVdDQogICAgRnJhbWVbMDddICBUcmlhZ2UgU3ltYm9sOiBbV1RG
IVdURjo6VGhyZWFkOjplbnRyeVBvaW50KzB4YzFdDQogICAgRnJhbWVbMDhdICBUcmlhZ2UgU3lt
Ym9sOiBbV1RGIVdURjo6d3RmVGhyZWFkRW50cnlQb2ludCsweDldDQogICAgRnJhbWVbMDldICBU
cmlhZ2UgU3ltYm9sOiBbV1RGIXRocmVhZF9zdGFydDx1bnNpZ25lZCBpbnQgKF9fY2RlY2wqKSsw
eDUwXQ0KICAgIEZyYW1lWzBhXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJ
bml0VGh1bmsrMHgxNF0NCiAgICBGcmFtZVswYl0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxV
c2VyVGhyZWFkU3RhcnQrMHgyMV0NCg0KICAzMyBJZDogMTdkYy4yNzhjDQogICAgRnJhbWVbMDBd
ICBEMSAgIFN5c3RlbVRpZDogWzB4Mjc4Y10NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfRnJh
bWVzX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJl
YWRTdGFydEFkZHJlc3M6IFtXVEYhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCop
KHZvaWQgKiksMT5dDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0YXJ0QWRkcmVzczogWzB4
MDAwMDdmZmQ1Y2QxOTU3NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01v
ZDogW2NmZTNkYThmNzQyZGNkMWFiZWNhOTA2YjZkOTcxZGEwN2ZiMzA2ZjFdDQogICAgRnJhbWVb
MDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIg
IFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbNzE3N2I0OTI1ODRjZjIzM2RlMmI0NGVkNWU5
OTM2MDg1YzcxMzNjM10NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1
ZV9Nb2Q6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVu
YzogW2Q1MmFiNmE2N2ExNzA5YTlkZDRhOGNiNzdjOGNiYjA1MDNhMzI4NGJdDQogICAgRnJhbWVb
MDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4Y10NCiAgICBGcmFtZVswMF0g
IFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzkyMTEzNGFlMDMxNzVmZTI5
MmIzODAwMzA3ODNjMjg0NmQzNzQzMTddDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFf
SGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIgIEZyYW1lR3Jv
dXBIYXNoOiBbNTM0ZmIyNzgxMTMzNTVkYjQ1OWYxOTMwOGU4YjY4MjNmY2E0YTVlZl0NCiAgICBG
cmFtZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDFdDQogICAgRnJhbWVbMDJdICBTVFIg
IEZyYW1lR3JvdXBIYXNoOiBbY2RjOGVhNWM1NDZkYjc0Y2U5NzU3Y2ExNWUxODhkMTRjOTc3ZDBi
NV0NCiAgICBGcmFtZVswMl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDJdDQogICAgRnJhbWVb
MDNdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbOTUyNGZkZWVmY2ZjZWFiNTUwMmQwYzhmNzU1Yjdk
MGNjY2QxNDFmNl0NCiAgICBGcmFtZVswM10gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDldDQog
ICAgRnJhbWVbMGFdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMwMGQzOWQz
OGJiYzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswYV0gIEQyICAgRnJhbWVHcm91cEhhc2g6
IFsweGFdDQogICAgRnJhbWVbMGJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2VmYzM4ZTYw
ODZjZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVswYl0gIEQyICAgRnJhbWVH
cm91cEhhc2g6IFsweGJdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9VbmlxdWVfU3Rh
Y2tfTW9kdWxlczogWzB4NF0NCiAgICBGcmFtZVswYV0gICAgICAgQ29tcGxldGVTdGFja1dhbGsN
CiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkTG9jYWxlOiBbMHg0MDldDQogICAgRnJhbWVbMDBd
ICBEMSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBCYWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfUkVBRDogWzB4MDAwMDAwMDAwMDAwMTAwMF0N
CiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1N0YWNrX0ZyYW1lczogWzB4Y10NCiAgICBG
cmFtZVswMF0gIEQxICAgQmFkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBJZ25vcmVkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBGcmFtZXNf
bm90X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBXYWl0X0FQSQ0K
ICAgIEZyYW1lWzAxXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAyXSAgICAgICBXYWl0X0FQ
SQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9BWDogWzB4MDAwMDAwMDAwMDAw
MDFkMF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0JYDQogICAgRnJhbWVbMDBdICBE
MSAgIEFyY2hfQ1hfUmVnaXN0ZXI6IFsweDAwMDAwMWYwNTI2OGFmYjBdDQogICAgRnJhbWVbMDBd
ICBEMSAgIHN0YWNrYWRkcl9EWDogWzB4MDAwMDAwMThmNjhmZmIyMF0NCiAgICBGcmFtZVswMF0g
ICAgICAgbnVsbF9BcmNoX1NJDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfRElfUmVnaXN0ZXI6
IFsweDAwMDAwMWYwNTI2OGFmYjBdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDog
WzB4MDAwMDAwMThmNjhmZmE3OF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX0JQOiBb
MHgwMDAwMDAxOGY2OGZmYWQwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBMb2FkZWRNb2R1bGVfQXJj
aF9JUDogWzB4MDAwMDdmZmQ4OTQ5MDc2NF0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3Jf
cjgNCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjkNCiAgICBGcmFtZVswMF0gICAgICAg
TlVMTF9tc3JfcjEwDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBzdGFja2FkZHJfbXNyX3IxMjogWzB4MDAwMDAwMThmNjhmZmIyMF0NCiAgICBG
cmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEzDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRk
cl9tc3JfcjE0OiBbMHgwMDAwMDAxOGY2OGZmYWEwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3Jf
cjE1OiBbMHgwMDAwMDFmMDUyNjhhZmI4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJbnN0cnVjdGlv
bl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDkwNzY0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFj
a19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweGZdDQoNCiAgICBGcmFtZVswMF0g
IFRyaWFnZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JBbGVydEJ5VGhyZWFkSWQrMHgxNF0NCiAg
ICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxTbGVlcENvbmRpdGlvblZhcmlh
YmxlU1JXKzB4MTMxXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTEJBU0Uh
U2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDI5XQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5
bWJvbDogW1dURiFXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KzB4NzddDQogICAgRnJh
bWVbMDRdICBUcmlhZ2UgU3ltYm9sOiBbV1RGIVdURjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlv
bmFsbHlJbXBsKzB4ZWZdDQogICAgRnJhbWVbMDVdICBJZ25vcmUgU3ltYm9sOiBbV1RGIVdURjo6
Q29uZGl0aW9uOjp3YWl0VW50aWwrMHhiMF0NCiAgICBGcmFtZVswNl0gIFRyaWFnZSBTeW1ib2w6
IFtXVEYhYFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCc6OmAyJzo6PGxhbWJkYV8xPjo6b3Bl
cmF0b3IrMHhlNV0NCiAgICBGcmFtZVswN10gIFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RGOjpUaHJl
YWQ6OmVudHJ5UG9pbnQrMHhjMV0NCiAgICBGcmFtZVswOF0gIFRyaWFnZSBTeW1ib2w6IFtXVEYh
V1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KzB4OV0NCiAgICBGcmFtZVswOV0gIFRyaWFnZSBTeW1i
b2w6IFtXVEYhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCopKzB4NTBdDQogICAg
RnJhbWVbMGFdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysw
eDE0XQ0KICAgIEZyYW1lWzBiXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRT
dGFydCsweDIxXQ0KDQogIDM0IElkOiAxN2RjLjQwYzQNCiAgICBGcmFtZVswMF0gIEQxICAgU3lz
dGVtVGlkOiBbMHg0MGM0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFj
dGlvbl9UaW1lXyhtcyk6IFsweDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0QWRk
cmVzczogW1dURiF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50IChfX2NkZWNsKikodm9pZCAqKSwx
Pl0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDVj
ZDE5NTc0XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kOiBbY2ZlM2Rh
OGY3NDJkY2QxYWJlY2E5MDZiNmQ5NzFkYTA3ZmIzMDZmMV0NCiAgICBGcmFtZVswMF0gIEQyICAg
U3RhY2tfU0hBMV9IYXNoX01vZDogWzB4Y10NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hB
MV9IYXNoX1VuaXF1ZV9Nb2Q6IFs3MTc3YjQ5MjU4NGNmMjMzZGUyYjQ0ZWQ1ZTk5MzYwODVjNzEz
M2MzXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4
Y10NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbZDUyYWI2
YTY3YTE3MDlhOWRkNGE4Y2I3N2M4Y2JiMDUwM2EzMjg0Yl0NCiAgICBGcmFtZVswMF0gIEQyICAg
U3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFj
a19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbOTIxMTM0YWUwMzE3NWZlMjkyYjM4MDAzMDc4
M2MyODQ2ZDM3NDMxN10NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9G
dW5jX09mZnNldDogWzB4Y10NCiAgICBGcmFtZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs1
MzRmYjI3ODExMzM1NWRiNDU5ZjE5MzA4ZThiNjgyM2ZjYTRhNWVmXQ0KICAgIEZyYW1lWzAwXSAg
RDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91
cEhhc2g6IFtjZGM4ZWE1YzU0NmRiNzRjZTk3NTdjYTE1ZTE4OGQxNGM5NzdkMGI1XQ0KICAgIEZy
YW1lWzAyXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4Ml0NCiAgICBGcmFtZVswM10gIFNUUiAg
RnJhbWVHcm91cEhhc2g6IFs5NTI0ZmRlZWZjZmNlYWI1NTAyZDBjOGY3NTViN2QwY2NjZDE0MWY2
XQ0KICAgIEZyYW1lWzAzXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4OV0NCiAgICBGcmFtZVsw
YV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1
OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzBhXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4YV0NCiAg
ICBGcmFtZVswYl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2
MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZyYW1lWzBiXSAgRDIgICBGcmFtZUdyb3VwSGFzaDog
WzB4Yl0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVz
OiBbMHg0XQ0KICAgIEZyYW1lWzBhXSAgICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1l
WzAwXSAgICAgICBJc19VSVRocmVhZA0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6
IFsweDQwOV0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkUmVhZEFkZHJlc3M6IFsweDAwMDAwMDAw
MDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6
IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9SRUFE
OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfU3Rh
Y2tfRnJhbWVzOiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfRnJhbWVfQ291bnQ6IFsw
eDBdDQogICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAg
RnJhbWVbMDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3RhY2tfcmFuZ2U6IFsweDBdDQogICAgRnJh
bWVbMDBdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAg
RnJhbWVbMDJdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9B
cmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAwMWQwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0Fy
Y2hfQlgNCiAgICBGcmFtZVswMF0gIEQxICAgQXJjaF9DWF9SZWdpc3RlcjogWzB4MDAwMDAxZjA1
MjViMmNmMF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX0RYOiBbMHgwMDAwMDAxOGY2
OWZmNjMwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfU0kNCiAgICBGcmFtZVswMF0g
IEQxICAgQXJjaF9ESV9SZWdpc3RlcjogWzB4MDAwMDAxZjA1MjViMmNmMF0NCiAgICBGcmFtZVsw
MF0gIEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY2OWZmNTg4XQ0KICAgIEZyYW1lWzAw
XSAgRDEgICBzdGFja2FkZHJfQlA6IFsweDAwMDAwMDE4ZjY5ZmY1ZTBdDQogICAgRnJhbWVbMDBd
ICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg5NDkwNzY0XQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3I4OiBbMHgwMDAwMDAwMDAwMDAwMDBhXQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3I5OiBbMHgwMDAwMDAwMDAwMDAwMTExXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjEwOiBbMHgwMDAwMDFmMDBiY2U4OTUwXQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBzdGFja2FkZHJfbXNyX3IxMTogWzB4MDAwMDAwMThmNjlmZjU1MF0NCiAg
ICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX21zcl9yMTI6IFsweDAwMDAwMDE4ZjY5ZmY2MzBd
DQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3IxMw0KICAgIEZyYW1lWzAwXSAgRDEgICBz
dGFja2FkZHJfbXNyX3IxNDogWzB4MDAwMDAwMThmNjlmZjViMF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgbXNyX3IxNTogWzB4MDAwMDAxZjA1MjViMmNmOF0NCiAgICBGcmFtZVswMF0gIEQxICAgSW5z
dHJ1Y3Rpb25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4OTQ5MDc2NF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgU3RhY2tfQXR0cmlidXRlX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0KDQogICAgRnJh
bWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhTnRXYWl0Rm9yQWxlcnRCeVRocmVhZElkKzB4
MTRdDQogICAgRnJhbWVbMDFdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsU2xlZXBDb25kaXRp
b25WYXJpYWJsZVNSVysweDEzMV0NCiAgICBGcmFtZVswMl0gIFRyaWFnZSBTeW1ib2w6IFtLRVJO
RUxCQVNFIVNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcrMHgyOV0NCiAgICBGcmFtZVswM10gIFRy
aWFnZSBTeW1ib2w6IFtXVEYhV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCsweDc3XQ0K
ICAgIEZyYW1lWzA0XSAgVHJpYWdlIFN5bWJvbDogW1dURiFXVEY6OlBhcmtpbmdMb3Q6OnBhcmtD
b25kaXRpb25hbGx5SW1wbCsweGVmXQ0KICAgIEZyYW1lWzA1XSAgSWdub3JlIFN5bWJvbDogW1dU
RiFXVEY6OkNvbmRpdGlvbjo6d2FpdFVudGlsKzB4YjBdDQogICAgRnJhbWVbMDZdICBUcmlhZ2Ug
U3ltYm9sOiBbV1RGIWBXVEY6OkF1dG9tYXRpY1RocmVhZDo6c3RhcnQnOjpgMic6OjxsYW1iZGFf
MT46Om9wZXJhdG9yKzB4ZTVdDQogICAgRnJhbWVbMDddICBUcmlhZ2UgU3ltYm9sOiBbV1RGIVdU
Rjo6VGhyZWFkOjplbnRyeVBvaW50KzB4YzFdDQogICAgRnJhbWVbMDhdICBUcmlhZ2UgU3ltYm9s
OiBbV1RGIVdURjo6d3RmVGhyZWFkRW50cnlQb2ludCsweDldDQogICAgRnJhbWVbMDldICBUcmlh
Z2UgU3ltYm9sOiBbV1RGIXRocmVhZF9zdGFydDx1bnNpZ25lZCBpbnQgKF9fY2RlY2wqKSsweDUw
XQ0KICAgIEZyYW1lWzBhXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJbml0
VGh1bmsrMHgxNF0NCiAgICBGcmFtZVswYl0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxVc2Vy
VGhyZWFkU3RhcnQrMHgyMV0NCg0KICAzNSBJZDogMTdkYy40ZGM0DQogICAgRnJhbWVbMDBdICBE
MSAgIFN5c3RlbVRpZDogWzB4NGRjNF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVz
X0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRT
dGFydEFkZHJlc3M6IFtXVEYhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCopKHZv
aWQgKiksMT5dDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0YXJ0QWRkcmVzczogWzB4MDAw
MDdmZmQ1Y2QxOTU3NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZDog
W2NmZTNkYThmNzQyZGNkMWFiZWNhOTA2YjZkOTcxZGEwN2ZiMzA2ZjFdDQogICAgRnJhbWVbMDBd
ICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0
YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbNzE3N2I0OTI1ODRjZjIzM2RlMmI0NGVkNWU5OTM2
MDg1YzcxMzNjM10NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9N
b2Q6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzog
W2Q1MmFiNmE2N2ExNzA5YTlkZDRhOGNiNzdjOGNiYjA1MDNhMzI4NGJdDQogICAgRnJhbWVbMDBd
ICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4Y10NCiAgICBGcmFtZVswMF0gIFNU
UiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzkyMTEzNGFlMDMxNzVmZTI5MmIz
ODAwMzA3ODNjMjg0NmQzNzQzMTddDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFz
aF9Nb2RfRnVuY19PZmZzZXQ6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIgIEZyYW1lR3JvdXBI
YXNoOiBbNTM0ZmIyNzgxMTMzNTVkYjQ1OWYxOTMwOGU4YjY4MjNmY2E0YTVlZl0NCiAgICBGcmFt
ZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDFdDQogICAgRnJhbWVbMDJdICBTVFIgIEZy
YW1lR3JvdXBIYXNoOiBbY2RjOGVhNWM1NDZkYjc0Y2U5NzU3Y2ExNWUxODhkMTRjOTc3ZDBiNV0N
CiAgICBGcmFtZVswMl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDJdDQogICAgRnJhbWVbMDNd
ICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbOTUyNGZkZWVmY2ZjZWFiNTUwMmQwYzhmNzU1YjdkMGNj
Y2QxNDFmNl0NCiAgICBGcmFtZVswM10gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDldDQogICAg
RnJhbWVbMGFdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMwMGQzOWQzOGJi
Yzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVswYV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsw
eGFdDQogICAgRnJhbWVbMGJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2VmYzM4ZTYwODZj
ZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVswYl0gIEQyICAgRnJhbWVHcm91
cEhhc2g6IFsweGJdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9VbmlxdWVfU3RhY2tf
TW9kdWxlczogWzB4NF0NCiAgICBGcmFtZVswYV0gICAgICAgQ29tcGxldGVTdGFja1dhbGsNCiAg
ICBGcmFtZVswMF0gICAgICAgSXNfVUlUaHJlYWQNCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFk
TG9jYWxlOiBbMHg0MDldDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgw
MDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfQWRkcmVzc0F0UGFnZUJv
dW5kYXJ5OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251
bGxfUkVBRDogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVy
X29mX1N0YWNrX0ZyYW1lczogWzB4Y10NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0ZyYW1lX0Nv
dW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJZ25vcmVkX0ZyYW1lX0NvdW50OiBbMHgw
XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBGcmFtZXNfbm90X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0K
ICAgIEZyYW1lWzAwXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAxXSAgICAgICBXYWl0X0FQ
SQ0KICAgIEZyYW1lWzAyXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFy
X251bGxfQXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMDFkMF0NCiAgICBGcmFtZVswMF0gICAgICAg
bnVsbF9BcmNoX0JYDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfQ1hfUmVnaXN0ZXI6IFsweDAw
MDAwMWYwNTdiMDE1YjBdDQogICAgRnJhbWVbMDBdICAgICAgIE5PUF9BcmNoX0RYDQogICAgRnJh
bWVbMDBdICAgICAgIG51bGxfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX0RJX1Jl
Z2lzdGVyOiBbMHgwMDAwMDFmMDU3YjAxNWIwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2Fk
ZHJfU1A6IFsweDAwMDAwMDE4ZjZhZmZhZThdDQogICAgRnJhbWVbMDBdICAgICAgIE5PUF9BcmNo
X0JQDQogICAgRnJhbWVbMDBdICBEMSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2Zm
ZDg5NDkwNzY0XQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yOA0KICAgIEZyYW1lWzAw
XSAgICAgICBOVUxMX21zcl9yOQ0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjEwOiBbMHgwMDAw
MDFmMDRmNjVjN2UwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3IxMTogWzB4
MDAwMDAwMDAwMDAwMDAxZl0NCiAgICBGcmFtZVswMF0gICAgICAgTk9QX21zcl9yMTINCiAgICBG
cmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEzDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRk
cl9tc3JfcjE0OiBbMHgwMDAwMDAxOGY2YWZmYjEwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3Jf
cjE1OiBbMHgwMDAwMDFmMDU3YjAxNWI4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJbnN0cnVjdGlv
bl9Qb2ludGVyOiBbMHgwMDAwN2ZmZDg5NDkwNzY0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFj
a19BdHRyaWJ1dGVfRXh0cmFjdGlvbl9UaW1lXyhtcyk6IFsweDBdDQoNCiAgICBGcmFtZVswMF0g
IFRyaWFnZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JBbGVydEJ5VGhyZWFkSWQrMHgxNF0NCiAg
ICBGcmFtZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxTbGVlcENvbmRpdGlvblZhcmlh
YmxlU1JXKzB4MTMxXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTEJBU0Uh
U2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDI5XQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5
bWJvbDogW1dURiFXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KzB4NzddDQogICAgRnJh
bWVbMDRdICBUcmlhZ2UgU3ltYm9sOiBbV1RGIVdURjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlv
bmFsbHlJbXBsKzB4ZWZdDQogICAgRnJhbWVbMDVdICBJZ25vcmUgU3ltYm9sOiBbV1RGIVdURjo6
Q29uZGl0aW9uOjp3YWl0VW50aWwrMHhiMF0NCiAgICBGcmFtZVswNl0gIFRyaWFnZSBTeW1ib2w6
IFtXVEYhYFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCc6OmAyJzo6PGxhbWJkYV8xPjo6b3Bl
cmF0b3IrMHhlNV0NCiAgICBGcmFtZVswN10gIFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RGOjpUaHJl
YWQ6OmVudHJ5UG9pbnQrMHhjMV0NCiAgICBGcmFtZVswOF0gIFRyaWFnZSBTeW1ib2w6IFtXVEYh
V1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KzB4OV0NCiAgICBGcmFtZVswOV0gIFRyaWFnZSBTeW1i
b2w6IFtXVEYhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCopKzB4NTBdDQogICAg
RnJhbWVbMGFdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysw
eDE0XQ0KICAgIEZyYW1lWzBiXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRT
dGFydCsweDIxXQ0KDQogIDM2IElkOiAxN2RjLjVkYjQNCiAgICBGcmFtZVswMF0gIEQxICAgU3lz
dGVtVGlkOiBbMHg1ZGI0XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFj
dGlvbl9UaW1lXyhtcyk6IFsweDEwXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFk
ZHJlc3M6IFtXVEYhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCopKHZvaWQgKiks
MT5dDQogICAgRnJhbWVbMDBdICBEMSAgIFRocmVhZFN0YXJ0QWRkcmVzczogWzB4MDAwMDdmZmQ1
Y2QxOTU3NF0NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZDogW2NmZTNk
YThmNzQyZGNkMWFiZWNhOTA2YjZkOTcxZGEwN2ZiMzA2ZjFdDQogICAgRnJhbWVbMDBdICBEMiAg
IFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NI
QTFfSGFzaF9VbmlxdWVfTW9kOiBbNzE3N2I0OTI1ODRjZjIzM2RlMmI0NGVkNWU5OTM2MDg1Yzcx
MzNjM10NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsw
eGNdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogW2Q1MmFi
NmE2N2ExNzA5YTlkZDRhOGNiNzdjOGNiYjA1MDNhMzI4NGJdDQogICAgRnJhbWVbMDBdICBEMiAg
IFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogWzB4Y10NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzkyMTEzNGFlMDMxNzVmZTI5MmIzODAwMzA3
ODNjMjg0NmQzNzQzMTddDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Rf
RnVuY19PZmZzZXQ6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBb
NTM0ZmIyNzgxMTMzNTVkYjQ1OWYxOTMwOGU4YjY4MjNmY2E0YTVlZl0NCiAgICBGcmFtZVswMF0g
IEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDFdDQogICAgRnJhbWVbMDJdICBTVFIgIEZyYW1lR3Jv
dXBIYXNoOiBbY2RjOGVhNWM1NDZkYjc0Y2U5NzU3Y2ExNWUxODhkMTRjOTc3ZDBiNV0NCiAgICBG
cmFtZVswMl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDJdDQogICAgRnJhbWVbMDNdICBTVFIg
IEZyYW1lR3JvdXBIYXNoOiBbOTUyNGZkZWVmY2ZjZWFiNTUwMmQwYzhmNzU1YjdkMGNjY2QxNDFm
Nl0NCiAgICBGcmFtZVswM10gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweDldDQogICAgRnJhbWVb
MGFdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbN2VhNDkyZmViMTQxOWMwMGQzOWQzOGJiYzk1YmEw
NTkwMDAzMWEwOV0NCiAgICBGcmFtZVswYV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweGFdDQog
ICAgRnJhbWVbMGJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbMGIwY2VmYzM4ZTYwODZjZWJiMTJk
NjA2M2RhNjdmMzljNjg4YWU3OF0NCiAgICBGcmFtZVswYl0gIEQyICAgRnJhbWVHcm91cEhhc2g6
IFsweGJdDQogICAgRnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9VbmlxdWVfU3RhY2tfTW9kdWxl
czogWzB4NF0NCiAgICBGcmFtZVswYV0gICAgICAgQ29tcGxldGVTdGFja1dhbGsNCiAgICBGcmFt
ZVswMF0gIEQxICAgVGhyZWFkTG9jYWxlOiBbMHg0MDldDQogICAgRnJhbWVbMDBdICBEMSAgIEJh
ZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBC
YWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1l
WzAwXSAgRDEgICBuZWFyX251bGxfUkVBRDogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgTnVtYmVyX29mX1N0YWNrX0ZyYW1lczogWzB4Y10NCiAgICBGcmFtZVswMF0g
IEQxICAgQmFkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJZ25vcmVk
X0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBGcmFtZXNfbm90X2luX3N0
YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1l
WzAxXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAyXSAgICAgICBXYWl0X0FQSQ0KICAgIEZy
YW1lWzAwXSAgRDEgICBuZWFyX251bGxfQXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMDFkMF0NCiAg
ICBGcmFtZVswMF0gICAgICAgbnVsbF9BcmNoX0JYDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hf
Q1hfUmVnaXN0ZXI6IFsweDAwMDAwMWYwNTdiZWFmMzBdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0
YWNrYWRkcl9EWDogWzB4MDAwMDAwMThmNmJmZmFkMF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVs
bF9BcmNoX1NJDQogICAgRnJhbWVbMDBdICBEMSAgIEFyY2hfRElfUmVnaXN0ZXI6IFsweDAwMDAw
MWYwNTdiZWFmMzBdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDogWzB4MDAwMDAw
MThmNmJmZmEyOF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX0JQOiBbMHgwMDAwMDAx
OGY2YmZmYTgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBMb2FkZWRNb2R1bGVfQXJjaF9JUDogWzB4
MDAwMDdmZmQ4OTQ5MDc2NF0NCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3I4OiBbMHgwMDAwMDFm
MDBiZTgwZGIwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3I5OiBbMHgwMDAw
MDAwMDAwMDAwMGMwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTANCiAgICBGcmFt
ZVswMF0gIEQxICAgTmVhcl9OVUxMX21zcl9yMTE6IFsweDAwMDAwMDAwMDAwMDAyNDZdDQogICAg
RnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9tc3JfcjEyOiBbMHgwMDAwMDAxOGY2YmZmYWQwXQ0K
ICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMNCiAgICBGcmFtZVswMF0gIEQxICAgc3Rh
Y2thZGRyX21zcl9yMTQ6IFsweDAwMDAwMDE4ZjZiZmZhNTBdDQogICAgRnJhbWVbMDBdICBEMSAg
IG1zcl9yMTU6IFsweDAwMDAwMWYwNTdiZWFmMzhdDQogICAgRnJhbWVbMDBdICBEMSAgIEluc3Ry
dWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OTA3NjRdDQogICAgRnJhbWVbMDBdICBEMSAg
IFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCg0KICAgIEZyYW1l
WzAwXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIU50V2FpdEZvckFsZXJ0QnlUaHJlYWRJZCsweDE0
XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFNsZWVwQ29uZGl0aW9u
VmFyaWFibGVTUlcrMHgxMzFdDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVM
QkFTRSFTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKzB4MjldDQogICAgRnJhbWVbMDNdICBUcmlh
Z2UgU3ltYm9sOiBbV1RGIVdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQrMHg3N10NCiAg
ICBGcmFtZVswNF0gIFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RGOjpQYXJraW5nTG90OjpwYXJrQ29u
ZGl0aW9uYWxseUltcGwrMHhlZl0NCiAgICBGcmFtZVswNV0gIElnbm9yZSBTeW1ib2w6IFtXVEYh
V1RGOjpDb25kaXRpb246OndhaXRVbnRpbCsweGIwXQ0KICAgIEZyYW1lWzA2XSAgVHJpYWdlIFN5
bWJvbDogW1dURiFgV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0Jzo6YDInOjo8bGFtYmRhXzE+
OjpvcGVyYXRvcisweGU1XQ0KICAgIEZyYW1lWzA3XSAgVHJpYWdlIFN5bWJvbDogW1dURiFXVEY6
OlRocmVhZDo6ZW50cnlQb2ludCsweGMxXQ0KICAgIEZyYW1lWzA4XSAgVHJpYWdlIFN5bWJvbDog
W1dURiFXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQrMHg5XQ0KICAgIEZyYW1lWzA5XSAgVHJpYWdl
IFN5bWJvbDogW1dURiF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50IChfX2NkZWNsKikrMHg1MF0N
CiAgICBGcmFtZVswYV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRo
dW5rKzB4MTRdDQogICAgRnJhbWVbMGJdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRsVXNlclRo
cmVhZFN0YXJ0KzB4MjFdDQoNCiAgMzcgSWQ6IDE3ZGMuMjA4Yw0KICAgIEZyYW1lWzAwXSAgRDEg
ICBTeXN0ZW1UaWQ6IFsweDIwOGNdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0ZyYW1lc19F
eHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCiAgICBGcmFtZVswMF0gIFNUUiAgVGhyZWFkU3Rh
cnRBZGRyZXNzOiBbV1RGIXRocmVhZF9zdGFydDx1bnNpZ25lZCBpbnQgKF9fY2RlY2wqKSh2b2lk
ICopLDE+XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRTdGFydEFkZHJlc3M6IFsweDAwMDA3
ZmZkNWNkMTk1NzRdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFtj
ZmUzZGE4Zjc0MmRjZDFhYmVjYTkwNmI2ZDk3MWRhMDdmYjMwNmYxXQ0KICAgIEZyYW1lWzAwXSAg
RDIgICBTdGFja19TSEExX0hhc2hfTW9kOiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFj
a19TSEExX0hhc2hfVW5pcXVlX01vZDogWzcxNzdiNDkyNTg0Y2YyMzNkZTJiNDRlZDVlOTkzNjA4
NWM3MTMzYzNdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9k
OiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFtk
NTJhYjZhNjdhMTcwOWE5ZGQ0YThjYjc3YzhjYmIwNTAzYTMyODRiXQ0KICAgIEZyYW1lWzAwXSAg
RDIgICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmM6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIg
IFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFs5MjExMzRhZTAzMTc1ZmUyOTJiMzgw
MDMwNzgzYzI4NDZkMzc0MzE3XQ0KICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hf
TW9kX0Z1bmNfT2Zmc2V0OiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBGcmFtZUdyb3VwSGFz
aDogWzUzNGZiMjc4MTEzMzU1ZGI0NTlmMTkzMDhlOGI2ODIzZmNhNGE1ZWZdDQogICAgRnJhbWVb
MDBdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgxXQ0KICAgIEZyYW1lWzAyXSAgU1RSICBGcmFt
ZUdyb3VwSGFzaDogW2NkYzhlYTVjNTQ2ZGI3NGNlOTc1N2NhMTVlMTg4ZDE0Yzk3N2QwYjVdDQog
ICAgRnJhbWVbMDJdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHgyXQ0KICAgIEZyYW1lWzAzXSAg
U1RSICBGcmFtZUdyb3VwSGFzaDogWzk1MjRmZGVlZmNmY2VhYjU1MDJkMGM4Zjc1NWI3ZDBjY2Nk
MTQxZjZdDQogICAgRnJhbWVbMDNdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHg5XQ0KICAgIEZy
YW1lWzBhXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzdlYTQ5MmZlYjE0MTljMDBkMzlkMzhiYmM5
NWJhMDU5MDAwMzFhMDldDQogICAgRnJhbWVbMGFdICBEMiAgIEZyYW1lR3JvdXBIYXNoOiBbMHhh
XQ0KICAgIEZyYW1lWzBiXSAgU1RSICBGcmFtZUdyb3VwSGFzaDogWzBiMGNlZmMzOGU2MDg2Y2Vi
YjEyZDYwNjNkYTY3ZjM5YzY4OGFlNzhdDQogICAgRnJhbWVbMGJdICBEMiAgIEZyYW1lR3JvdXBI
YXNoOiBbMHhiXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfVW5pcXVlX1N0YWNrX01v
ZHVsZXM6IFsweDRdDQogICAgRnJhbWVbMGFdICAgICAgIENvbXBsZXRlU3RhY2tXYWxrDQogICAg
RnJhbWVbMDBdICBEMSAgIFRocmVhZExvY2FsZTogWzB4NDA5XQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBCYWRSZWFkQWRkcmVzczogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQx
ICAgQmFkX0FkZHJlc3NBdFBhZ2VCb3VuZGFyeTogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBG
cmFtZVswMF0gIEQxICAgbmVhcl9udWxsX1JFQUQ6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAg
RnJhbWVbMDBdICBEMSAgIE51bWJlcl9vZl9TdGFja19GcmFtZXM6IFsweGNdDQogICAgRnJhbWVb
MDBdICBEMSAgIEJhZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgSWdu
b3JlZF9GcmFtZV9Db3VudDogWzB4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgRnJhbWVzX25vdF9p
bl9zdGFja19yYW5nZTogWzB4MF0NCiAgICBGcmFtZVswMF0gICAgICAgV2FpdF9BUEkNCiAgICBG
cmFtZVswMV0gICAgICAgV2FpdF9BUEkNCiAgICBGcmFtZVswMl0gICAgICAgV2FpdF9BUEkNCiAg
ICBGcmFtZVswMF0gIEQxICAgbmVhcl9udWxsX0FyY2hfQVg6IFsweDAwMDAwMDAwMDAwMDAxZDBd
DQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9CWA0KICAgIEZyYW1lWzAwXSAgRDEgICBB
cmNoX0NYX1JlZ2lzdGVyOiBbMHgwMDAwMDFmMDUyNWJjYmIwXQ0KICAgIEZyYW1lWzAwXSAgRDEg
ICBzdGFja2FkZHJfRFg6IFsweDAwMDAwMDE4ZjZjZmY4ZDBdDQogICAgRnJhbWVbMDBdICAgICAg
IG51bGxfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBBcmNoX0RJX1JlZ2lzdGVyOiBbMHgw
MDAwMDFmMDUyNWJjYmIwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfU1A6IFsweDAw
MDAwMDE4ZjZjZmY4MjhdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9CUDogWzB4MDAw
MDAwMThmNmNmZjg4MF0NCiAgICBGcmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6
IFsweDAwMDA3ZmZkODk0OTA3NjRdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNyX3I4DQog
ICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yOTogWzB4MDAwMDAxZjA1NzdkMDAwMF0NCiAgICBGcmFt
ZVswMF0gICAgICAgTlVMTF9tc3JfcjEwDQogICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yMTE6IFsw
eDAwMDAwMWYwNTc5OTMzYzBdDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9tc3JfcjEy
OiBbMHgwMDAwMDAxOGY2Y2ZmOGQwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBOVUxMX21zcl9yMTMN
CiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX21zcl9yMTQ6IFsweDAwMDAwMDE4ZjZjZmY4
NTBdDQogICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yMTU6IFsweDAwMDAwMWYwNTI1YmNiYjhdDQog
ICAgRnJhbWVbMDBdICBEMSAgIEluc3RydWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OTA3
NjRdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVf
KG1zKTogWzB4MF0NCg0KICAgIEZyYW1lWzAwXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIU50V2Fp
dEZvckFsZXJ0QnlUaHJlYWRJZCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDog
W250ZGxsIVJ0bFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcrMHgxMzFdDQogICAgRnJhbWVbMDJd
ICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMQkFTRSFTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKzB4
MjldDQogICAgRnJhbWVbMDNdICBUcmlhZ2UgU3ltYm9sOiBbV1RGIVdURjo6VGhyZWFkQ29uZGl0
aW9uOjp0aW1lZFdhaXQrMHg3N10NCiAgICBGcmFtZVswNF0gIFRyaWFnZSBTeW1ib2w6IFtXVEYh
V1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseUltcGwrMHhlZl0NCiAgICBGcmFtZVsw
NV0gIElnbm9yZSBTeW1ib2w6IFtXVEYhV1RGOjpDb25kaXRpb246OndhaXRVbnRpbCsweGIwXQ0K
ICAgIEZyYW1lWzA2XSAgVHJpYWdlIFN5bWJvbDogW1dURiFgV1RGOjpBdXRvbWF0aWNUaHJlYWQ6
OnN0YXJ0Jzo6YDInOjo8bGFtYmRhXzE+OjpvcGVyYXRvcisweGU1XQ0KICAgIEZyYW1lWzA3XSAg
VHJpYWdlIFN5bWJvbDogW1dURiFXVEY6OlRocmVhZDo6ZW50cnlQb2ludCsweGMxXQ0KICAgIEZy
YW1lWzA4XSAgVHJpYWdlIFN5bWJvbDogW1dURiFXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQrMHg5
XQ0KICAgIEZyYW1lWzA5XSAgVHJpYWdlIFN5bWJvbDogW1dURiF0aHJlYWRfc3RhcnQ8dW5zaWdu
ZWQgaW50IChfX2NkZWNsKikrMHg1MF0NCiAgICBGcmFtZVswYV0gIFRyaWFnZSBTeW1ib2w6IFtL
RVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTRdDQogICAgRnJhbWVbMGJdICBUcmlhZ2Ug
U3ltYm9sOiBbbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjFdDQoNCiAgMzggSWQ6IDE3ZGMu
NWVlOA0KICAgIEZyYW1lWzAwXSAgRDEgICBTeXN0ZW1UaWQ6IFsweDVlZThdDQogICAgRnJhbWVb
MDBdICBEMSAgIFN0YWNrX0ZyYW1lc19FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MTBdDQogICAg
RnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczogW1dURiF0aHJlYWRfc3RhcnQ8dW5z
aWduZWQgaW50IChfX2NkZWNsKikodm9pZCAqKSwxPl0NCiAgICBGcmFtZVswMF0gIEQxICAgVGhy
ZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDVjZDE5NTc0XQ0KICAgIEZyYW1lWzAwXSAgU1RS
ICBTdGFja19TSEExX0hhc2hfTW9kOiBbY2ZlM2RhOGY3NDJkY2QxYWJlY2E5MDZiNmQ5NzFkYTA3
ZmIzMDZmMV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZDogWzB4Y10N
CiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFs3MTc3YjQ5
MjU4NGNmMjMzZGUyYjQ0ZWQ1ZTk5MzYwODVjNzEzM2MzXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBT
dGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4Y10NCiAgICBGcmFtZVswMF0gIFNUUiAgU3Rh
Y2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbZDUyYWI2YTY3YTE3MDlhOWRkNGE4Y2I3N2M4Y2JiMDUw
M2EzMjg0Yl0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBb
MHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kX0Z1bmNfT2Zmc2V0
OiBbOTIxMTM0YWUwMzE3NWZlMjkyYjM4MDAzMDc4M2MyODQ2ZDM3NDMxN10NCiAgICBGcmFtZVsw
MF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09mZnNldDogWzB4Y10NCiAgICBGcmFt
ZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs1MzRmYjI3ODExMzM1NWRiNDU5ZjE5MzA4ZThi
NjgyM2ZjYTRhNWVmXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4MV0N
CiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFtjZGM4ZWE1YzU0NmRiNzRjZTk3
NTdjYTE1ZTE4OGQxNGM5NzdkMGI1XQ0KICAgIEZyYW1lWzAyXSAgRDIgICBGcmFtZUdyb3VwSGFz
aDogWzB4Ml0NCiAgICBGcmFtZVswM10gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs5NTI0ZmRlZWZj
ZmNlYWI1NTAyZDBjOGY3NTViN2QwY2NjZDE0MWY2XQ0KICAgIEZyYW1lWzAzXSAgRDIgICBGcmFt
ZUdyb3VwSGFzaDogWzB4OV0NCiAgICBGcmFtZVswYV0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs3
ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMxYTA5XQ0KICAgIEZyYW1lWzBhXSAg
RDIgICBGcmFtZUdyb3VwSGFzaDogWzB4YV0NCiAgICBGcmFtZVswYl0gIFNUUiAgRnJhbWVHcm91
cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2N2YzOWM2ODhhZTc4XQ0KICAgIEZy
YW1lWzBiXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4Yl0NCiAgICBGcmFtZVswMF0gIEQxICAg
TnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVzOiBbMHg0XQ0KICAgIEZyYW1lWzBhXSAgICAg
ICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAgRDEgICBUaHJlYWRMb2NhbGU6IFsw
eDQwOV0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkUmVhZEFkZHJlc3M6IFsweDAwMDAwMDAwMDAw
MDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9BZGRyZXNzQXRQYWdlQm91bmRhcnk6IFsw
eDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9SRUFEOiBb
MHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOdW1iZXJfb2ZfU3RhY2tf
RnJhbWVzOiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfRnJhbWVfQ291bnQ6IFsweDBd
DQogICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJh
bWVbMDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3RhY2tfcmFuZ2U6IFsweDBdDQogICAgRnJhbWVb
MDBdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDFdICAgICAgIFdhaXRfQVBJDQogICAgRnJh
bWVbMDJdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBdICBEMSAgIG5lYXJfbnVsbF9BcmNo
X0FYOiBbMHgwMDAwMDAwMDAwMDAwMWQwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hf
QlgNCiAgICBGcmFtZVswMF0gIEQxICAgQXJjaF9DWF9SZWdpc3RlcjogWzB4MDAwMDAxZjA0Zjcw
YzU3MF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX0RYOiBbMHgwMDAwMDAxOGY2ZGZm
NDIwXQ0KICAgIEZyYW1lWzAwXSAgICAgICBudWxsX0FyY2hfU0kNCiAgICBGcmFtZVswMF0gIEQx
ICAgQXJjaF9ESV9SZWdpc3RlcjogWzB4MDAwMDAxZjA0ZjcwYzU3MF0NCiAgICBGcmFtZVswMF0g
IEQxICAgc3RhY2thZGRyX1NQOiBbMHgwMDAwMDAxOGY2ZGZmMzc4XQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBzdGFja2FkZHJfQlA6IFsweDAwMDAwMDE4ZjZkZmYzZDBdDQogICAgRnJhbWVbMDBdICBE
MSAgIExvYWRlZE1vZHVsZV9BcmNoX0lQOiBbMHgwMDAwN2ZmZDg5NDkwNzY0XQ0KICAgIEZyYW1l
WzAwXSAgICAgICBOVUxMX21zcl9yOA0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNy
X3I5OiBbMHgwMDAwMDAwMDAwMDAwMWM2XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjEwOiBb
MHgwMDAwMDFmMDRmNjVjN2UwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBOZWFyX05VTExfbXNyX3Ix
MTogWzB4MDAwMDAwMDAwMDAwMDAxZl0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX21z
cl9yMTI6IFsweDAwMDAwMDE4ZjZkZmY0MjBdDQogICAgRnJhbWVbMDBdICAgICAgIE5VTExfbXNy
X3IxMw0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfbXNyX3IxNDogWzB4MDAwMDAwMThm
NmRmZjNhMF0NCiAgICBGcmFtZVswMF0gIEQxICAgbXNyX3IxNTogWzB4MDAwMDAxZjA0ZjcwYzU3
OF0NCiAgICBGcmFtZVswMF0gIEQxICAgSW5zdHJ1Y3Rpb25fUG9pbnRlcjogWzB4MDAwMDdmZmQ4
OTQ5MDc2NF0NCiAgICBGcmFtZVswMF0gIEQxICAgU3RhY2tfQXR0cmlidXRlX0V4dHJhY3Rpb25f
VGltZV8obXMpOiBbMHgwXQ0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwh
TnRXYWl0Rm9yQWxlcnRCeVRocmVhZElkKzB4MTRdDQogICAgRnJhbWVbMDFdICBUcmlhZ2UgU3lt
Ym9sOiBbbnRkbGwhUnRsU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDEzMV0NCiAgICBGcmFt
ZVswMl0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUxCQVNFIVNsZWVwQ29uZGl0aW9uVmFyaWFibGVT
UlcrMHgyOV0NCiAgICBGcmFtZVswM10gIFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RGOjpUaHJlYWRD
b25kaXRpb246OnRpbWVkV2FpdCsweDc3XQ0KICAgIEZyYW1lWzA0XSAgVHJpYWdlIFN5bWJvbDog
W1dURiFXVEY6OlBhcmtpbmdMb3Q6OnBhcmtDb25kaXRpb25hbGx5SW1wbCsweGVmXQ0KICAgIEZy
YW1lWzA1XSAgSWdub3JlIFN5bWJvbDogW1dURiFXVEY6OkNvbmRpdGlvbjo6d2FpdFVudGlsKzB4
YjBdDQogICAgRnJhbWVbMDZdICBUcmlhZ2UgU3ltYm9sOiBbV1RGIWBXVEY6OkF1dG9tYXRpY1Ro
cmVhZDo6c3RhcnQnOjpgMic6OjxsYW1iZGFfMT46Om9wZXJhdG9yKzB4ZTVdDQogICAgRnJhbWVb
MDddICBUcmlhZ2UgU3ltYm9sOiBbV1RGIVdURjo6VGhyZWFkOjplbnRyeVBvaW50KzB4YzFdDQog
ICAgRnJhbWVbMDhdICBUcmlhZ2UgU3ltYm9sOiBbV1RGIVdURjo6d3RmVGhyZWFkRW50cnlQb2lu
dCsweDldDQogICAgRnJhbWVbMDldICBUcmlhZ2UgU3ltYm9sOiBbV1RGIXRocmVhZF9zdGFydDx1
bnNpZ25lZCBpbnQgKF9fY2RlY2wqKSsweDUwXQ0KICAgIEZyYW1lWzBhXSAgVHJpYWdlIFN5bWJv
bDogW0tFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNF0NCiAgICBGcmFtZVswYl0gIFRy
aWFnZSBTeW1ib2w6IFtudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMV0NCg0KICAzOSBJZDog
MTdkYy41ZDcwDQogICAgRnJhbWVbMDBdICBEMSAgIFN5c3RlbVRpZDogWzB4NWQ3MF0NCiAgICBG
cmFtZVswMF0gIEQxICAgU3RhY2tfRnJhbWVzX0V4dHJhY3Rpb25fVGltZV8obXMpOiBbMHgwXQ0K
ICAgIEZyYW1lWzAwXSAgU1RSICBUaHJlYWRTdGFydEFkZHJlc3M6IFtXVEYhdGhyZWFkX3N0YXJ0
PHVuc2lnbmVkIGludCAoX19jZGVjbCopKHZvaWQgKiksMT5dDQogICAgRnJhbWVbMDBdICBEMSAg
IFRocmVhZFN0YXJ0QWRkcmVzczogWzB4MDAwMDdmZmQ1Y2QxOTU3NF0NCiAgICBGcmFtZVswMF0g
IFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZDogW2NmZTNkYThmNzQyZGNkMWFiZWNhOTA2YjZkOTcx
ZGEwN2ZiMzA2ZjFdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2Q6IFsw
eGNdDQogICAgRnJhbWVbMDBdICBTVFIgIFN0YWNrX1NIQTFfSGFzaF9VbmlxdWVfTW9kOiBbNzE3
N2I0OTI1ODRjZjIzM2RlMmI0NGVkNWU5OTM2MDg1YzcxMzNjM10NCiAgICBGcmFtZVswMF0gIEQy
ICAgU3RhY2tfU0hBMV9IYXNoX1VuaXF1ZV9Nb2Q6IFsweGNdDQogICAgRnJhbWVbMDBdICBTVFIg
IFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuYzogW2Q1MmFiNmE2N2ExNzA5YTlkZDRhOGNiNzdjOGNi
YjA1MDNhMzI4NGJdDQogICAgRnJhbWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVu
YzogWzB4Y10NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09m
ZnNldDogWzkyMTEzNGFlMDMxNzVmZTI5MmIzODAwMzA3ODNjMjg0NmQzNzQzMTddDQogICAgRnJh
bWVbMDBdICBEMiAgIFN0YWNrX1NIQTFfSGFzaF9Nb2RfRnVuY19PZmZzZXQ6IFsweGNdDQogICAg
RnJhbWVbMDBdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbNTM0ZmIyNzgxMTMzNTVkYjQ1OWYxOTMw
OGU4YjY4MjNmY2E0YTVlZl0NCiAgICBGcmFtZVswMF0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsw
eDFdDQogICAgRnJhbWVbMDJdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbY2RjOGVhNWM1NDZkYjc0
Y2U5NzU3Y2ExNWUxODhkMTRjOTc3ZDBiNV0NCiAgICBGcmFtZVswMl0gIEQyICAgRnJhbWVHcm91
cEhhc2g6IFsweDJdDQogICAgRnJhbWVbMDNdICBTVFIgIEZyYW1lR3JvdXBIYXNoOiBbOTUyNGZk
ZWVmY2ZjZWFiNTUwMmQwYzhmNzU1YjdkMGNjY2QxNDFmNl0NCiAgICBGcmFtZVswM10gIEQyICAg
RnJhbWVHcm91cEhhc2g6IFsweDldDQogICAgRnJhbWVbMGFdICBTVFIgIEZyYW1lR3JvdXBIYXNo
OiBbN2VhNDkyZmViMTQxOWMwMGQzOWQzOGJiYzk1YmEwNTkwMDAzMWEwOV0NCiAgICBGcmFtZVsw
YV0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweGFdDQogICAgRnJhbWVbMGJdICBTVFIgIEZyYW1l
R3JvdXBIYXNoOiBbMGIwY2VmYzM4ZTYwODZjZWJiMTJkNjA2M2RhNjdmMzljNjg4YWU3OF0NCiAg
ICBGcmFtZVswYl0gIEQyICAgRnJhbWVHcm91cEhhc2g6IFsweGJdDQogICAgRnJhbWVbMDBdICBE
MSAgIE51bWJlcl9vZl9VbmlxdWVfU3RhY2tfTW9kdWxlczogWzB4NF0NCiAgICBGcmFtZVswYV0g
ICAgICAgQ29tcGxldGVTdGFja1dhbGsNCiAgICBGcmFtZVswMF0gIEQxICAgVGhyZWFkTG9jYWxl
OiBbMHg0MDldDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZFJlYWRBZGRyZXNzOiBbMHgwMDAwMDAw
MDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBCYWRfQWRkcmVzc0F0UGFnZUJvdW5kYXJ5
OiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxfUkVB
RDogWzB4MDAwMDAwMDAwMDAwMTAwMF0NCiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1N0
YWNrX0ZyYW1lczogWzB4Y10NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkX0ZyYW1lX0NvdW50OiBb
MHgwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBJZ25vcmVkX0ZyYW1lX0NvdW50OiBbMHgwXQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBGcmFtZXNfbm90X2luX3N0YWNrX3JhbmdlOiBbMHgwXQ0KICAgIEZy
YW1lWzAwXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAxXSAgICAgICBXYWl0X0FQSQ0KICAg
IEZyYW1lWzAyXSAgICAgICBXYWl0X0FQSQ0KICAgIEZyYW1lWzAwXSAgRDEgICBuZWFyX251bGxf
QXJjaF9BWDogWzB4MDAwMDAwMDAwMDAwMDFkMF0NCiAgICBGcmFtZVswMF0gICAgICAgbnVsbF9B
cmNoX0JYDQogICAgRnJhbWVbMDBdICAgICAgIEFTQ0lJX0FyY2hfQ1gNCiAgICBGcmFtZVswMF0g
IEQxICAgc3RhY2thZGRyX0RYOiBbMHgwMDAwMDAxOGY2ZWZmNjMwXQ0KICAgIEZyYW1lWzAwXSAg
ICAgICBudWxsX0FyY2hfU0kNCiAgICBGcmFtZVswMF0gICAgICAgQVNDSUlfQXJjaF9ESQ0KICAg
IEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfU1A6IFsweDAwMDAwMDE4ZjZlZmY1ODhdDQogICAg
RnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9CUDogWzB4MDAwMDAwMThmNmVmZjVlMF0NCiAgICBG
cmFtZVswMF0gIEQxICAgTG9hZGVkTW9kdWxlX0FyY2hfSVA6IFsweDAwMDA3ZmZkODk0OTA3NjRd
DQogICAgRnJhbWVbMDBdICBEMSAgIHZmdF9tc3Jfcjg6IFsweDAwMDA3ZmZkM2JhNmU3MDBdDQog
ICAgRnJhbWVbMDBdICBEMSAgIG1zcl9yOTogWzB4MDAwMDAwMThmNDU5ZDNiOF0NCiAgICBGcmFt
ZVswMF0gIEQxICAgc3RhY2thZGRyX21zcl9yMTA6IFsweDAwMDAwMDE4ZjZlZmIwMDBdDQogICAg
RnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9tc3JfcjExOiBbMHgwMDAwMDAxOGY2ZWZiMDAwXQ0K
ICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfbXNyX3IxMjogWzB4MDAwMDAwMThmNmVmZjYz
MF0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEzDQogICAgRnJhbWVbMDBdICBEMSAg
IHN0YWNrYWRkcl9tc3JfcjE0OiBbMHgwMDAwMDAxOGY2ZWZmNWIwXQ0KICAgIEZyYW1lWzAwXSAg
ICAgICBBU0NJSV9tc3JfcjE1DQogICAgRnJhbWVbMDBdICBEMSAgIEluc3RydWN0aW9uX1BvaW50
ZXI6IFsweDAwMDA3ZmZkODk0OTA3NjRdDQogICAgRnJhbWVbMDBdICBEMSAgIFN0YWNrX0F0dHJp
YnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4N2RdDQoNCiAgICBGcmFtZVswMF0gIFRyaWFn
ZSBTeW1ib2w6IFtudGRsbCFOdFdhaXRGb3JBbGVydEJ5VGhyZWFkSWQrMHgxNF0NCiAgICBGcmFt
ZVswMV0gIFRyaWFnZSBTeW1ib2w6IFtudGRsbCFSdGxTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JX
KzB4MTMxXQ0KICAgIEZyYW1lWzAyXSAgVHJpYWdlIFN5bWJvbDogW0tFUk5FTEJBU0UhU2xlZXBD
b25kaXRpb25WYXJpYWJsZVNSVysweDI5XQ0KICAgIEZyYW1lWzAzXSAgVHJpYWdlIFN5bWJvbDog
W1dURiFXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KzB4NzddDQogICAgRnJhbWVbMDRd
ICBUcmlhZ2UgU3ltYm9sOiBbV1RGIVdURjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHlJ
bXBsKzB4ZWZdDQogICAgRnJhbWVbMDVdICBJZ25vcmUgU3ltYm9sOiBbV1RGIVdURjo6Q29uZGl0
aW9uOjp3YWl0VW50aWwrMHhiMF0NCiAgICBGcmFtZVswNl0gIFRyaWFnZSBTeW1ib2w6IFtXVEYh
YFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCc6OmAyJzo6PGxhbWJkYV8xPjo6b3BlcmF0b3Ir
MHhlNV0NCiAgICBGcmFtZVswN10gIFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RGOjpUaHJlYWQ6OmVu
dHJ5UG9pbnQrMHhjMV0NCiAgICBGcmFtZVswOF0gIFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RGOjp3
dGZUaHJlYWRFbnRyeVBvaW50KzB4OV0NCiAgICBGcmFtZVswOV0gIFRyaWFnZSBTeW1ib2w6IFtX
VEYhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAoX19jZGVjbCopKzB4NTBdDQogICAgRnJhbWVb
MGFdICBUcmlhZ2UgU3ltYm9sOiBbS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0XQ0K
ICAgIEZyYW1lWzBiXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsw
eDIxXQ0KDQogIDQwIElkOiAxN2RjLjJjMTgNCiAgICBGcmFtZVswMF0gIEQxICAgU3lzdGVtVGlk
OiBbMHgyYzE4XQ0KICAgIEZyYW1lWzAwXSAgRDEgICBTdGFja19GcmFtZXNfRXh0cmFjdGlvbl9U
aW1lXyhtcyk6IFsweDBdDQogICAgRnJhbWVbMDBdICBTVFIgIFRocmVhZFN0YXJ0QWRkcmVzczog
W1dURiF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50IChfX2NkZWNsKikodm9pZCAqKSwxPl0NCiAg
ICBGcmFtZVswMF0gIEQxICAgVGhyZWFkU3RhcnRBZGRyZXNzOiBbMHgwMDAwN2ZmZDVjZDE5NTc0
XQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEExX0hhc2hfTW9kOiBbY2ZlM2RhOGY3NDJk
Y2QxYWJlY2E5MDZiNmQ5NzFkYTA3ZmIzMDZmMV0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tf
U0hBMV9IYXNoX01vZDogWzB4Y10NCiAgICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNo
X1VuaXF1ZV9Nb2Q6IFs3MTc3YjQ5MjU4NGNmMjMzZGUyYjQ0ZWQ1ZTk5MzYwODVjNzEzM2MzXQ0K
ICAgIEZyYW1lWzAwXSAgRDIgICBTdGFja19TSEExX0hhc2hfVW5pcXVlX01vZDogWzB4Y10NCiAg
ICBGcmFtZVswMF0gIFNUUiAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jOiBbZDUyYWI2YTY3YTE3
MDlhOWRkNGE4Y2I3N2M4Y2JiMDUwM2EzMjg0Yl0NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tf
U0hBMV9IYXNoX01vZF9GdW5jOiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgU1RSICBTdGFja19TSEEx
X0hhc2hfTW9kX0Z1bmNfT2Zmc2V0OiBbOTIxMTM0YWUwMzE3NWZlMjkyYjM4MDAzMDc4M2MyODQ2
ZDM3NDMxN10NCiAgICBGcmFtZVswMF0gIEQyICAgU3RhY2tfU0hBMV9IYXNoX01vZF9GdW5jX09m
ZnNldDogWzB4Y10NCiAgICBGcmFtZVswMF0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFs1MzRmYjI3
ODExMzM1NWRiNDU5ZjE5MzA4ZThiNjgyM2ZjYTRhNWVmXQ0KICAgIEZyYW1lWzAwXSAgRDIgICBG
cmFtZUdyb3VwSGFzaDogWzB4MV0NCiAgICBGcmFtZVswMl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6
IFtjZGM4ZWE1YzU0NmRiNzRjZTk3NTdjYTE1ZTE4OGQxNGM5NzdkMGI1XQ0KICAgIEZyYW1lWzAy
XSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4Ml0NCiAgICBGcmFtZVswM10gIFNUUiAgRnJhbWVH
cm91cEhhc2g6IFs5NTI0ZmRlZWZjZmNlYWI1NTAyZDBjOGY3NTViN2QwY2NjZDE0MWY2XQ0KICAg
IEZyYW1lWzAzXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4OV0NCiAgICBGcmFtZVswYV0gIFNU
UiAgRnJhbWVHcm91cEhhc2g6IFs3ZWE0OTJmZWIxNDE5YzAwZDM5ZDM4YmJjOTViYTA1OTAwMDMx
YTA5XQ0KICAgIEZyYW1lWzBhXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4YV0NCiAgICBGcmFt
ZVswYl0gIFNUUiAgRnJhbWVHcm91cEhhc2g6IFswYjBjZWZjMzhlNjA4NmNlYmIxMmQ2MDYzZGE2
N2YzOWM2ODhhZTc4XQ0KICAgIEZyYW1lWzBiXSAgRDIgICBGcmFtZUdyb3VwSGFzaDogWzB4Yl0N
CiAgICBGcmFtZVswMF0gIEQxICAgTnVtYmVyX29mX1VuaXF1ZV9TdGFja19Nb2R1bGVzOiBbMHg0
XQ0KICAgIEZyYW1lWzBhXSAgICAgICBDb21wbGV0ZVN0YWNrV2Fsaw0KICAgIEZyYW1lWzAwXSAg
RDEgICBUaHJlYWRMb2NhbGU6IFsweDQwOV0NCiAgICBGcmFtZVswMF0gIEQxICAgQmFkUmVhZEFk
ZHJlc3M6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEJhZF9BZGRy
ZXNzQXRQYWdlQm91bmRhcnk6IFsweDAwMDAwMDAwMDAwMDEwMDBdDQogICAgRnJhbWVbMDBdICBE
MSAgIG5lYXJfbnVsbF9SRUFEOiBbMHgwMDAwMDAwMDAwMDAxMDAwXQ0KICAgIEZyYW1lWzAwXSAg
RDEgICBOdW1iZXJfb2ZfU3RhY2tfRnJhbWVzOiBbMHhjXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBC
YWRfRnJhbWVfQ291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIElnbm9yZWRfRnJhbWVf
Q291bnQ6IFsweDBdDQogICAgRnJhbWVbMDBdICBEMSAgIEZyYW1lc19ub3RfaW5fc3RhY2tfcmFu
Z2U6IFsweDBdDQogICAgRnJhbWVbMDBdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDFdICAg
ICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDJdICAgICAgIFdhaXRfQVBJDQogICAgRnJhbWVbMDBd
ICBEMSAgIG5lYXJfbnVsbF9BcmNoX0FYOiBbMHgwMDAwMDAwMDAwMDAwMWQwXQ0KICAgIEZyYW1l
WzAwXSAgICAgICBudWxsX0FyY2hfQlgNCiAgICBGcmFtZVswMF0gICAgICAgQVNDSUlfQXJjaF9D
WA0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfRFg6IFsweDAwMDAwMDE4ZjZmZmY4MjBd
DQogICAgRnJhbWVbMDBdICAgICAgIG51bGxfQXJjaF9TSQ0KICAgIEZyYW1lWzAwXSAgICAgICBB
U0NJSV9BcmNoX0RJDQogICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9TUDogWzB4MDAwMDAw
MThmNmZmZjc3OF0NCiAgICBGcmFtZVswMF0gIEQxICAgc3RhY2thZGRyX0JQOiBbMHgwMDAwMDAx
OGY2ZmZmN2QwXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBMb2FkZWRNb2R1bGVfQXJjaF9JUDogWzB4
MDAwMDdmZmQ4OTQ5MDc2NF0NCiAgICBGcmFtZVswMF0gICAgICAgT25lQml0X21zcl9yOA0KICAg
IEZyYW1lWzAwXSAgRDEgICBtc3Jfcjk6IFsweDAwMDAwMWYwNTdkMTAwMjBdDQogICAgRnJhbWVb
MDBdICAgICAgIE5VTExfbXNyX3IxMA0KICAgIEZyYW1lWzAwXSAgRDEgICBtc3JfcjExOiBbMHg4
MDAwMDAwMDAwMDAwMDdhXQ0KICAgIEZyYW1lWzAwXSAgRDEgICBzdGFja2FkZHJfbXNyX3IxMjog
WzB4MDAwMDAwMThmNmZmZjgyMF0NCiAgICBGcmFtZVswMF0gICAgICAgTlVMTF9tc3JfcjEzDQog
ICAgRnJhbWVbMDBdICBEMSAgIHN0YWNrYWRkcl9tc3JfcjE0OiBbMHgwMDAwMDAxOGY2ZmZmN2Ew
XQ0KICAgIEZyYW1lWzAwXSAgICAgICBBU0NJSV9tc3JfcjE1DQogICAgRnJhbWVbMDBdICBEMSAg
IEluc3RydWN0aW9uX1BvaW50ZXI6IFsweDAwMDA3ZmZkODk0OTA3NjRdDQogICAgRnJhbWVbMDBd
ICBEMSAgIFN0YWNrX0F0dHJpYnV0ZV9FeHRyYWN0aW9uX1RpbWVfKG1zKTogWzB4MF0NCg0KICAg
IEZyYW1lWzAwXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIU50V2FpdEZvckFsZXJ0QnlUaHJlYWRJ
ZCsweDE0XQ0KICAgIEZyYW1lWzAxXSAgVHJpYWdlIFN5bWJvbDogW250ZGxsIVJ0bFNsZWVwQ29u
ZGl0aW9uVmFyaWFibGVTUlcrMHgxMzFdDQogICAgRnJhbWVbMDJdICBUcmlhZ2UgU3ltYm9sOiBb
S0VSTkVMQkFTRSFTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKzB4MjldDQogICAgRnJhbWVbMDNd
ICBUcmlhZ2UgU3ltYm9sOiBbV1RGIVdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQrMHg3
N10NCiAgICBGcmFtZVswNF0gIFRyaWFnZSBTeW1ib2w6IFtXVEYhV1RGOjpQYXJraW5nTG90Ojpw
YXJrQ29uZGl0aW9uYWxseUltcGwrMHhlZl0NCiAgICBGcmFtZVswNV0gIElnbm9yZSBTeW1ib2w6
IFtXVEYhV1RGOjpDb25kaXRpb246OndhaXRVbnRpbCsweGIwXQ0KICAgIEZyYW1lWzA2XSAgVHJp
YWdlIFN5bWJvbDogW1dURiFgV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0Jzo6YDInOjo8bGFt
YmRhXzE+OjpvcGVyYXRvcisweGU1XQ0KICAgIEZyYW1lWzA3XSAgVHJpYWdlIFN5bWJvbDogW1dU
RiFXVEY6OlRocmVhZDo6ZW50cnlQb2ludCsweGMxXQ0KICAgIEZyYW1lWzA4XSAgVHJpYWdlIFN5
bWJvbDogW1dURiFXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQrMHg5XQ0KICAgIEZyYW1lWzA5XSAg
VHJpYWdlIFN5bWJvbDogW1dURiF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50IChfX2NkZWNsKikr
MHg1MF0NCiAgICBGcmFtZVswYV0gIFRyaWFnZSBTeW1ib2w6IFtLRVJORUwzMiFCYXNlVGhyZWFk
SW5pdFRodW5rKzB4MTRdDQogICAgRnJhbWVbMGJdICBUcmlhZ2UgU3ltYm9sOiBbbnRkbGwhUnRs
VXNlclRocmVhZFN0YXJ0KzB4MjFdDQoNCiAgLTEgSWQ6IDE3ZGMuZmZmZmZmZmYNCiAgICBGcmFt
ZVswMF0gICAgICAgUFNFVURPX1RIUkVBRA0KICAgIEZyYW1lWzAwXSAgICAgICBTSU5HTEVfSU5T
VFJVQ1RJT05fUFNFVURPX1RIUkVBRA0KDQogICAgRnJhbWVbMDBdICBUcmlhZ2UgU3ltYm9sOiBb
V2ViS2l0IVdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplKzB4MzhdDQoNCiAgLTEgSWQ6IDE3ZGMu
ZmZmZmZmZmYNCiAgICBGcmFtZVswMF0gICAgICAgUFNFVURPX1RIUkVBRA0KDQoNCk9TX0xPQ0FM
RTogIEVOVQ0KDQpQUklNQVJZX1BST0JMRU1fQ0xBU1M6ICBBUFBMSUNBVElPTl9GQVVMVA0KDQpQ
Uk9CTEVNX0NMQVNTRVM6IA0KDQogICAgSUQ6ICAgICBbMG4zMTZdDQogICAgVHlwZTogICBbQEFD
Q0VTU19WSU9MQVRJT05dDQogICAgQ2xhc3M6ICBBZGRlbmR1bQ0KICAgIFNjb3BlOiAgQlVDS0VU
X0lEDQogICAgTmFtZTogICBPbWl0DQogICAgRGF0YTogICBPbWl0DQogICAgUElEOiAgICBbVW5z
cGVjaWZpZWRdDQogICAgVElEOiAgICBbMHg1ZDYwXQ0KICAgIEZyYW1lOiAgWzBdIDogV2ViS2l0
IVdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplDQoNCiAgICBJRDogICAgIFswbjI4OF0NCiAgICBU
eXBlOiAgIFtJTlZBTElEX1BPSU5URVJfUkVBRF0NCiAgICBDbGFzczogIFByaW1hcnkNCiAgICBT
Y29wZTogIERFRkFVTFRfQlVDS0VUX0lEIChGYWlsdXJlIEJ1Y2tldCBJRCBwcmVmaXgpDQogICAg
ICAgICAgICBCVUNLRVRfSUQNCiAgICBOYW1lOiAgIEFkZA0KICAgIERhdGE6ICAgT21pdA0KICAg
IFBJRDogICAgW1Vuc3BlY2lmaWVkXQ0KICAgIFRJRDogICAgWzB4NWQ2MF0NCiAgICBGcmFtZTog
IFswXSA6IFdlYktpdCFXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZQ0KDQpMQVNUX0NPTlRST0xf
VFJBTlNGRVI6ICBmcm9tIDAwMDA3ZmZkMzhjMTlhZGUgdG8gMDAwMDdmZmQzOGMxYzBjOA0KDQpT
VEFDS19URVhUOiAgDQowMDAwMDAxOGBmNDU5ZTA3MCAwMDAwN2ZmZGAzOGMxOWFkZSA6IDAwMDAw
MDAwYDAwMDAwMDAwIDAwMDAwMDE4YGY0NTllMWUwIDAwMDAwMDAwYDAwMDAwMDAxIDAwMDAwMDAw
YDAwMDAwMTIwIDogV2ViS2l0IVdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplKzB4MzgNCjAwMDAw
MDE4YGY0NTllMGIwIDAwMDA3ZmZkYDM4Y2JlN2NmIDogMDAwMDdmZmRgMzlmNWVlYjAgMDAwMDAx
ZjBgMGJkNmJlMjAgMDAwMDAwMDBgMDAwMDAwMDEgMDAwMDAxZjBgNTdhYTFlNDAgOiBXZWJLaXQh
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YSsweDJlDQowMDAwMDAxOGBmNDU5ZTBl
MCAwMDAwN2ZmZGAzODllYmI5OSA6IDAwMDAwMDAwYDAwMDAwMDAwIDAwMDAwMDAwYDAwMDAwMDI4
IDAwMDAwMDAwYGZmZmZmZmZmIDAwMDAwMWYwYDU3OTkwMDAwIDogV2ViS2l0IVdlYkNvcmU6OkNh
Y2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIrMHgxMmYNCjAwMDAwMDE4YGY0NTllMjIwIDAw
MDA3ZmZkYDM4OWViOWRjIDogMDAwMDAwMDBgMDAwMDAwMTAgMDAwMDAxZjBgNTc5OTI3YjAgMDAw
MDAxZjBgNTdlZGM1ODAgMDAwMDdmZmRgMzk1OTAwOTQgOiBXZWJLaXQhV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIrMHhmOQ0KMDAwMDAwMThgZjQ1OWUy
YjAgMDAwMDdmZmRgMzkzNmY3NGYgOiAwMDAwMDAwMGAwMDAwMDEyMCAwMDAwMDFmMGA1NzhmZGU5
MCAwMDAwMDFmMGAwYmNlNWE5MCAwMDAwN2ZmZGA1Y2QxZDBlNCA6IFdlYktpdCFXZWJDb3JlOjpT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcisweDJjDQowMDAwMDAxOGBmNDU5ZTMw
MCAwMDAwN2ZmZGA1Y2NhYjNhZSA6IDAwMDAwMDAwYDAwMDAwMDAwIDAwMDAwMWYwYDUyNmE5NzI4
IDAwMDAwMWYwYDUyNmE5NzI4IDAwMDA3ZmZkYDg4NGJmODc1IDogV2ViS2l0IVdURjo6RGV0YWls
OjpDYWxsYWJsZVdyYXBwZXI8YFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhJzo6YDInOjo8bGFtYmRh
XzE+LHZvaWQ+OjpjYWxsKzB4N2YNCjAwMDAwMDE4YGY0NTllMzUwIDAwMDA3ZmZkYDVjZDAxZmVj
IDogMDAwMDAxZjBgMGJjZTVhOTAgMDAwMDAxZjBgMGJjZTVhOTAgMDAwMDAwMDBgMDBlYzA5NzQg
MDAwMDAwMDBgMDAwMDAwMDAgOiBXVEYhV1RGOjpSdW5Mb29wOjpwZXJmb3JtV29yaysweDI2ZQ0K
MDAwMDAwMThgZjQ1OWUzYjAgMDAwMDdmZmRgODg0YmU3ZTggOiAwMDAwMDAxOGBmNDU5ZTUwMSAw
MDAwZjkwY2A0ZDcxOWRjZCAwMDAwMDAwMGAwMDAwMDAwMSAwMDAwMDAwMGAwMDAwMDAwMCA6IFdU
RiFXVEY6OlJ1bkxvb3A6OlJ1bkxvb3BXbmRQcm9jKzB4NWMNCjAwMDAwMDE4YGY0NTllNDEwIDAw
MDA3ZmZkYDg4NGJlMjI5IDogMDAwMDAwMDBgMDAwMDA0MTAgMDAwMDdmZmRgNWNkMDFmOTAgMDAw
MDAwMDBgMDBlYzA5NzQgMDAwMDdmZmRgMDAwMDA0MDEgOiBVU0VSMzIhVXNlckNhbGxXaW5Qcm9j
Q2hlY2tXb3crMHgyZjgNCjAwMDAwMDE4YGY0NTllNWEwIDAwMDA3ZmZkYDQ4NzY1N2M4IDogMDAw
MDdmZmRgNWNkMDFmOTAgMDAwMDdmZmRgNDg4ZDZhZDggMDAwMDAxZjBgNTI0MTZjOTAgMDAwMDAx
ZjBgNTI1NGFjNTAgOiBVU0VSMzIhRGlzcGF0Y2hNZXNzYWdlV29ya2VyKzB4MjQ5DQowMDAwMDAx
OGBmNDU5ZTYyMCAwMDAwN2ZmZGA0ODc2NzcxMyA6IDAwMDAwMWYwYDAwMDAwMDBhIDAwMDAwMWYw
YDBiZDlkNzYwIDAwMDAwMDAwYDAwMDAwMGNmIDAwMDAwMWYwYDRmNjNmMzQwIDogRHVtcFJlbmRl
clRyZWVMaWIhcnVuVGVzdCsweGFkOA0KMDAwMDAwMThgZjQ1OWYyNTAgMDAwMDdmZjZgNzgxOTJl
YTUgOiAwMDAwMDAwMGAwMDAwMDAxYyAwMDAwN2ZmZGA0ODc2NzEzMCAwMDAwMDAwMGAwMDAwMDAw
MCBmZmZmZmZmZmBmZmZmZmZmZiA6IER1bXBSZW5kZXJUcmVlTGliIW1haW4rMHg1ZDMNCjAwMDAw
MDE4YGY0NTlmYjYwIDAwMDA3ZmY2YDc4MTkzNzUwIDogMDAwMDAwMDBgMDAwMDAwMDAgMDAwMDAw
MDBgMDAwMDAwMDAgMDAwMDAwMDBgMDAwMDAwMDAgMDAwMDAwMDBgMDAwMDAwMDAgOiBEdW1wUmVu
ZGVyVHJlZSFtYWluKzB4ODA1DQowMDAwMDAxOGBmNDU5ZmVlMCAwMDAwN2ZmZGA4N2Y2NzAzNCA6
IDAwMDAwMDAwYDAwMDAwMDAwIDAwMDAwMDAwYDAwMDAwMDAwIDAwMDAwMDAwYDAwMDAwMDAwIDAw
MDAwMDAwYDAwMDAwMDAwIDogRHVtcFJlbmRlclRyZWUhX19zY3J0X2NvbW1vbl9tYWluX3NlaCsw
eDEwYw0KMDAwMDAwMThgZjQ1OWZmMjAgMDAwMDdmZmRgODk0NDI2NTEgOiAwMDAwMDAwMGAwMDAw
MDAwMCAwMDAwMDAwMGAwMDAwMDAwMCAwMDAwMDAwMGAwMDAwMDAwMCAwMDAwMDAwMGAwMDAwMDAw
MCA6IEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMDAwMDAwMThgZjQ1OWZmNTAg
MDAwMDAwMDBgMDAwMDAwMDAgOiAwMDAwMDAwMGAwMDAwMDAwMCAwMDAwMDAwMGAwMDAwMDAwMCAw
MDAwMDAwMGAwMDAwMDAwMCAwMDAwMDAwMGAwMDAwMDAwMCA6IG50ZGxsIVJ0bFVzZXJUaHJlYWRT
dGFydCsweDIxDQoNCg0KU1RBQ0tfQ09NTUFORDogIH4wcyA7IC5jeHIgOyBrYg0KDQpUSFJFQURf
U0hBMV9IQVNIX01PRF9GVU5DOiAgYmU4NmE5NjJhODJhMWEwZWFiNDkwZjM5ZGYxMjExYTgwNGQz
YjExNw0KDQpUSFJFQURfU0hBMV9IQVNIX01PRF9GVU5DX09GRlNFVDogIDVmZWJhMTY1ZWMwOGM2
OTBhZDQxOGMzNjEyNzNkNjYzYjI2ZTAyNzMNCg0KVEhSRUFEX1NIQTFfSEFTSF9NT0Q6ICBiZmRl
ZjVlNDY0NDcwNWQwNGY3MWMzNWZkNGQ2OTExYTczN2IyY2Q3DQoNCkZBVUxUX0lOU1RSX0NPREU6
ICBmZjAxOGI0OA0KDQpGQVVMVElOR19TT1VSQ0VfTElORTogIEM6XGhvbWVcd2Via2l0XGdjXFNv
dXJjZVxXZWJDb3JlXHBsYXRmb3JtXFNoYXJlZEJ1ZmZlci5jcHANCg0KRkFVTFRJTkdfU09VUkNF
X0ZJTEU6ICBDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV2ViQ29yZVxwbGF0Zm9ybVxTaGFyZWRC
dWZmZXIuY3BwDQoNCkZBVUxUSU5HX1NPVVJDRV9MSU5FX05VTUJFUjogIDUxMQ0KDQpTWU1CT0xf
U1RBQ0tfSU5ERVg6ICAwDQoNClNZTUJPTF9OQU1FOiAgV2ViS2l0IVdlYkNvcmU6OkRhdGFTZWdt
ZW50OjpzaXplKzM4DQoNCkZPTExPV1VQX05BTUU6ICBNYWNoaW5lT3duZXINCg0KTU9EVUxFX05B
TUU6IFdlYktpdA0KDQpJTUFHRV9OQU1FOiAgV2ViS2l0LmRsbA0KDQpERUJVR19GTFJfSU1BR0Vf
VElNRVNUQU1QOiAgNjFhNWQ0M2UNCg0KRkFJTFVSRV9CVUNLRVRfSUQ6ICBJTlZBTElEX1BPSU5U
RVJfUkVBRF9jMDAwMDAwNV9XZWJLaXQuZGxsIVdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplDQoN
CkJVQ0tFVF9JRDogIEFQUExJQ0FUSU9OX0ZBVUxUX0lOVkFMSURfUE9JTlRFUl9SRUFEX1dlYktp
dCFXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSszOA0KDQpGQUlMVVJFX0VYQ0VQVElPTl9DT0RF
OiAgYzAwMDAwMDUNCg0KRkFJTFVSRV9JTUFHRV9OQU1FOiAgV2ViS2l0LmRsbA0KDQpCVUNLRVRf
SURfSU1BR0VfU1RSOiAgV2ViS2l0LmRsbA0KDQpGQUlMVVJFX01PRFVMRV9OQU1FOiAgV2ViS2l0
DQoNCkJVQ0tFVF9JRF9NT0RVTEVfU1RSOiAgV2ViS2l0DQoNCkZBSUxVUkVfRlVOQ1RJT05fTkFN
RTogIFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplDQoNCkJVQ0tFVF9JRF9GVU5DVElPTl9TVFI6
ICBXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZQ0KDQpCVUNLRVRfSURfT0ZGU0VUOiAgMzgNCg0K
QlVDS0VUX0lEX01PRFRJTUVEQVRFU1RBTVA6ICA2MWE1ZDQzZQ0KDQpCVUNLRVRfSURfTU9EQ0hF
Q0tTVU06ICAxOWYzOGU3DQoNCkJVQ0tFVF9JRF9NT0RWRVJfU1RSOiAgMC4wLjAuMA0KDQpCVUNL
RVRfSURfUFJFRklYX1NUUjogIEFQUExJQ0FUSU9OX0ZBVUxUX0lOVkFMSURfUE9JTlRFUl9SRUFE
Xw0KDQpGQUlMVVJFX1BST0JMRU1fQ0xBU1M6ICBBUFBMSUNBVElPTl9GQVVMVA0KDQpGQUlMVVJF
X1NZTUJPTF9OQU1FOiAgV2ViS2l0LmRsbCFXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZQ0KDQpP
U19WRVJTSU9OOiAgMTAuMC4xOTA0MS4xDQoNCk9TX01BSk9SOiAgMTANCg0KT1NfTUlOT1I6ICAw
DQoNCk9TX0JVSUxEOiAgMTkwNDENCg0KT1NfUkVWSVNJT046ICAxDQoNCkJVSUxEREFURVNUQU1Q
X1NUUjogIDE5MTIwNi0xNDA2DQoNCk9TQlVJTERfVElNRVNUQU1QOiAgMjAxOS0xMi0wNlQxNDow
NjowMFoNCg0KQlVJTERMQUJfU1RSOiAgdmJfcmVsZWFzZQ0KDQpPU19CVUlMRF9TVFJJTkc6ICAx
OTA0MS4xLmFtZDY0ZnJlLnZiX3JlbGVhc2UuMTkxMjA2LTE0MDYNCg0KQlVJTERGTEFWT1JfU1RS
OiAgQ2hlY2tlZA0KDQpUQVJHRVRfVElNRTogIDIwMjEtMTEtMzBUMDc6Mzk6MjcuMDAwWg0KDQpP
U1NFUlZJQ0VQQUNLOiAgMA0KDQpPU1BMQVRGT1JNX1RZUEU6ICB4NjQNCg0KT1NOQU1FOiAgV2lu
ZG93cyAxMA0KDQpPU0VESVRJT046ICBXaW5kb3dzIDEwIFdpbk50IFNpbmdsZVVzZXJUUw0KDQpT
WVNJTkZPOiANCjxBTkFMWVNJUz4NDQoJPFNZU01BTj48L1NZU01BTj4NDQoJPFNZU01PRD48L1NZ
U01PRD4NDQoJPFNZU01SSz48L1NZU01SSz4NDQo8L0FOQUxZU0lTPg0KDQpGQV9BREhPQzogDQo8
QU5BTFlTSVM+DQ0KCTxFWENFUFRJT05fUEFSQU1FVEVSMT4wPC9FWENFUFRJT05fUEFSQU1FVEVS
MT4NDQoJPEVYQ0VQVElPTl9QQVJBTUVURVIyPjQwOTY8L0VYQ0VQVElPTl9QQVJBTUVURVIyPg0N
Cgk8QlVJTERGTEFWT1JfU1RSPkNoZWNrZWQ8L0JVSUxERkxBVk9SX1NUUj4NDQoJPE9TUExBVEZP
Uk1fVFlQRT54NjQ8L09TUExBVEZPUk1fVFlQRT4NDQoJPEZBVUxUSU5HX1NPVVJDRV9MSU5FPkM6
XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXZWJDb3JlXHBsYXRmb3JtXFNoYXJlZEJ1ZmZlci5jcHA8
L0ZBVUxUSU5HX1NPVVJDRV9MSU5FPg0NCgk8RkFVTFRJTkdfU09VUkNFX0ZJTEU+QzpcaG9tZVx3
ZWJraXRcZ2NcU291cmNlXFdlYkNvcmVccGxhdGZvcm1cU2hhcmVkQnVmZmVyLmNwcDwvRkFVTFRJ
TkdfU09VUkNFX0ZJTEU+DQ0KCTxGQVVMVElOR19TT1VSQ0VfTElORV9OVU1CRVI+NTExPC9GQVVM
VElOR19TT1VSQ0VfTElORV9OVU1CRVI+DQ0KPC9BTkFMWVNJUz4NCg0KQU5BTFlTSVNfU0VTU0lP
Tl9FTEFQU0VEX1RJTUU6ICA5MTANCg0KQU5BTFlTSVNfU09VUkNFOiAgVU0NCg0KRkFJTFVSRV9J
RF9IQVNIX1NUUklORzogIHVtOmludmFsaWRfcG9pbnRlcl9yZWFkX2MwMDAwMDA1X3dlYmtpdC5k
bGwhd2ViY29yZTo6ZGF0YXNlZ21lbnQ6OnNpemUNCg0KRkFJTFVSRV9JRF9IQVNIOiAgezc4Mzc4
NDlkLWM2OGYtNTdhYS1mZmNlLWRiMTIwZTQ5MzViY30NCg0KRm9sbG93dXA6ICAgICBNYWNoaW5l
T3duZXINCi0tLS0tLS0tLQ0KDQowOjAwMD4gfiprcG4NCg0KLiAgMCAgSWQ6IDE3ZGMuNWQ2MCBT
dXNwZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2MGQwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAg
ICAgICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgKElubGluZSBGdW5jdGlvbikg
LS0tLS0tLS1gLS0tLS0tLS0gV2ViS2l0IVdURjo6RnVuY3Rpb248dW5zaWduZWQgX19pbnQ2NCBf
X2NkZWNsKHZvaWQpKzB4NCBbQzpcaG9tZVx3ZWJraXRcZ2NcV2ViS2l0QnVpbGRcUmVsZWFzZVxE
ZXJpdmVkU291cmNlc1xGb3J3YXJkaW5nSGVhZGVyc1x3dGZcRnVuY3Rpb24uaCBAIDgyXQ0KMDEg
KElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV2ViS2l0IVdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpzaXplOjpfX2wyOjo8bGFtYmRhXzQ+OjpvcGVyYXRvcigpKHZvaWQpKzB4NCBbQzpc
aG9tZVx3ZWJraXRcZ2NcU291cmNlXFdlYkNvcmVccGxhdGZvcm1cU2hhcmVkQnVmZmVyLmNwcCBA
IDUwOV0NCjAyIChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdlYktpdCFzdGQ6
Omludm9rZSh2b2lkKSsweDQgW0M6XFByb2dyYW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cMjAxOVxQcm9mZXNzaW9uYWxcVkNcVG9vbHNcTVNWQ1wxNC4yOS4zMDEzM1xpbmNs
dWRlXHR5cGVfdHJhaXRzIEAgMTU5NV0NCjAzIChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0t
LS0tLS0tIFdlYktpdCFzdGQ6Ol9WYXJpYW50X2Rpc3BhdGNoZXI8c3RkOjppbnRlZ2VyX3NlcXVl
bmNlPHVuc2lnbmVkIF9faW50NjQsND4gPjo6X0Rpc3BhdGNoMih2b2lkKSsweDQgW0M6XFByb2dy
YW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cMjAxOVxQcm9mZXNzaW9uYWxc
VkNcVG9vbHNcTVNWQ1wxNC4yOS4zMDEzM1xpbmNsdWRlXHZhcmlhbnQgQCAxNTM3XQ0KMDQgKElu
bGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV2ViS2l0IXN0ZDo6X1Zpc2l0X3N0cmF0
ZWd5PDI+OjpfVmlzaXQyKHZvaWQpKzB4MTggW0M6XFByb2dyYW0gRmlsZXMgKHg4NilcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cMjAxOVxQcm9mZXNzaW9uYWxcVkNcVG9vbHNcTVNWQ1wxNC4yOS4z
MDEzM1xpbmNsdWRlXHZhcmlhbnQgQCAxNjQ3XQ0KMDUgKElubGluZSBGdW5jdGlvbikgLS0tLS0t
LS1gLS0tLS0tLS0gV2ViS2l0IXN0ZDo6X1Zpc2l0X2ltcGwodm9pZCkrMHgyNSBbQzpcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1wyMDE5XFByb2Zlc3Npb25hbFxW
Q1xUb29sc1xNU1ZDXDE0LjI5LjMwMTMzXGluY2x1ZGVcdmFyaWFudCBAIDE2OTJdDQowNiAoSW5s
aW5lIEZ1bmN0aW9uKSAtLS0tLS0tLWAtLS0tLS0tLSBXZWJLaXQhc3RkOjp2aXNpdChjbGFzcyBz
dGQ6OnZhcmlhbnQ8V1RGOjpWZWN0b3I8dW5zaWduZWQgY2hhciwwLFdURjo6Q3Jhc2hPbk92ZXJm
bG93LDE2LFdURjo6RmFzdE1hbGxvYz4sV1RGOjpSZXRhaW5QdHI8X19DRkRhdGEgY29uc3QgKj4s
V1RGOjpGaWxlU3lzdGVtSW1wbDo6TWFwcGVkRmlsZURhdGEsV2ViQ29yZTo6RGF0YVNlZ21lbnQ6
OlByb3ZpZGVyPiAqIDxfQXJnc18wPiA9IDB4MDAwMDAxZjBgMGJjZGVkYTggW3ZhbHVlbGVzc19i
eV9leGNlcHRpb25dKSsweDI1IFtDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXDIwMTlcUHJvZmVzc2lvbmFsXFZDXFRvb2xzXE1TVkNcMTQuMjkuMzAxMzNcaW5j
bHVkZVx2YXJpYW50IEAgMTcxMF0NCjA3IDAwMDAwMDE4YGY0NTllMDcwIDAwMDA3ZmZkYDM4YzE5
YWRlIFdlYktpdCFXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSh2b2lkKSsweDM4IFtDOlxob21l
XHdlYmtpdFxnY1xTb3VyY2VcV2ViQ29yZVxwbGF0Zm9ybVxTaGFyZWRCdWZmZXIuY3BwIEAgNTEx
XQ0KMDggKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV2ViS2l0IVdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3Ojp7Y3Rvcn0odm9pZCkrMHhjIFtDOlxob21lXHdlYmtpdFxn
Y1xTb3VyY2VcV2ViQ29yZVxwbGF0Zm9ybVxTaGFyZWRCdWZmZXIuY3BwIEAgNTE3XQ0KMDkgMDAw
MDAwMThgZjQ1OWUwYjAgMDAwMDdmZmRgMzhjYmU3Y2YgV2ViS2l0IVdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Z2V0U29tZURhdGEodW5zaWduZWQgaW50NjQgcG9zaXRpb24gPSA8VmFsdWUgdW5hdmFp
bGFibGUgZXJyb3I+KSsweDJlIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV2ViQ29yZVxwbGF0
Zm9ybVxTaGFyZWRCdWZmZXIuY3BwIEAgMTM1XQ0KMGEgMDAwMDAwMThgZjQ1OWUwZTAgMDAwMDdm
ZmRgMzg5ZWJiOTkgV2ViS2l0IVdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZm
ZXIoY2xhc3MgV2ViQ29yZTo6U2hhcmVkQnVmZmVyICogZGF0YSA9IDB4MDAwMDAxZjBgNTdmMDI4
ZDApKzB4MTJmIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV2ViQ29yZVxsb2FkZXJcY2FjaGVc
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIEAgNzJdDQowYiAwMDAwMDAxOGBmNDU5ZTIyMCAwMDAwN2Zm
ZGAzODllYjlkYyBXZWJLaXQhV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIodW5zaWduZWQgY2hhciAqIGRhdGEgPSAweDAwMDAwMDAwYDAwMDAwMDAwICIi
LCBpbnQgbGVuZ3RoID0gMG4wLCBjbGFzcyBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXIsV1RGOjpSYXdQdHJUcmFpdHM8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPixXVEY6OkRlZmF1bHRS
ZWZEZXJlZlRyYWl0czxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4gKiBidWZmZXIgPSAweDAwMDAw
MDE4YGY0NTllMmUwLCBpbnQ2NCBlbmNvZGVkRGF0YUxlbmd0aCA9IDBuMjg4LCBXZWJDb3JlOjpE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlID0gRGF0YVBheWxvYWRCeXRlcyAoMG4xKSkr
MHhmOSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdlYkNvcmVcbG9hZGVyXFN1YnJlc291cmNl
TG9hZGVyLmNwcCBAIDU2Ml0NCjBjIDAwMDAwMDE4YGY0NTllMmIwIDAwMDA3ZmZkYDM5MzZmNzRm
IFdlYktpdCFXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjbGFz
cyBXVEY6OlJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXIsV1RGOjpSYXdQdHJUcmFpdHM8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiA+ICogYnVmZmVyID0gPFZhbHVlIHVuYXZhaWxhYmxlIGVycm9yPiwg
aW50NjQgZW5jb2RlZERhdGFMZW5ndGggPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+LCBXZWJD
b3JlOjpEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlID0gPFZhbHVlIHVuYXZhaWxhYmxl
IGVycm9yPikrMHgyYyBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdlYkNvcmVcbG9hZGVyXFN1
YnJlc291cmNlTG9hZGVyLmNwcCBAIDU0Ml0NCjBkIChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0t
YC0tLS0tLS0tIFdlYktpdCFXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YTo6X19sMjo6PGxhbWJkYV8x
Pjo6b3BlcmF0b3IoKSh2b2lkKSsweDc3IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV2ViQ29y
ZVxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIEAgMjIyXQ0KMGUgMDAwMDAwMThgZjQ1OWUzMDAgMDAw
MDdmZmRgNWNjYWIzYWUgV2ViS2l0IVdURjo6RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8YFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OmRpZFJlY2VpdmVEYXRhJzo6YDInOjo8bGFtYmRhXzE+LHZvaWQ+OjpjYWxsKHZvaWQpKzB4
N2YgW0M6XGhvbWVcd2Via2l0XGdjXFdlYktpdEJ1aWxkXFJlbGVhc2VcRGVyaXZlZFNvdXJjZXNc
Rm9yd2FyZGluZ0hlYWRlcnNcd3RmXEZ1bmN0aW9uLmggQCA1M10NCjBmIChJbmxpbmUgRnVuY3Rp
b24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkZ1bmN0aW9uPHZvaWQgX19jZGVjbCh2b2lk
KSsweDFlIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxGdW5jdGlvbi5oIEAgODJd
DQoxMCAwMDAwMDAxOGBmNDU5ZTM1MCAwMDAwN2ZmZGA1Y2QwMWZlYyBXVEYhV1RGOjpSdW5Mb29w
OjpwZXJmb3JtV29yayh2b2lkKSsweDI2ZSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3
dGZcUnVuTG9vcC5jcHAgQCAxMzRdDQoxMSAoSW5saW5lIEZ1bmN0aW9uKSAtLS0tLS0tLWAtLS0t
LS0tLSBXVEYhV1RGOjpSdW5Mb29wOjp3bmRQcm9jKHZvaWQpKzB4MzYgW0M6XGhvbWVcd2Via2l0
XGdjXFNvdXJjZVxXVEZcd3RmXHdpblxSdW5Mb29wV2luLmNwcCBAIDU2XQ0KMTIgMDAwMDAwMThg
ZjQ1OWUzYjAgMDAwMDdmZmRgODg0YmU3ZTggV1RGIVdURjo6UnVuTG9vcDo6UnVuTG9vcFduZFBy
b2Moc3RydWN0IEhXTkRfXyAqIGhXbmQgPSAweDAwMDAwMDAwYDAwZWMwOTc0LCB1bnNpZ25lZCBp
bnQgbWVzc2FnZSA9IDB4NDAxLCB1bnNpZ25lZCBpbnQ2NCB3UGFyYW0gPSAweDAwMDAwMWYwYDBi
Y2U1YTkwLCBpbnQ2NCBsUGFyYW0gPSAwbjApKzB4NWMgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJj
ZVxXVEZcd3RmXHdpblxSdW5Mb29wV2luLmNwcCBAIDM5XQ0KMTMgMDAwMDAwMThgZjQ1OWU0MTAg
MDAwMDdmZmRgODg0YmUyMjkgVVNFUjMyIVVzZXJDYWxsV2luUHJvY0NoZWNrV293KzB4MmY4DQox
NCAwMDAwMDAxOGBmNDU5ZTVhMCAwMDAwN2ZmZGA0ODc2NTdjOCBVU0VSMzIhRGlzcGF0Y2hNZXNz
YWdlV29ya2VyKzB4MjQ5DQoxNSAwMDAwMDAxOGBmNDU5ZTYyMCAwMDAwN2ZmZGA0ODc2NzcxMyBE
dW1wUmVuZGVyVHJlZUxpYiFydW5UZXN0KGNsYXNzIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3Rk
OjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ICogaW5wdXRMaW5lID0g
PFZhbHVlIHVuYXZhaWxhYmxlIGVycm9yPikrMHhhZDggW0M6XGhvbWVcd2Via2l0XGdjXFRvb2xz
XER1bXBSZW5kZXJUcmVlXHdpblxEdW1wUmVuZGVyVHJlZS5jcHAgQCAxMzIxXQ0KMTYgMDAwMDAw
MThgZjQ1OWYyNTAgMDAwMDdmZjZgNzgxOTJlYTUgRHVtcFJlbmRlclRyZWVMaWIhbWFpbihpbnQg
YXJnYyA9IDxWYWx1ZSB1bmF2YWlsYWJsZSBlcnJvcj4sIGNoYXIgKiogYXJndiA9IDxWYWx1ZSB1
bmF2YWlsYWJsZSBlcnJvcj4pKzB4NWQzIFtDOlxob21lXHdlYmtpdFxnY1xUb29sc1xEdW1wUmVu
ZGVyVHJlZVx3aW5cRHVtcFJlbmRlclRyZWUuY3BwIEAgMTY3M10NCjE3IDAwMDAwMDE4YGY0NTlm
YjYwIDAwMDA3ZmY2YDc4MTkzNzUwIER1bXBSZW5kZXJUcmVlIW1haW4oaW50IGFyZ2MgPSAwbjIs
IGNoYXIgKiogYXJndiA9IDB4MDAwMDAxZjBgMGJjYjVkZjApKzB4ODA1IFtDOlxob21lXHdlYmtp
dFxnY1xUb29sc1x3aW5cRExMTGF1bmNoZXJcRExMTGF1bmNoZXJNYWluLmNwcCBAIDIyM10NCjE4
IChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIER1bXBSZW5kZXJUcmVlIWludm9r
ZV9tYWluKHZvaWQpKzB4MjIgW2Q6XGEwMVxfd29ya1w2XHNcc3JjXHZjdG9vbHNcY3J0XHZjc3Rh
cnR1cFxzcmNcc3RhcnR1cFxleGVfY29tbW9uLmlubCBAIDc4XQ0KMTkgMDAwMDAwMThgZjQ1OWZl
ZTAgMDAwMDdmZmRgODdmNjcwMzQgRHVtcFJlbmRlclRyZWUhX19zY3J0X2NvbW1vbl9tYWluX3Nl
aCh2b2lkKSsweDEwYyBbZDpcYTAxXF93b3JrXDZcc1xzcmNcdmN0b29sc1xjcnRcdmNzdGFydHVw
XHNyY1xzdGFydHVwXGV4ZV9jb21tb24uaW5sIEAgMjg4XQ0KMWEgMDAwMDAwMThgZjQ1OWZmMjAg
MDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0DQoxYiAw
MDAwMDAxOGBmNDU5ZmY1MCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3Rh
cnQrMHgyMQ0KDQogICAxICBJZDogMTdkYy4zMGFjIFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBm
NDYwZjAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAg
Q2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNDhmZjg3OCAwMDAwN2ZmZGA4OTQ0MmRjNyBudGRsbCFO
dFdhaXRGb3JXb3JrVmlhV29ya2VyRmFjdG9yeSsweDE0DQowMSAwMDAwMDAxOGBmNDhmZjg4MCAw
MDAwN2ZmZGA4N2Y2NzAzNCBudGRsbCFUcHBXb3JrZXJUaHJlYWQrMHgyZjcNCjAyIDAwMDAwMDE4
YGY0OGZmYjgwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsr
MHgxNA0KMDMgMDAwMDAwMThgZjQ4ZmZiYjAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNl
clRocmVhZFN0YXJ0KzB4MjENCg0KICAgMiAgSWQ6IDE3ZGMuMWE1MCBTdXNwZW5kOiAxIFRlYjog
MDAwMDAwMThgZjQ2MTEwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIg
ICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjQ5ZmY1YjggMDAwMDdmZmRgODk0NDJk
YzcgbnRkbGwhTnRXYWl0Rm9yV29ya1ZpYVdvcmtlckZhY3RvcnkrMHgxNA0KMDEgMDAwMDAwMThg
ZjQ5ZmY1YzAgMDAwMDdmZmRgODdmNjcwMzQgbnRkbGwhVHBwV29ya2VyVGhyZWFkKzB4MmY3DQow
MiAwMDAwMDAxOGBmNDlmZjhjMCAwMDAwN2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFk
SW5pdFRodW5rKzB4MTQNCjAzIDAwMDAwMDE4YGY0OWZmOGYwIDAwMDAwMDAwYDAwMDAwMDAwIG50
ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxDQoNCiAgIDMgIElkOiAxN2RjLjNmZWMgU3VzcGVu
ZDogMSBUZWI6IDAwMDAwMDE4YGY0NjEzMDAwIFVuZnJvemVuDQogIyBDaGlsZC1TUCAgICAgICAg
ICBSZXRBZGRyICAgICAgICAgICBDYWxsIFNpdGUNCjAwIDAwMDAwMDE4YGY0YWZmYjk4IDAwMDA3
ZmZkYDg5NDQyZGM3IG50ZGxsIU50V2FpdEZvcldvcmtWaWFXb3JrZXJGYWN0b3J5KzB4MTQNCjAx
IDAwMDAwMDE4YGY0YWZmYmEwIDAwMDA3ZmZkYDg3ZjY3MDM0IG50ZGxsIVRwcFdvcmtlclRocmVh
ZCsweDJmNw0KMDIgMDAwMDAwMThgZjRhZmZlYTAgMDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIh
QmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowMyAwMDAwMDAxOGBmNGFmZmVkMCAwMDAwMDAwMGAw
MDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMQ0KDQogICA0ICBJZDogMTdkYy4z
YjQwIFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDYxNTAwMCBVbmZyb3plbg0KICMgQ2hpbGQt
U1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAgQ2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNGJm
ZjgwOCAwMDAwN2ZmZGA4ODRkMGI1ZSB3aW4zMnUhTnRVc2VyTXNnV2FpdEZvck11bHRpcGxlT2Jq
ZWN0c0V4KzB4MTQNCjAxIDAwMDAwMDE4YGY0YmZmODEwIDAwMDA3ZmZkYDQ2NmFlOWI3IFVTRVIz
MiFSZWFsTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KzB4MWUNCjAyIDAwMDAwMDE4YGY0YmZm
ODUwIDAwMDA3ZmZkYDQ2NmFlMjIxIENvcmVGb3VuZGF0aW9uIUNGUmVhZFN0cmVhbVNjaGVkdWxl
V2l0aFJ1bkxvb3ArMHg4YjYwZA0KMDMgMDAwMDAwMThgZjRiZmZhZjAgMDAwMDdmZmRgNDY2YWIw
OTcgQ29yZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcCsweDhhZTc3
DQowNCAwMDAwMDAxOGBmNGJmZmJlMCAwMDAwN2ZmZGA0NmUxNTU3MyBDb3JlRm91bmRhdGlvbiFD
RlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKzB4ODdjZWQNCjA1IDAwMDAwMDE4YGY0YmZm
Y2EwIDAwMDA3ZmZkYDZjNDc2OTM3IENGTmV0d29yayFDRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0
b3J5KzB4ZDgzDQowNiAwMDAwMDAxOGBmNGJmZmQzMCAwMDAwN2ZmZGA4NmUwMWJiMiBwdGhyZWFk
VkMyIXB0aHJlYWRfcndsb2NrYXR0cl9pbml0KzB4NTRiOQ0KMDcgMDAwMDAwMThgZjRiZmZkZjAg
MDAwMDdmZmRgODdmNjcwMzQgdWNydGJhc2UhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCArMHg0
Mg0KMDggMDAwMDAwMThgZjRiZmZlMjAgMDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRo
cmVhZEluaXRUaHVuaysweDE0DQowOSAwMDAwMDAxOGBmNGJmZmU1MCAwMDAwMDAwMGAwMDAwMDAw
MCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMQ0KDQogICA1ICBJZDogMTdkYy40ZDhjIFN1
c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDYxNzAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAg
ICAgICAgUmV0QWRkciAgICAgICAgICAgQ2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNGNmZmJiOCAw
MDAwN2ZmZGA4NmIzMWE1ZSBudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3QrMHgxNA0KMDEgMDAw
MDAwMThgZjRjZmZiYzAgMDAwMDdmZmRgNmM1NTk5YmIgS0VSTkVMQkFTRSFXYWl0Rm9yU2luZ2xl
T2JqZWN0RXgrMHg4ZQ0KMDIgMDAwMDAwMThgZjRjZmZjNjAgMDAwMDdmZmRgNmM1NTg5ZDIgbGli
ZGlzcGF0Y2ghZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQrMHg3Yg0KMDMgMDAwMDAwMThgZjRjZmZj
YTAgMDAwMDdmZmRgNmM1NThiNTkgbGliZGlzcGF0Y2ghZGlzcGF0Y2hfbWFpbisweDUzMg0KMDQg
MDAwMDAwMThgZjRjZmZkNjAgMDAwMDdmZmRgNmM1NTViMWUgbGliZGlzcGF0Y2ghZGlzcGF0Y2hf
bWFpbisweDZiOQ0KMDUgMDAwMDAwMThgZjRjZmZkOTAgMDAwMDdmZmRgNmM1NTgxZGUgbGliZGlz
cGF0Y2ghZGlzcGF0Y2hfZ2V0X3NwZWNpZmljKzB4M2ZlDQowNiAwMDAwMDAxOGBmNGNmZmRjMCAw
MDAwN2ZmZGA4N2Y2NzAzNCBsaWJkaXNwYXRjaCFkaXNwYXRjaF9hZnRlcisweGU3ZQ0KMDcgMDAw
MDAwMThgZjRjZmZlMzAgMDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRU
aHVuaysweDE0DQowOCAwMDAwMDAxOGBmNGNmZmU2MCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFS
dGxVc2VyVGhyZWFkU3RhcnQrMHgyMQ0KDQogICA2ICBJZDogMTdkYy41OGM4IFN1c3BlbmQ6IDEg
VGViOiAwMDAwMDAxOGBmNDYxOTAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0
QWRkciAgICAgICAgICAgQ2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNGRmZjY5OCAwMDAwN2ZmZGA4
NmIzMWE1ZSBudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3QrMHgxNA0KMDEgMDAwMDAwMThgZjRk
ZmY2YTAgMDAwMDdmZmRgNmM1NTk5YmIgS0VSTkVMQkFTRSFXYWl0Rm9yU2luZ2xlT2JqZWN0RXgr
MHg4ZQ0KMDIgMDAwMDAwMThgZjRkZmY3NDAgMDAwMDdmZmRgNmM1NTgyM2MgbGliZGlzcGF0Y2gh
ZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQrMHg3Yg0KMDMgMDAwMDAwMThgZjRkZmY3ODAgMDAwMDdm
ZmRgODdmNjcwMzQgbGliZGlzcGF0Y2ghZGlzcGF0Y2hfYWZ0ZXIrMHhlZGMNCjA0IDAwMDAwMDE4
YGY0ZGZmN2YwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsr
MHgxNA0KMDUgMDAwMDAwMThgZjRkZmY4MjAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNl
clRocmVhZFN0YXJ0KzB4MjENCg0KICAgNyAgSWQ6IDE3ZGMuNTdhYyBTdXNwZW5kOiAxIFRlYjog
MDAwMDAwMThgZjQ2MWIwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIg
ICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjRlZmYzYzggMDAwMDdmZmRgODg0ZDBi
NWUgd2luMzJ1IU50VXNlck1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCsweDE0DQowMSAwMDAw
MDAxOGBmNGVmZjNkMCAwMDAwN2ZmZGA0NjZhZTliNyBVU0VSMzIhUmVhbE1zZ1dhaXRGb3JNdWx0
aXBsZU9iamVjdHNFeCsweDFlDQowMiAwMDAwMDAxOGBmNGVmZjQxMCAwMDAwN2ZmZGA0NjZhZTIy
MSBDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKzB4OGI2MGQN
CjAzIDAwMDAwMDE4YGY0ZWZmNmIwIDAwMDA3ZmZkYDQ2NmFiMDk3IENvcmVGb3VuZGF0aW9uIUNG
UmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3ArMHg4YWU3Nw0KMDQgMDAwMDAwMThgZjRlZmY3
YTAgMDAwMDdmZmRgNDZlMTU1NzMgQ29yZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVX
aXRoUnVuTG9vcCsweDg3Y2VkDQowNSAwMDAwMDAxOGBmNGVmZjg2MCAwMDAwN2ZmZGA2YzQ3Njkz
NyBDRk5ldHdvcmshQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeSsweGQ4Mw0KMDYgMDAwMDAw
MThgZjRlZmY4ZjAgMDAwMDdmZmRgODZlMDFiYjIgcHRocmVhZFZDMiFwdGhyZWFkX3J3bG9ja2F0
dHJfaW5pdCsweDU0YjkNCjA3IDAwMDAwMDE4YGY0ZWZmOWIwIDAwMDA3ZmZkYDg3ZjY3MDM0IHVj
cnRiYXNlIXRocmVhZF9zdGFydDx1bnNpZ25lZCBpbnQgKzB4NDINCjA4IDAwMDAwMDE4YGY0ZWZm
OWUwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0K
MDkgMDAwMDAwMThgZjRlZmZhMTAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVh
ZFN0YXJ0KzB4MjENCg0KICAgOCAgSWQ6IDE3ZGMuMzU5YyBTdXNwZW5kOiAxIFRlYjogMDAwMDAw
MThgZjQ2MWQwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAg
ICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjRmZmY0MTggMDAwMDdmZmRgODZiNWNiMjAgbnRk
bGwhTnRXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKzB4MTQNCjAxIDAwMDAwMDE4YGY0ZmZmNDIwIDAw
MDA3ZmZkYDg4OTViMWU2IEtFUk5FTEJBU0UhV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KzB4ZjAN
CjAyIDAwMDAwMDE4YGY0ZmZmNzEwIDAwMDA3ZmZkYDg4OTViMDYwIGNvbWJhc2UhUm9HZXRTZXJ2
ZXJBY3RpdmF0YWJsZUNsYXNzZXMrMHgxNDc2DQowMyAwMDAwMDAxOGBmNGZmZjlhMCAwMDAwN2Zm
ZGA4ODk1YWU3MCBjb21iYXNlIVJvR2V0U2VydmVyQWN0aXZhdGFibGVDbGFzc2VzKzB4MTJmMA0K
MDQgMDAwMDAwMThgZjRmZmY5ZjAgMDAwMDdmZmRgODg5NWFkZjkgY29tYmFzZSFSb0dldFNlcnZl
ckFjdGl2YXRhYmxlQ2xhc3NlcysweDExMDANCjA1IDAwMDAwMDE4YGY0ZmZmYTUwIDAwMDA3ZmZk
YDg3ZjY3MDM0IGNvbWJhc2UhUm9HZXRTZXJ2ZXJBY3RpdmF0YWJsZUNsYXNzZXMrMHgxMDg5DQow
NiAwMDAwMDAxOGBmNGZmZmE4MCAwMDAwN2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFk
SW5pdFRodW5rKzB4MTQNCjA3IDAwMDAwMDE4YGY0ZmZmYWIwIDAwMDAwMDAwYDAwMDAwMDAwIG50
ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxDQoNCiAgIDkgIElkOiAxN2RjLjJmZGMgU3VzcGVu
ZDogMSBUZWI6IDAwMDAwMDE4YGY0NjFmMDAwIFVuZnJvemVuDQogIyBDaGlsZC1TUCAgICAgICAg
ICBSZXRBZGRyICAgICAgICAgICBDYWxsIFNpdGUNCjAwIDAwMDAwMDE4YGY1MGZmNzM4IDAwMDA3
ZmZkYDg5NDQyZGM3IG50ZGxsIU50V2FpdEZvcldvcmtWaWFXb3JrZXJGYWN0b3J5KzB4MTQNCjAx
IDAwMDAwMDE4YGY1MGZmNzQwIDAwMDA3ZmZkYDg3ZjY3MDM0IG50ZGxsIVRwcFdvcmtlclRocmVh
ZCsweDJmNw0KMDIgMDAwMDAwMThgZjUwZmZhNDAgMDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIh
QmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowMyAwMDAwMDAxOGBmNTBmZmE3MCAwMDAwMDAwMGAw
MDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMQ0KDQogIDEwICBJZDogMTdkYy4y
ZTk4IFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDYyMTAwMCBVbmZyb3plbg0KICMgQ2hpbGQt
U1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAgQ2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNTFm
ZjljOCAwMDAwN2ZmZGA4OTQ0MmRjNyBudGRsbCFOdFdhaXRGb3JXb3JrVmlhV29ya2VyRmFjdG9y
eSsweDE0DQowMSAwMDAwMDAxOGBmNTFmZjlkMCAwMDAwN2ZmZGA4N2Y2NzAzNCBudGRsbCFUcHBX
b3JrZXJUaHJlYWQrMHgyZjcNCjAyIDAwMDAwMDE4YGY1MWZmY2QwIDAwMDA3ZmZkYDg5NDQyNjUx
IEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMDMgMDAwMDAwMThgZjUxZmZkMDAg
MDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAxMSAg
SWQ6IDE3ZGMuNWRjYyBTdXNwZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2MjMwMDAgVW5mcm96ZW4N
CiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAw
MDAwMThgZjUyZmZjMTggMDAwMDdmZmRgODk0NDJkYzcgbnRkbGwhTnRXYWl0Rm9yV29ya1ZpYVdv
cmtlckZhY3RvcnkrMHgxNA0KMDEgMDAwMDAwMThgZjUyZmZjMjAgMDAwMDdmZmRgODdmNjcwMzQg
bnRkbGwhVHBwV29ya2VyVGhyZWFkKzB4MmY3DQowMiAwMDAwMDAxOGBmNTJmZmYyMCAwMDAwN2Zm
ZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTQNCjAzIDAwMDAwMDE4
YGY1MmZmZjUwIDAwMDAwMDAwYDAwMDAwMDAwIG50ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIx
DQoNCiAgMTIgIElkOiAxN2RjLjRmNTAgU3VzcGVuZDogMSBUZWI6IDAwMDAwMDE4YGY0NjI1MDAw
IFVuZnJvemVuDQogIyBDaGlsZC1TUCAgICAgICAgICBSZXRBZGRyICAgICAgICAgICBDYWxsIFNp
dGUNCjAwIDAwMDAwMDE4YGY1M2ZmYjI4IDAwMDA3ZmZkYDg2YjMxYTVlIG50ZGxsIU50V2FpdEZv
clNpbmdsZU9iamVjdCsweDE0DQowMSAwMDAwMDAxOGBmNTNmZmIzMCAwMDAwN2ZmZGAzN2MxOTU0
ZCBLRVJORUxCQVNFIVdhaXRGb3JTaW5nbGVPYmplY3RFeCsweDhlDQowMiAwMDAwMDAxOGBmNTNm
ZmJkMCAwMDAwN2ZmZGAzN2QyNmQ1OCBhdGl1bWQ2NCFPcGVuQWRhcHRlcisweDY3NTRkDQowMyAw
MDAwMDAxOGBmNTNmZmMwMCAwMDAwN2ZmZGA4N2Y2NzAzNCBhdGl1bWQ2NCFYZHhJbml0WG9wQWRh
cHRlclNlcnZpY2VzKzB4ODJjODgNCjA0IDAwMDAwMDE4YGY1M2ZmYzMwIDAwMDA3ZmZkYDg5NDQy
NjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMDUgMDAwMDAwMThgZjUzZmZj
NjAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAx
MyAgSWQ6IDE3ZGMuNThiMCBTdXNwZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2MjcwMDAgVW5mcm96
ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAg
MDAwMDAwMThgZjU0ZmY4MjggMDAwMDdmZmRgODZiMzFhNWUgbnRkbGwhTnRXYWl0Rm9yU2luZ2xl
T2JqZWN0KzB4MTQNCjAxIDAwMDAwMDE4YGY1NGZmODMwIDAwMDA3ZmZkYDM3YzE5NTRkIEtFUk5F
TEJBU0UhV2FpdEZvclNpbmdsZU9iamVjdEV4KzB4OGUNCjAyIDAwMDAwMDE4YGY1NGZmOGQwIDAw
MDA3ZmZkYDM3ZDI2ZDU4IGF0aXVtZDY0IU9wZW5BZGFwdGVyKzB4Njc1NGQNCjAzIDAwMDAwMDE4
YGY1NGZmOTAwIDAwMDA3ZmZkYDg3ZjY3MDM0IGF0aXVtZDY0IVhkeEluaXRYb3BBZGFwdGVyU2Vy
dmljZXMrMHg4MmM4OA0KMDQgMDAwMDAwMThgZjU0ZmY5MzAgMDAwMDdmZmRgODk0NDI2NTEgS0VS
TkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowNSAwMDAwMDAxOGBmNTRmZjk2MCAwMDAw
MDAwMGAwMDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMQ0KDQogIDE0ICBJZDog
MTdkYy4zOWZjIFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDYyOTAwMCBVbmZyb3plbg0KICMg
Q2hpbGQtU1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAgQ2FsbCBTaXRlDQowMCAwMDAwMDAx
OGBmNTVmZmIxOCAwMDAwN2ZmZGA4NmIzMWE1ZSBudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3Qr
MHgxNA0KMDEgMDAwMDAwMThgZjU1ZmZiMjAgMDAwMDdmZmRgMzdjMTk1NGQgS0VSTkVMQkFTRSFX
YWl0Rm9yU2luZ2xlT2JqZWN0RXgrMHg4ZQ0KMDIgMDAwMDAwMThgZjU1ZmZiYzAgMDAwMDdmZmRg
MzdkMjZkNTggYXRpdW1kNjQhT3BlbkFkYXB0ZXIrMHg2NzU0ZA0KMDMgMDAwMDAwMThgZjU1ZmZi
ZjAgMDAwMDdmZmRgODdmNjcwMzQgYXRpdW1kNjQhWGR4SW5pdFhvcEFkYXB0ZXJTZXJ2aWNlcysw
eDgyYzg4DQowNCAwMDAwMDAxOGBmNTVmZmMyMCAwMDAwN2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFC
YXNlVGhyZWFkSW5pdFRodW5rKzB4MTQNCjA1IDAwMDAwMDE4YGY1NWZmYzUwIDAwMDAwMDAwYDAw
MDAwMDAwIG50ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxDQoNCiAgMTUgIElkOiAxN2RjLjQ3
YmMgU3VzcGVuZDogMSBUZWI6IDAwMDAwMDE4YGY0NjJiMDAwIFVuZnJvemVuDQogIyBDaGlsZC1T
UCAgICAgICAgICBSZXRBZGRyICAgICAgICAgICBDYWxsIFNpdGUNCjAwIDAwMDAwMDE4YGY1NmZm
NmY4IDAwMDA3ZmZkYDg2YjMxYTVlIG50ZGxsIU50V2FpdEZvclNpbmdsZU9iamVjdCsweDE0DQow
MSAwMDAwMDAxOGBmNTZmZjcwMCAwMDAwN2ZmZGAzN2MxOTU0ZCBLRVJORUxCQVNFIVdhaXRGb3JT
aW5nbGVPYmplY3RFeCsweDhlDQowMiAwMDAwMDAxOGBmNTZmZjdhMCAwMDAwN2ZmZGAzN2QyNmQ1
OCBhdGl1bWQ2NCFPcGVuQWRhcHRlcisweDY3NTRkDQowMyAwMDAwMDAxOGBmNTZmZjdkMCAwMDAw
N2ZmZGA4N2Y2NzAzNCBhdGl1bWQ2NCFYZHhJbml0WG9wQWRhcHRlclNlcnZpY2VzKzB4ODJjODgN
CjA0IDAwMDAwMDE4YGY1NmZmODAwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJl
YWRJbml0VGh1bmsrMHgxNA0KMDUgMDAwMDAwMThgZjU2ZmY4MzAgMDAwMDAwMDBgMDAwMDAwMDAg
bnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAxNiAgSWQ6IDE3ZGMuM2I4OCBTdXNw
ZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2MmQwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAgICAg
ICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjU3ZmY4YTggMDAw
MDdmZmRgODZiMzFhNWUgbnRkbGwhTnRXYWl0Rm9yU2luZ2xlT2JqZWN0KzB4MTQNCjAxIDAwMDAw
MDE4YGY1N2ZmOGIwIDAwMDA3ZmZkYDM3YzE5NTRkIEtFUk5FTEJBU0UhV2FpdEZvclNpbmdsZU9i
amVjdEV4KzB4OGUNCjAyIDAwMDAwMDE4YGY1N2ZmOTUwIDAwMDA3ZmZkYDM3ZDI2ZDU4IGF0aXVt
ZDY0IU9wZW5BZGFwdGVyKzB4Njc1NGQNCjAzIDAwMDAwMDE4YGY1N2ZmOTgwIDAwMDA3ZmZkYDg3
ZjY3MDM0IGF0aXVtZDY0IVhkeEluaXRYb3BBZGFwdGVyU2VydmljZXMrMHg4MmM4OA0KMDQgMDAw
MDAwMThgZjU3ZmY5YjAgMDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRU
aHVuaysweDE0DQowNSAwMDAwMDAxOGBmNTdmZjllMCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFS
dGxVc2VyVGhyZWFkU3RhcnQrMHgyMQ0KDQogIDE3ICBJZDogMTdkYy40YjFjIFN1c3BlbmQ6IDEg
VGViOiAwMDAwMDAxOGBmNDYyZjAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0
QWRkciAgICAgICAgICAgQ2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNThmZjc1OCAwMDAwN2ZmZGA4
NmIzMWE1ZSBudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3QrMHgxNA0KMDEgMDAwMDAwMThgZjU4
ZmY3NjAgMDAwMDdmZmRgMzdjMTk1NGQgS0VSTkVMQkFTRSFXYWl0Rm9yU2luZ2xlT2JqZWN0RXgr
MHg4ZQ0KMDIgMDAwMDAwMThgZjU4ZmY4MDAgMDAwMDdmZmRgMzdkMjZkNTggYXRpdW1kNjQhT3Bl
bkFkYXB0ZXIrMHg2NzU0ZA0KMDMgMDAwMDAwMThgZjU4ZmY4MzAgMDAwMDdmZmRgODdmNjcwMzQg
YXRpdW1kNjQhWGR4SW5pdFhvcEFkYXB0ZXJTZXJ2aWNlcysweDgyYzg4DQowNCAwMDAwMDAxOGBm
NThmZjg2MCAwMDAwN2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4
MTQNCjA1IDAwMDAwMDE4YGY1OGZmODkwIDAwMDAwMDAwYDAwMDAwMDAwIG50ZGxsIVJ0bFVzZXJU
aHJlYWRTdGFydCsweDIxDQoNCiAgMTggIElkOiAxN2RjLjUyMDQgU3VzcGVuZDogMSBUZWI6IDAw
MDAwMDE4YGY0NjMxMDAwIFVuZnJvemVuDQogIyBDaGlsZC1TUCAgICAgICAgICBSZXRBZGRyICAg
ICAgICAgICBDYWxsIFNpdGUNCjAwIDAwMDAwMDE4YGY1OWZmZGU4IDAwMDA3ZmZkYDg2YjMxYTVl
IG50ZGxsIU50V2FpdEZvclNpbmdsZU9iamVjdCsweDE0DQowMSAwMDAwMDAxOGBmNTlmZmRmMCAw
MDAwN2ZmZGAzN2MxOTU0ZCBLRVJORUxCQVNFIVdhaXRGb3JTaW5nbGVPYmplY3RFeCsweDhlDQow
MiAwMDAwMDAxOGBmNTlmZmU5MCAwMDAwN2ZmZGAzN2QyNmQ1OCBhdGl1bWQ2NCFPcGVuQWRhcHRl
cisweDY3NTRkDQowMyAwMDAwMDAxOGBmNTlmZmVjMCAwMDAwN2ZmZGA4N2Y2NzAzNCBhdGl1bWQ2
NCFYZHhJbml0WG9wQWRhcHRlclNlcnZpY2VzKzB4ODJjODgNCjA0IDAwMDAwMDE4YGY1OWZmZWYw
IDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMDUg
MDAwMDAwMThgZjU5ZmZmMjAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVhZFN0
YXJ0KzB4MjENCg0KICAxOSAgSWQ6IDE3ZGMuMmRlOCBTdXNwZW5kOiAxIFRlYjogMDAwMDAwMThg
ZjQ2MzMwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAgICAg
IENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjVhZmZhNzggMDAwMDdmZmRgODZiMzFhNWUgbnRkbGwh
TnRXYWl0Rm9yU2luZ2xlT2JqZWN0KzB4MTQNCjAxIDAwMDAwMDE4YGY1YWZmYTgwIDAwMDA3ZmZk
YDM3YzE5NTRkIEtFUk5FTEJBU0UhV2FpdEZvclNpbmdsZU9iamVjdEV4KzB4OGUNCjAyIDAwMDAw
MDE4YGY1YWZmYjIwIDAwMDA3ZmZkYDM3ZDI2ZDU4IGF0aXVtZDY0IU9wZW5BZGFwdGVyKzB4Njc1
NGQNCjAzIDAwMDAwMDE4YGY1YWZmYjUwIDAwMDA3ZmZkYDg3ZjY3MDM0IGF0aXVtZDY0IVhkeElu
aXRYb3BBZGFwdGVyU2VydmljZXMrMHg4MmM4OA0KMDQgMDAwMDAwMThgZjVhZmZiODAgMDAwMDdm
ZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowNSAwMDAwMDAx
OGBmNWFmZmJiMCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgy
MQ0KDQogIDIwICBJZDogMTdkYy4yZTljIFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDYzNTAw
MCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAgQ2FsbCBT
aXRlDQowMCAwMDAwMDAxOGBmNWJmZjZkOCAwMDAwN2ZmZGA4NmIzMWE1ZSBudGRsbCFOdFdhaXRG
b3JTaW5nbGVPYmplY3QrMHgxNA0KMDEgMDAwMDAwMThgZjViZmY2ZTAgMDAwMDdmZmRgMzdjMTk1
NGQgS0VSTkVMQkFTRSFXYWl0Rm9yU2luZ2xlT2JqZWN0RXgrMHg4ZQ0KMDIgMDAwMDAwMThgZjVi
ZmY3ODAgMDAwMDdmZmRgMzdkMjZkNTggYXRpdW1kNjQhT3BlbkFkYXB0ZXIrMHg2NzU0ZA0KMDMg
MDAwMDAwMThgZjViZmY3YjAgMDAwMDdmZmRgODdmNjcwMzQgYXRpdW1kNjQhWGR4SW5pdFhvcEFk
YXB0ZXJTZXJ2aWNlcysweDgyYzg4DQowNCAwMDAwMDAxOGBmNWJmZjdlMCAwMDAwN2ZmZGA4OTQ0
MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTQNCjA1IDAwMDAwMDE4YGY1YmZm
ODEwIDAwMDAwMDAwYDAwMDAwMDAwIG50ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxDQoNCiAg
MjEgIElkOiAxN2RjLjViYjAgU3VzcGVuZDogMSBUZWI6IDAwMDAwMDE4YGY0NjM3MDAwIFVuZnJv
emVuDQogIyBDaGlsZC1TUCAgICAgICAgICBSZXRBZGRyICAgICAgICAgICBDYWxsIFNpdGUNCjAw
IDAwMDAwMDE4YGY1Y2ZmODg4IDAwMDA3ZmZkYDg5NDQyZGM3IG50ZGxsIU50V2FpdEZvcldvcmtW
aWFXb3JrZXJGYWN0b3J5KzB4MTQNCjAxIDAwMDAwMDE4YGY1Y2ZmODkwIDAwMDA3ZmZkYDg3ZjY3
MDM0IG50ZGxsIVRwcFdvcmtlclRocmVhZCsweDJmNw0KMDIgMDAwMDAwMThgZjVjZmZiOTAgMDAw
MDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowMyAwMDAw
MDAxOGBmNWNmZmJjMCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQr
MHgyMQ0KDQogIDIyICBJZDogMTdkYy4yZmY0IFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDYz
OTAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAgQ2Fs
bCBTaXRlDQowMCAwMDAwMDAxOGBmNWRmZjdjOCAwMDAwN2ZmZGA4OTQ0MmRjNyBudGRsbCFOdFdh
aXRGb3JXb3JrVmlhV29ya2VyRmFjdG9yeSsweDE0DQowMSAwMDAwMDAxOGBmNWRmZjdkMCAwMDAw
N2ZmZGA4N2Y2NzAzNCBudGRsbCFUcHBXb3JrZXJUaHJlYWQrMHgyZjcNCjAyIDAwMDAwMDE4YGY1
ZGZmYWQwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgx
NA0KMDMgMDAwMDAwMThgZjVkZmZiMDAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRo
cmVhZFN0YXJ0KzB4MjENCg0KICAyMyAgSWQ6IDE3ZGMuNTY2MCBTdXNwZW5kOiAxIFRlYjogMDAw
MDAwMThgZjQ2M2QwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAg
ICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjVlZmY0NDggMDAwMDdmZmRgODg0ZDBiNWUg
d2luMzJ1IU50VXNlck1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCsweDE0DQowMSAwMDAwMDAx
OGBmNWVmZjQ1MCAwMDAwN2ZmZGA0NjZhZTliNyBVU0VSMzIhUmVhbE1zZ1dhaXRGb3JNdWx0aXBs
ZU9iamVjdHNFeCsweDFlDQowMiAwMDAwMDAxOGBmNWVmZjQ5MCAwMDAwN2ZmZGA0NjZhZTIyMSBD
b3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKzB4OGI2MGQNCjAz
IDAwMDAwMDE4YGY1ZWZmNzMwIDAwMDA3ZmZkYDQ2NmFiMDk3IENvcmVGb3VuZGF0aW9uIUNGUmVh
ZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3ArMHg4YWU3Nw0KMDQgMDAwMDAwMThgZjVlZmY4MjAg
MDAwMDdmZmRgMzkzNmVlYTYgQ29yZUZvdW5kYXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRo
UnVuTG9vcCsweDg3Y2VkDQowNSAwMDAwMDAxOGBmNWVmZjhlMCAwMDAwN2ZmZGAzOTM2Zjk3ZCBX
ZWJLaXQhYFdlYkNvcmU6OmdldFJ1bkxvb3AnOjpgNSc6OjxsYW1iZGFfMT46Om9wZXJhdG9yKCko
dm9pZCkrMHhjNiBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdlYkNvcmVccGxhdGZvcm1cbmV0
d29ya1xjZlxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcCBAIDExOV0NCjA2IDAwMDAwMDE4YGY1ZWZmOTgwIDAwMDA3ZmZkYDVjY2FmMjIx
IFdlYktpdCFXVEY6OkRldGFpbDo6Q2FsbGFibGVXcmFwcGVyPGBXZWJDb3JlOjpnZXRSdW5Mb29w
Jzo6YDUnOjo8bGFtYmRhXzE+LHZvaWQ+OjpjYWxsKHZvaWQpKzB4ZCBbQzpcaG9tZVx3ZWJraXRc
Z2NcV2ViS2l0QnVpbGRcUmVsZWFzZVxEZXJpdmVkU291cmNlc1xGb3J3YXJkaW5nSGVhZGVyc1x3
dGZcRnVuY3Rpb24uaCBAIDUzXQ0KMDcgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0t
LS0gV1RGIVdURjo6RnVuY3Rpb248dm9pZCBfX2NkZWNsKHZvaWQpKzB4OSBbQzpcaG9tZVx3ZWJr
aXRcZ2NcU291cmNlXFdURlx3dGZcRnVuY3Rpb24uaCBAIDgyXQ0KMDggMDAwMDAwMThgZjVlZmY5
YjAgMDAwMDdmZmRgNWNkMDJmNjkgV1RGIVdURjo6VGhyZWFkOjplbnRyeVBvaW50KHN0cnVjdCBX
VEY6OlRocmVhZDo6TmV3VGhyZWFkQ29udGV4dCAqIG5ld1RocmVhZENvbnRleHQgPSAweDAwMDAw
MWYwYDUyNTZmMWYwKSsweGMxIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxUaHJl
YWRpbmcuY3BwIEAgMTkyXQ0KMDkgMDAwMDAwMThgZjVlZmZhMDAgMDAwMDdmZmRgNWNkMTk1YzQg
V1RGIVdURjo6d3RmVGhyZWFkRW50cnlQb2ludCh2b2lkICogZGF0YSA9IDxWYWx1ZSB1bmF2YWls
YWJsZSBlcnJvcj4pKzB4OSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcd2luXFRo
cmVhZGluZ1dpbi5jcHAgQCAxNTNdDQowYSAwMDAwMDAxOGBmNWVmZmEzMCAwMDAwN2ZmZGA4N2Y2
NzAzNCBXVEYhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAodm9pZCAqIHBhcmFtZXRlciA9IDB4
MDAwMDAxZjBgNTI1NmJjMzApKzB4NTAgW21pbmtlcm5lbFxjcnRzXHVjcnRcc3JjXGFwcGNydFxz
dGFydHVwXHRocmVhZC5jcHAgQCA5N10NCjBiIDAwMDAwMDE4YGY1ZWZmYTYwIDAwMDA3ZmZkYDg5
NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMGMgMDAwMDAwMThgZjVl
ZmZhOTAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0K
ICAyNCAgSWQ6IDE3ZGMuMmQ3NCBTdXNwZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2M2YwMDAgVW5m
cm96ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0K
MDAgMDAwMDAwMThgZjVmZmY5ZTggMDAwMDdmZmRgODZiMzFhNWUgbnRkbGwhTnRXYWl0Rm9yU2lu
Z2xlT2JqZWN0KzB4MTQNCjAxIDAwMDAwMDE4YGY1ZmZmOWYwIDAwMDA3ZmZkYDdjODk2MDcwIEtF
Uk5FTEJBU0UhV2FpdEZvclNpbmdsZU9iamVjdEV4KzB4OGUNCjAyIDAwMDAwMDE4YGY1ZmZmYTkw
IDAwMDA3ZmZkYDg3ZjY3MDM0IFdJTklORVQhVXJsQ2FjaGVTZXRHbG9iYWxMaW1pdCsweDIwOTAN
CjAzIDAwMDAwMDE4YGY1ZmZmYWMwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJl
YWRJbml0VGh1bmsrMHgxNA0KMDQgMDAwMDAwMThgZjVmZmZhZjAgMDAwMDAwMDBgMDAwMDAwMDAg
bnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAyNSAgSWQ6IDE3ZGMuMzkzNCBTdXNw
ZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2NDEwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAgICAg
ICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjYwZmY4YTggMDAw
MDdmZmRgODZiNDI1NzAgbnRkbGwhTnROb3RpZnlDaGFuZ2VLZXkrMHgxNA0KMDEgMDAwMDAwMThg
ZjYwZmY4YjAgMDAwMDdmZmRgNDZlYzQxMGEgS0VSTkVMQkFTRSFSZWdOb3RpZnlDaGFuZ2VLZXlW
YWx1ZSsweGIwDQowMiAwMDAwMDAxOGBmNjBmZjkzMCAwMDAwN2ZmZGA4NmUwNTE0YiBDRk5ldHdv
cmshQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwrMHgxMDJhDQowMyAwMDAwMDAxOGBmNjBmZjk3
MCAwMDAwN2ZmZGA4N2Y2NzAzNCB1Y3J0YmFzZSF0aHJlYWRfc3RhcnQ8dm9pZCArMHg3Yg0KMDQg
MDAwMDAwMThgZjYwZmY5YTAgMDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZElu
aXRUaHVuaysweDE0DQowNSAwMDAwMDAxOGBmNjBmZjlkMCAwMDAwMDAwMGAwMDAwMDAwMCBudGRs
bCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMQ0KDQogIDI2ICBJZDogMTdkYy40Y2QwIFN1c3BlbmQ6
IDEgVGViOiAwMDAwMDAxOGBmNDY0MzAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAg
UmV0QWRkciAgICAgICAgICAgQ2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNjFmZjViOCAwMDAwN2Zm
ZGA4ODRkMGI1ZSB3aW4zMnUhTnRVc2VyTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KzB4MTQN
CjAxIDAwMDAwMDE4YGY2MWZmNWMwIDAwMDA3ZmZkYDQ2NmFlOWI3IFVTRVIzMiFSZWFsTXNnV2Fp
dEZvck11bHRpcGxlT2JqZWN0c0V4KzB4MWUNCjAyIDAwMDAwMDE4YGY2MWZmNjAwIDAwMDA3ZmZk
YDQ2NmFlMjIxIENvcmVGb3VuZGF0aW9uIUNGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3Ar
MHg4YjYwZA0KMDMgMDAwMDAwMThgZjYxZmY4YTAgMDAwMDdmZmRgNDY2YWIwOTcgQ29yZUZvdW5k
YXRpb24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcCsweDhhZTc3DQowNCAwMDAwMDAx
OGBmNjFmZjk5MCAwMDAwN2ZmZGA0NmRmNTEwYSBDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1T
Y2hlZHVsZVdpdGhSdW5Mb29wKzB4ODdjZWQNCjA1IDAwMDAwMDE4YGY2MWZmYTUwIDAwMDA3ZmZk
YDQ2ZGY1MWE5IENGTmV0d29yaysweDI1MTBhDQowNiAwMDAwMDAxOGBmNjFmZmFlMCAwMDAwN2Zm
ZGA2YzQ3NjkzNyBDRk5ldHdvcmsrMHgyNTFhOQ0KMDcgMDAwMDAwMThgZjYxZmZiMTAgMDAwMDdm
ZmRgODZlMDFiYjIgcHRocmVhZFZDMiFwdGhyZWFkX3J3bG9ja2F0dHJfaW5pdCsweDU0YjkNCjA4
IDAwMDAwMDE4YGY2MWZmYmQwIDAwMDA3ZmZkYDg3ZjY3MDM0IHVjcnRiYXNlIXRocmVhZF9zdGFy
dDx1bnNpZ25lZCBpbnQgKzB4NDINCjA5IDAwMDAwMDE4YGY2MWZmYzAwIDAwMDA3ZmZkYDg5NDQy
NjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMGEgMDAwMDAwMThgZjYxZmZj
MzAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAy
NyAgSWQ6IDE3ZGMuNWU0NCBTdXNwZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2NDUwMDAgVW5mcm96
ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAg
MDAwMDAwMThgZjYyZmYzMDggMDAwMDdmZmRgODYyYzgwZmMgbnRkbGwhTnRXYWl0Rm9yU2luZ2xl
T2JqZWN0KzB4MTQNCjAxIDAwMDAwMDE4YGY2MmZmMzEwIDAwMDA3ZmZkYDg2MmNmNGRlIG1zd3Nv
Y2shU29ja1dhaXRGb3JTaW5nbGVPYmplY3QrMHgxMGMNCjAyIDAwMDAwMDE4YGY2MmZmM2IwIDAw
MDA3ZmZkYDg4MzkxNmY3IG1zd3NvY2shV1NQU2VsZWN0KzB4ODVlDQowMyAwMDAwMDAxOGBmNjJm
ZjU2MCAwMDAwN2ZmZGA0NjZiOGVjNSBXUzJfMzIhc2VsZWN0KzB4MTM3DQowNCAwMDAwMDAxOGBm
NjJmZjY0MCAwMDAwN2ZmZGA0NjcwNzczNyBDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hl
ZHVsZVdpdGhSdW5Mb29wKzB4OTViMWINCjA1IDAwMDAwMDE4YGY2MmZmODkwIDAwMDA3ZmZkYDg2
ZTAxYmIyIENvcmVGb3VuZGF0aW9uIUNGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3ArMHhl
NDM4ZA0KMDYgMDAwMDAwMThgZjYyZmY4YzAgMDAwMDdmZmRgODdmNjcwMzQgdWNydGJhc2UhdGhy
ZWFkX3N0YXJ0PHVuc2lnbmVkIGludCArMHg0Mg0KMDcgMDAwMDAwMThgZjYyZmY4ZjAgMDAwMDdm
ZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowOCAwMDAwMDAx
OGBmNjJmZjkyMCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgy
MQ0KDQogIDI4ICBJZDogMTdkYy40YjQwIFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDY0NzAw
MCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAgQ2FsbCBT
aXRlDQowMCAwMDAwMDAxOGBmNjNmZmQ0OCAwMDAwN2ZmZGA4NjJjMTBhYiBudGRsbCFOdFJlbW92
ZUlvQ29tcGxldGlvbisweDE0DQowMSAwMDAwMDAxOGBmNjNmZmQ1MCAwMDAwN2ZmZGA4N2Y2NzAz
NCBtc3dzb2NrIVNvY2tBc3luY1RocmVhZCsweDliDQowMiAwMDAwMDAxOGBmNjNmZmRiMCAwMDAw
N2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5rKzB4MTQNCjAzIDAwMDAw
MDE4YGY2M2ZmZGUwIDAwMDAwMDAwYDAwMDAwMDAwIG50ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsw
eDIxDQoNCiAgMjkgIElkOiAxN2RjLjI5ZjQgU3VzcGVuZDogMSBUZWI6IDAwMDAwMDE4YGY0NjQ5
MDAwIFVuZnJvemVuDQogIyBDaGlsZC1TUCAgICAgICAgICBSZXRBZGRyICAgICAgICAgICBDYWxs
IFNpdGUNCjAwIDAwMDAwMDE4YGY2NGZmMmM4IDAwMDA3ZmZkYDg4NGQwYjVlIHdpbjMydSFOdFVz
ZXJNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgrMHgxNA0KMDEgMDAwMDAwMThgZjY0ZmYyZDAg
MDAwMDdmZmRgNDY2YWU5YjcgVVNFUjMyIVJlYWxNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgr
MHgxZQ0KMDIgMDAwMDAwMThgZjY0ZmYzMTAgMDAwMDdmZmRgNDY2YWUyMjEgQ29yZUZvdW5kYXRp
b24hQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcCsweDhiNjBkDQowMyAwMDAwMDAxOGBm
NjRmZjViMCAwMDAwN2ZmZGA0NjZhYjA5NyBDb3JlRm91bmRhdGlvbiFDRlJlYWRTdHJlYW1TY2hl
ZHVsZVdpdGhSdW5Mb29wKzB4OGFlNzcNCjA0IDAwMDAwMDE4YGY2NGZmNmEwIDAwMDA3ZmZkYDQ2
ZGY1MTBhIENvcmVGb3VuZGF0aW9uIUNGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3ArMHg4
N2NlZA0KMDUgMDAwMDAwMThgZjY0ZmY3NjAgMDAwMDdmZmRgNDZkZjUxYTkgQ0ZOZXR3b3JrKzB4
MjUxMGENCjA2IDAwMDAwMDE4YGY2NGZmN2YwIDAwMDA3ZmZkYDZjNDc2OTM3IENGTmV0d29yaysw
eDI1MWE5DQowNyAwMDAwMDAxOGBmNjRmZjgyMCAwMDAwN2ZmZGA4NmUwMWJiMiBwdGhyZWFkVkMy
IXB0aHJlYWRfcndsb2NrYXR0cl9pbml0KzB4NTRiOQ0KMDggMDAwMDAwMThgZjY0ZmY4ZTAgMDAw
MDdmZmRgODdmNjcwMzQgdWNydGJhc2UhdGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCArMHg0Mg0K
MDkgMDAwMDAwMThgZjY0ZmY5MTAgMDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVh
ZEluaXRUaHVuaysweDE0DQowYSAwMDAwMDAxOGBmNjRmZjk0MCAwMDAwMDAwMGAwMDAwMDAwMCBu
dGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgyMQ0KDQogIDMwICBJZDogMTdkYy4zMmIwIFN1c3Bl
bmQ6IDEgVGViOiAwMDAwMDAxOGBmNDY0YjAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAg
ICAgUmV0QWRkciAgICAgICAgICAgQ2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNjVmZmQyOCAwMDAw
N2ZmZGA4NmIzMWE1ZSBudGRsbCFOdFdhaXRGb3JTaW5nbGVPYmplY3QrMHgxNA0KMDEgMDAwMDAw
MThgZjY1ZmZkMzAgMDAwMDdmZmRgNmM1NTk5YmIgS0VSTkVMQkFTRSFXYWl0Rm9yU2luZ2xlT2Jq
ZWN0RXgrMHg4ZQ0KMDIgMDAwMDAwMThgZjY1ZmZkZDAgMDAwMDdmZmRgNmM1NTgyM2MgbGliZGlz
cGF0Y2ghZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQrMHg3Yg0KMDMgMDAwMDAwMThgZjY1ZmZlMTAg
MDAwMDdmZmRgODdmNjcwMzQgbGliZGlzcGF0Y2ghZGlzcGF0Y2hfYWZ0ZXIrMHhlZGMNCjA0IDAw
MDAwMDE4YGY2NWZmZTgwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMyIUJhc2VUaHJlYWRJbml0
VGh1bmsrMHgxNA0KMDUgMDAwMDAwMThgZjY1ZmZlYjAgMDAwMDAwMDBgMDAwMDAwMDAgbnRkbGwh
UnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAzMSAgSWQ6IDE3ZGMuMjU2NCBTdXNwZW5kOiAx
IFRlYjogMDAwMDAwMThgZjQ2NGQwMDAgVW5mcm96ZW4NCiAjIENoaWxkLVNQICAgICAgICAgIFJl
dEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjY2ZmZhZDggMDAwMDdmZmRg
ODZiMzFhNWUgbnRkbGwhTnRXYWl0Rm9yU2luZ2xlT2JqZWN0KzB4MTQNCjAxIDAwMDAwMDE4YGY2
NmZmYWUwIDAwMDA3ZmZkYDZjNTU5OWJiIEtFUk5FTEJBU0UhV2FpdEZvclNpbmdsZU9iamVjdEV4
KzB4OGUNCjAyIDAwMDAwMDE4YGY2NmZmYjgwIDAwMDA3ZmZkYDZjNTU4MjNjIGxpYmRpc3BhdGNo
IWRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KzB4N2INCjAzIDAwMDAwMDE4YGY2NmZmYmMwIDAwMDA3
ZmZkYDg3ZjY3MDM0IGxpYmRpc3BhdGNoIWRpc3BhdGNoX2FmdGVyKzB4ZWRjDQowNCAwMDAwMDAx
OGBmNjZmZmMzMCAwMDAwN2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRodW5r
KzB4MTQNCjA1IDAwMDAwMDE4YGY2NmZmYzYwIDAwMDAwMDAwYDAwMDAwMDAwIG50ZGxsIVJ0bFVz
ZXJUaHJlYWRTdGFydCsweDIxDQoNCiAgMzIgIElkOiAxN2RjLjJjNTAgU3VzcGVuZDogMSBUZWI6
IDAwMDAwMDE4YGY0NjRmMDAwIFVuZnJvemVuDQogIyBDaGlsZC1TUCAgICAgICAgICBSZXRBZGRy
ICAgICAgICAgICBDYWxsIFNpdGUNCjAwIDAwMDAwMDE4YGY2N2ZmNTI4IDAwMDA3ZmZkYDg5NDU0
MDIxIG50ZGxsIU50V2FpdEZvckFsZXJ0QnlUaHJlYWRJZCsweDE0DQowMSAwMDAwMDAxOGBmNjdm
ZjUzMCAwMDAwN2ZmZGA4NmI3Y2U4OSBudGRsbCFSdGxTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JX
KzB4MTMxDQowMiAwMDAwMDAxOGBmNjdmZjViMCAwMDAwN2ZmZGA1Y2QwMmUyNyBLRVJORUxCQVNF
IVNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcrMHgyOQ0KMDMgMDAwMDAwMThgZjY3ZmY1ZjAgMDAw
MDdmZmRgNWNjYTlhZWYgV1RGIVdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoY2xhc3Mg
V1RGOjpNdXRleCAqIG11dGV4ID0gMHgwMDAwMDFmMGA1MjNmMmQyMCwgY2xhc3MgV1RGOjpXYWxs
VGltZSBhYnNvbHV0ZVRpbWUgPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+KSsweDc3IFtDOlxo
b21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0Zlx3aW5cVGhyZWFkaW5nV2luLmNwcCBAIDM5MF0N
CjA0IDAwMDAwMDE4YGY2N2ZmNjQwIDAwMDA3ZmZkYDVjYzgzYTcwIFdURiFXVEY6OlBhcmtpbmdM
b3Q6OnBhcmtDb25kaXRpb25hbGx5SW1wbCh2b2lkICogYWRkcmVzcyA9IDB4MDAwMDAxZjBgNTdk
Mzk1ZmMsIGNsYXNzIFdURjo6U2NvcGVkTGFtYmRhPGJvb2wgX19jZGVjbCh2b2lkKT4gKiB2YWxp
ZGF0aW9uID0gPFZhbHVlIHVuYXZhaWxhYmxlIGVycm9yPiwgY2xhc3MgV1RGOjpTY29wZWRMYW1i
ZGE8dm9pZCBfX2NkZWNsKHZvaWQpPiAqIGJlZm9yZVNsZWVwID0gPFZhbHVlIHVuYXZhaWxhYmxl
IGVycm9yPiwgY2xhc3MgV1RGOjpUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgKiB0aW1lb3V0ID0g
MHgwMDAwMDAxOGBmNjdmZjdiOCkrMHhlZiBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3
dGZcUGFya2luZ0xvdC5jcHAgQCA2MDJdDQowNSAoSW5saW5lIEZ1bmN0aW9uKSAtLS0tLS0tLWAt
LS0tLS0tLSBXVEYhV1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseSh2b2lkKSsweDY2
IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxQYXJraW5nTG90LmggQCA4Ml0NCjA2
IChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkNvbmRpdGlvbjo6
d2FpdFVudGlsVW5jaGVja2VkKHZvaWQpKzB4OWYgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxX
VEZcd3RmXENvbmRpdGlvbi5oIEAgMTkyXQ0KMDcgMDAwMDAwMThgZjY3ZmY2ZDAgMDAwMDdmZmRg
NWNjODMwMTUgV1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0VW50aWwoY2xhc3MgV1RGOjpMb2NrICog
bG9jayA9IDB4MDAwMDAxZjBgNTdjNTUwNTQsIGNsYXNzIFdURjo6VGltZVdpdGhEeW5hbWljQ2xv
Y2tUeXBlICogdGltZW91dCA9IDB4MDAwMDAwMThgZjY3ZmY3YjgpKzB4YjAgW0M6XGhvbWVcd2Vi
a2l0XGdjXFNvdXJjZVxXVEZcd3RmXENvbmRpdGlvbi5oIEAgNzddDQowOCAoSW5saW5lIEZ1bmN0
aW9uKSAtLS0tLS0tLWAtLS0tLS0tLSBXVEYhV1RGOjpDb25kaXRpb246OndhaXRGb3Iodm9pZCkr
MHgzYiBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9uLmggQCAxMTZd
DQowOSAwMDAwMDAxOGBmNjdmZjc5MCAwMDAwN2ZmZGA1Y2NhZjIyMSBXVEYhYFdURjo6QXV0b21h
dGljVGhyZWFkOjpzdGFydCc6OmAyJzo6PGxhbWJkYV8xPjo6b3BlcmF0b3IoKSh2b2lkKSsweGU1
IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxBdXRvbWF0aWNUaHJlYWQuY3BwIEAg
MjE3XQ0KMGEgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV1RGIVdURjo6RnVu
Y3Rpb248dm9pZCBfX2NkZWNsKHZvaWQpKzB4OSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdU
Rlx3dGZcRnVuY3Rpb24uaCBAIDgyXQ0KMGIgMDAwMDAwMThgZjY3ZmY4NDAgMDAwMDdmZmRgNWNk
MDJmNjkgV1RGIVdURjo6VGhyZWFkOjplbnRyeVBvaW50KHN0cnVjdCBXVEY6OlRocmVhZDo6TmV3
VGhyZWFkQ29udGV4dCAqIG5ld1RocmVhZENvbnRleHQgPSAweDAwMDAwMWYwYDU3ZDk1MTgwKSsw
eGMxIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxUaHJlYWRpbmcuY3BwIEAgMTky
XQ0KMGMgMDAwMDAwMThgZjY3ZmY4OTAgMDAwMDdmZmRgNWNkMTk1YzQgV1RGIVdURjo6d3RmVGhy
ZWFkRW50cnlQb2ludCh2b2lkICogZGF0YSA9IDxWYWx1ZSB1bmF2YWlsYWJsZSBlcnJvcj4pKzB4
OSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcd2luXFRocmVhZGluZ1dpbi5jcHAg
QCAxNTNdDQowZCAwMDAwMDAxOGBmNjdmZjhjMCAwMDAwN2ZmZGA4N2Y2NzAzNCBXVEYhdGhyZWFk
X3N0YXJ0PHVuc2lnbmVkIGludCAodm9pZCAqIHBhcmFtZXRlciA9IDB4MDAwMDAxZjBgNTc3ZTA4
NjApKzB4NTAgW21pbmtlcm5lbFxjcnRzXHVjcnRcc3JjXGFwcGNydFxzdGFydHVwXHRocmVhZC5j
cHAgQCA5N10NCjBlIDAwMDAwMDE4YGY2N2ZmOGYwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5FTDMy
IUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMGYgMDAwMDAwMThgZjY3ZmY5MjAgMDAwMDAwMDBg
MDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAzMyAgSWQ6IDE3ZGMu
Mjc4YyBTdXNwZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2NTEwMDAgVW5mcm96ZW4NCiAjIENoaWxk
LVNQICAgICAgICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThgZjY4
ZmZhNzggMDAwMDdmZmRgODk0NTQwMjEgbnRkbGwhTnRXYWl0Rm9yQWxlcnRCeVRocmVhZElkKzB4
MTQNCjAxIDAwMDAwMDE4YGY2OGZmYTgwIDAwMDA3ZmZkYDg2YjdjZTg5IG50ZGxsIVJ0bFNsZWVw
Q29uZGl0aW9uVmFyaWFibGVTUlcrMHgxMzENCjAyIDAwMDAwMDE4YGY2OGZmYjAwIDAwMDA3ZmZk
YDVjZDAyZTI3IEtFUk5FTEJBU0UhU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDI5DQowMyAw
MDAwMDAxOGBmNjhmZmI0MCAwMDAwN2ZmZGA1Y2NhOWFlZiBXVEYhV1RGOjpUaHJlYWRDb25kaXRp
b246OnRpbWVkV2FpdChjbGFzcyBXVEY6Ok11dGV4ICogbXV0ZXggPSAweDAwMDAwMWYwYDUyNjhh
ZmIwLCBjbGFzcyBXVEY6OldhbGxUaW1lIGFic29sdXRlVGltZSA9IDxWYWx1ZSB1bmF2YWlsYWJs
ZSBlcnJvcj4pKzB4NzcgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXHdpblxUaHJl
YWRpbmdXaW4uY3BwIEAgMzkwXQ0KMDQgMDAwMDAwMThgZjY4ZmZiOTAgMDAwMDdmZmRgNWNjODNh
NzAgV1RGIVdURjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHlJbXBsKHZvaWQgKiBhZGRy
ZXNzID0gMHgwMDAwMDFmMGA1N2QzOTZiYywgY2xhc3MgV1RGOjpTY29wZWRMYW1iZGE8Ym9vbCBf
X2NkZWNsKHZvaWQpPiAqIHZhbGlkYXRpb24gPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+LCBj
bGFzcyBXVEY6OlNjb3BlZExhbWJkYTx2b2lkIF9fY2RlY2wodm9pZCk+ICogYmVmb3JlU2xlZXAg
PSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+LCBjbGFzcyBXVEY6OlRpbWVXaXRoRHluYW1pY0Ns
b2NrVHlwZSAqIHRpbWVvdXQgPSAweDAwMDAwMDE4YGY2OGZmZDA4KSsweGVmIFtDOlxob21lXHdl
YmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxQYXJraW5nTG90LmNwcCBAIDYwMl0NCjA1IChJbmxpbmUg
RnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OlBhcmtpbmdMb3Q6OnBhcmtDb25k
aXRpb25hbGx5KHZvaWQpKzB4NjYgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXFBh
cmtpbmdMb3QuaCBAIDgyXQ0KMDYgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0g
V1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0VW50aWxVbmNoZWNrZWQodm9pZCkrMHg5ZiBbQzpcaG9t
ZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9uLmggQCAxOTJdDQowNyAwMDAwMDAx
OGBmNjhmZmMyMCAwMDAwN2ZmZGA1Y2M4MzAxNSBXVEYhV1RGOjpDb25kaXRpb246OndhaXRVbnRp
bChjbGFzcyBXVEY6OkxvY2sgKiBsb2NrID0gMHgwMDAwMDFmMGA1N2M1NTA1NCwgY2xhc3MgV1RG
OjpUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgKiB0aW1lb3V0ID0gMHgwMDAwMDAxOGBmNjhmZmQw
OCkrMHhiMCBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9uLmggQCA3
N10NCjA4IChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkNvbmRp
dGlvbjo6d2FpdEZvcih2b2lkKSsweDNiIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0
ZlxDb25kaXRpb24uaCBAIDExNl0NCjA5IDAwMDAwMDE4YGY2OGZmY2UwIDAwMDA3ZmZkYDVjY2Fm
MjIxIFdURiFgV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0Jzo6YDInOjo8bGFtYmRhXzE+Ojpv
cGVyYXRvcigpKHZvaWQpKzB4ZTUgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXEF1
dG9tYXRpY1RocmVhZC5jcHAgQCAyMTddDQowYSAoSW5saW5lIEZ1bmN0aW9uKSAtLS0tLS0tLWAt
LS0tLS0tLSBXVEYhV1RGOjpGdW5jdGlvbjx2b2lkIF9fY2RlY2wodm9pZCkrMHg5IFtDOlxob21l
XHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxGdW5jdGlvbi5oIEAgODJdDQowYiAwMDAwMDAxOGBm
NjhmZmQ5MCAwMDAwN2ZmZGA1Y2QwMmY2OSBXVEYhV1RGOjpUaHJlYWQ6OmVudHJ5UG9pbnQoc3Ry
dWN0IFdURjo6VGhyZWFkOjpOZXdUaHJlYWRDb250ZXh0ICogbmV3VGhyZWFkQ29udGV4dCA9IDB4
MDAwMDAxZjBgNTdkOTUxYzApKzB4YzEgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3Rm
XFRocmVhZGluZy5jcHAgQCAxOTJdDQowYyAwMDAwMDAxOGBmNjhmZmRlMCAwMDAwN2ZmZGA1Y2Qx
OTVjNCBXVEYhV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQgKiBkYXRhID0gPFZhbHVlIHVu
YXZhaWxhYmxlIGVycm9yPikrMHg5IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0Zlx3
aW5cVGhyZWFkaW5nV2luLmNwcCBAIDE1M10NCjBkIDAwMDAwMDE4YGY2OGZmZTEwIDAwMDA3ZmZk
YDg3ZjY3MDM0IFdURiF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50ICh2b2lkICogcGFyYW1ldGVy
ID0gMHgwMDAwMDFmMGA1NzdlM2VmMCkrMHg1MCBbbWlua2VybmVsXGNydHNcdWNydFxzcmNcYXBw
Y3J0XHN0YXJ0dXBcdGhyZWFkLmNwcCBAIDk3XQ0KMGUgMDAwMDAwMThgZjY4ZmZlNDAgMDAwMDdm
ZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowZiAwMDAwMDAx
OGBmNjhmZmU3MCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQrMHgy
MQ0KDQogIDM0ICBJZDogMTdkYy40MGM0IFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDY1MzAw
MCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAgQ2FsbCBT
aXRlDQowMCAwMDAwMDAxOGBmNjlmZjU4OCAwMDAwN2ZmZGA4OTQ1NDAyMSBudGRsbCFOdFdhaXRG
b3JBbGVydEJ5VGhyZWFkSWQrMHgxNA0KMDEgMDAwMDAwMThgZjY5ZmY1OTAgMDAwMDdmZmRgODZi
N2NlODkgbnRkbGwhUnRsU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDEzMQ0KMDIgMDAwMDAw
MThgZjY5ZmY2MTAgMDAwMDdmZmRgNWNkMDJlMjcgS0VSTkVMQkFTRSFTbGVlcENvbmRpdGlvblZh
cmlhYmxlU1JXKzB4MjkNCjAzIDAwMDAwMDE4YGY2OWZmNjUwIDAwMDA3ZmZkYDVjY2E5YWVmIFdU
RiFXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KGNsYXNzIFdURjo6TXV0ZXggKiBtdXRl
eCA9IDB4MDAwMDAxZjBgNTI1YjJjZjAsIGNsYXNzIFdURjo6V2FsbFRpbWUgYWJzb2x1dGVUaW1l
ID0gPFZhbHVlIHVuYXZhaWxhYmxlIGVycm9yPikrMHg3NyBbQzpcaG9tZVx3ZWJraXRcZ2NcU291
cmNlXFdURlx3dGZcd2luXFRocmVhZGluZ1dpbi5jcHAgQCAzOTBdDQowNCAwMDAwMDAxOGBmNjlm
ZjZhMCAwMDAwN2ZmZGA1Y2M4M2E3MCBXVEYhV1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9u
YWxseUltcGwodm9pZCAqIGFkZHJlc3MgPSAweDAwMDAwMWYwYDU3YzYyN2ZjLCBjbGFzcyBXVEY6
OlNjb3BlZExhbWJkYTxib29sIF9fY2RlY2wodm9pZCk+ICogdmFsaWRhdGlvbiA9IDxWYWx1ZSB1
bmF2YWlsYWJsZSBlcnJvcj4sIGNsYXNzIFdURjo6U2NvcGVkTGFtYmRhPHZvaWQgX19jZGVjbCh2
b2lkKT4gKiBiZWZvcmVTbGVlcCA9IDxWYWx1ZSB1bmF2YWlsYWJsZSBlcnJvcj4sIGNsYXNzIFdU
Rjo6VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlICogdGltZW91dCA9IDB4MDAwMDAwMThgZjY5ZmY4
MTgpKzB4ZWYgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXFBhcmtpbmdMb3QuY3Bw
IEAgNjAyXQ0KMDUgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV1RGIVdURjo6
UGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHkodm9pZCkrMHg2NiBbQzpcaG9tZVx3ZWJraXRc
Z2NcU291cmNlXFdURlx3dGZcUGFya2luZ0xvdC5oIEAgODJdDQowNiAoSW5saW5lIEZ1bmN0aW9u
KSAtLS0tLS0tLWAtLS0tLS0tLSBXVEYhV1RGOjpDb25kaXRpb246OndhaXRVbnRpbFVuY2hlY2tl
ZCh2b2lkKSsweDlmIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxDb25kaXRpb24u
aCBAIDE5Ml0NCjA3IDAwMDAwMDE4YGY2OWZmNzMwIDAwMDA3ZmZkYDVjYzgzMDE1IFdURiFXVEY6
OkNvbmRpdGlvbjo6d2FpdFVudGlsKGNsYXNzIFdURjo6TG9jayAqIGxvY2sgPSAweDAwMDAwMWYw
YDBiZDEwZDg0LCBjbGFzcyBXVEY6OlRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSAqIHRpbWVvdXQg
PSAweDAwMDAwMDE4YGY2OWZmODE4KSsweGIwIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RG
XHd0ZlxDb25kaXRpb24uaCBAIDc3XQ0KMDggKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0t
LS0tLS0gV1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0Rm9yKHZvaWQpKzB4M2IgW0M6XGhvbWVcd2Vi
a2l0XGdjXFNvdXJjZVxXVEZcd3RmXENvbmRpdGlvbi5oIEAgMTE2XQ0KMDkgMDAwMDAwMThgZjY5
ZmY3ZjAgMDAwMDdmZmRgNWNjYWYyMjEgV1RGIWBXVEY6OkF1dG9tYXRpY1RocmVhZDo6c3RhcnQn
OjpgMic6OjxsYW1iZGFfMT46Om9wZXJhdG9yKCkodm9pZCkrMHhlNSBbQzpcaG9tZVx3ZWJraXRc
Z2NcU291cmNlXFdURlx3dGZcQXV0b21hdGljVGhyZWFkLmNwcCBAIDIxN10NCjBhIChJbmxpbmUg
RnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkZ1bmN0aW9uPHZvaWQgX19jZGVj
bCh2b2lkKSsweDkgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXEZ1bmN0aW9uLmgg
QCA4Ml0NCjBiIDAwMDAwMDE4YGY2OWZmOGEwIDAwMDA3ZmZkYDVjZDAyZjY5IFdURiFXVEY6OlRo
cmVhZDo6ZW50cnlQb2ludChzdHJ1Y3QgV1RGOjpUaHJlYWQ6Ok5ld1RocmVhZENvbnRleHQgKiBu
ZXdUaHJlYWRDb250ZXh0ID0gMHgwMDAwMDFmMGA1N2Q5NGY0MCkrMHhjMSBbQzpcaG9tZVx3ZWJr
aXRcZ2NcU291cmNlXFdURlx3dGZcVGhyZWFkaW5nLmNwcCBAIDE5Ml0NCjBjIDAwMDAwMDE4YGY2
OWZmOGYwIDAwMDA3ZmZkYDVjZDE5NWM0IFdURiFXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQodm9p
ZCAqIGRhdGEgPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+KSsweDkgW0M6XGhvbWVcd2Via2l0
XGdjXFNvdXJjZVxXVEZcd3RmXHdpblxUaHJlYWRpbmdXaW4uY3BwIEAgMTUzXQ0KMGQgMDAwMDAw
MThgZjY5ZmY5MjAgMDAwMDdmZmRgODdmNjcwMzQgV1RGIXRocmVhZF9zdGFydDx1bnNpZ25lZCBp
bnQgKHZvaWQgKiBwYXJhbWV0ZXIgPSAweDAwMDAwMWYwYDU3ZGM1NDcwKSsweDUwIFttaW5rZXJu
ZWxcY3J0c1x1Y3J0XHNyY1xhcHBjcnRcc3RhcnR1cFx0aHJlYWQuY3BwIEAgOTddDQowZSAwMDAw
MDAxOGBmNjlmZjk1MCAwMDAwN2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFkSW5pdFRo
dW5rKzB4MTQNCjBmIDAwMDAwMDE4YGY2OWZmOTgwIDAwMDAwMDAwYDAwMDAwMDAwIG50ZGxsIVJ0
bFVzZXJUaHJlYWRTdGFydCsweDIxDQoNCiAgMzUgIElkOiAxN2RjLjRkYzQgU3VzcGVuZDogMSBU
ZWI6IDAwMDAwMDE4YGY0NjU1MDAwIFVuZnJvemVuDQogIyBDaGlsZC1TUCAgICAgICAgICBSZXRB
ZGRyICAgICAgICAgICBDYWxsIFNpdGUNCjAwIDAwMDAwMDE4YGY2YWZmYWU4IDAwMDA3ZmZkYDg5
NDU0MDIxIG50ZGxsIU50V2FpdEZvckFsZXJ0QnlUaHJlYWRJZCsweDE0DQowMSAwMDAwMDAxOGBm
NmFmZmFmMCAwMDAwN2ZmZGA4NmI3Y2U4OSBudGRsbCFSdGxTbGVlcENvbmRpdGlvblZhcmlhYmxl
U1JXKzB4MTMxDQowMiAwMDAwMDAxOGBmNmFmZmI3MCAwMDAwN2ZmZGA1Y2QwMmUyNyBLRVJORUxC
QVNFIVNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcrMHgyOQ0KMDMgMDAwMDAwMThgZjZhZmZiYjAg
MDAwMDdmZmRgNWNjYTlhZWYgV1RGIVdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoY2xh
c3MgV1RGOjpNdXRleCAqIG11dGV4ID0gMHgwMDAwMDFmMGA1N2IwMTViMCwgY2xhc3MgV1RGOjpX
YWxsVGltZSBhYnNvbHV0ZVRpbWUgPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+KSsweDc3IFtD
Olxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0Zlx3aW5cVGhyZWFkaW5nV2luLmNwcCBAIDM5
MF0NCjA0IDAwMDAwMDE4YGY2YWZmYzAwIDAwMDA3ZmZkYDVjYzgzYTcwIFdURiFXVEY6OlBhcmtp
bmdMb3Q6OnBhcmtDb25kaXRpb25hbGx5SW1wbCh2b2lkICogYWRkcmVzcyA9IDB4MDAwMDAxZjBg
NTdjNjMzOGMsIGNsYXNzIFdURjo6U2NvcGVkTGFtYmRhPGJvb2wgX19jZGVjbCh2b2lkKT4gKiB2
YWxpZGF0aW9uID0gPFZhbHVlIHVuYXZhaWxhYmxlIGVycm9yPiwgY2xhc3MgV1RGOjpTY29wZWRM
YW1iZGE8dm9pZCBfX2NkZWNsKHZvaWQpPiAqIGJlZm9yZVNsZWVwID0gPFZhbHVlIHVuYXZhaWxh
YmxlIGVycm9yPiwgY2xhc3MgV1RGOjpUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgKiB0aW1lb3V0
ID0gMHgwMDAwMDAxOGBmNmFmZmQ3OCkrMHhlZiBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdU
Rlx3dGZcUGFya2luZ0xvdC5jcHAgQCA2MDJdDQowNSAoSW5saW5lIEZ1bmN0aW9uKSAtLS0tLS0t
LWAtLS0tLS0tLSBXVEYhV1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseSh2b2lkKSsw
eDY2IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxQYXJraW5nTG90LmggQCA4Ml0N
CjA2IChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkNvbmRpdGlv
bjo6d2FpdFVudGlsVW5jaGVja2VkKHZvaWQpKzB4OWYgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJj
ZVxXVEZcd3RmXENvbmRpdGlvbi5oIEAgMTkyXQ0KMDcgMDAwMDAwMThgZjZhZmZjOTAgMDAwMDdm
ZmRgNWNjODMwMTUgV1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0VW50aWwoY2xhc3MgV1RGOjpMb2Nr
ICogbG9jayA9IDB4MDAwMDAxZjBgMGJkMTBkODQsIGNsYXNzIFdURjo6VGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlICogdGltZW91dCA9IDB4MDAwMDAwMThgZjZhZmZkNzgpKzB4YjAgW0M6XGhvbWVc
d2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXENvbmRpdGlvbi5oIEAgNzddDQowOCAoSW5saW5lIEZ1
bmN0aW9uKSAtLS0tLS0tLWAtLS0tLS0tLSBXVEYhV1RGOjpDb25kaXRpb246OndhaXRGb3Iodm9p
ZCkrMHgzYiBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9uLmggQCAx
MTZdDQowOSAwMDAwMDAxOGBmNmFmZmQ1MCAwMDAwN2ZmZGA1Y2NhZjIyMSBXVEYhYFdURjo6QXV0
b21hdGljVGhyZWFkOjpzdGFydCc6OmAyJzo6PGxhbWJkYV8xPjo6b3BlcmF0b3IoKSh2b2lkKSsw
eGU1IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxBdXRvbWF0aWNUaHJlYWQuY3Bw
IEAgMjE3XQ0KMGEgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV1RGIVdURjo6
RnVuY3Rpb248dm9pZCBfX2NkZWNsKHZvaWQpKzB4OSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNl
XFdURlx3dGZcRnVuY3Rpb24uaCBAIDgyXQ0KMGIgMDAwMDAwMThgZjZhZmZlMDAgMDAwMDdmZmRg
NWNkMDJmNjkgV1RGIVdURjo6VGhyZWFkOjplbnRyeVBvaW50KHN0cnVjdCBXVEY6OlRocmVhZDo6
TmV3VGhyZWFkQ29udGV4dCAqIG5ld1RocmVhZENvbnRleHQgPSAweDAwMDAwMWYwYDU3ZDk0ZjQw
KSsweGMxIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxUaHJlYWRpbmcuY3BwIEAg
MTkyXQ0KMGMgMDAwMDAwMThgZjZhZmZlNTAgMDAwMDdmZmRgNWNkMTk1YzQgV1RGIVdURjo6d3Rm
VGhyZWFkRW50cnlQb2ludCh2b2lkICogZGF0YSA9IDxWYWx1ZSB1bmF2YWlsYWJsZSBlcnJvcj4p
KzB4OSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcd2luXFRocmVhZGluZ1dpbi5j
cHAgQCAxNTNdDQowZCAwMDAwMDAxOGBmNmFmZmU4MCAwMDAwN2ZmZGA4N2Y2NzAzNCBXVEYhdGhy
ZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAodm9pZCAqIHBhcmFtZXRlciA9IDB4MDAwMDAxZjBgNTdk
YzRlNzApKzB4NTAgW21pbmtlcm5lbFxjcnRzXHVjcnRcc3JjXGFwcGNydFxzdGFydHVwXHRocmVh
ZC5jcHAgQCA5N10NCjBlIDAwMDAwMDE4YGY2YWZmZWIwIDAwMDA3ZmZkYDg5NDQyNjUxIEtFUk5F
TDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMGYgMDAwMDAwMThgZjZhZmZlZTAgMDAwMDAw
MDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAzNiAgSWQ6IDE3
ZGMuNWRiNCBTdXNwZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2NTcwMDAgVW5mcm96ZW4NCiAjIENo
aWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAwMThg
ZjZiZmZhMjggMDAwMDdmZmRgODk0NTQwMjEgbnRkbGwhTnRXYWl0Rm9yQWxlcnRCeVRocmVhZElk
KzB4MTQNCjAxIDAwMDAwMDE4YGY2YmZmYTMwIDAwMDA3ZmZkYDg2YjdjZTg5IG50ZGxsIVJ0bFNs
ZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcrMHgxMzENCjAyIDAwMDAwMDE4YGY2YmZmYWIwIDAwMDA3
ZmZkYDVjZDAyZTI3IEtFUk5FTEJBU0UhU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDI5DQow
MyAwMDAwMDAxOGBmNmJmZmFmMCAwMDAwN2ZmZGA1Y2NhOWFlZiBXVEYhV1RGOjpUaHJlYWRDb25k
aXRpb246OnRpbWVkV2FpdChjbGFzcyBXVEY6Ok11dGV4ICogbXV0ZXggPSAweDAwMDAwMWYwYDU3
YmVhZjMwLCBjbGFzcyBXVEY6OldhbGxUaW1lIGFic29sdXRlVGltZSA9IDxWYWx1ZSB1bmF2YWls
YWJsZSBlcnJvcj4pKzB4NzcgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXHdpblxU
aHJlYWRpbmdXaW4uY3BwIEAgMzkwXQ0KMDQgMDAwMDAwMThgZjZiZmZiNDAgMDAwMDdmZmRgNWNj
ODNhNzAgV1RGIVdURjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHlJbXBsKHZvaWQgKiBh
ZGRyZXNzID0gMHgwMDAwMDFmMGA1N2M2MmYyYywgY2xhc3MgV1RGOjpTY29wZWRMYW1iZGE8Ym9v
bCBfX2NkZWNsKHZvaWQpPiAqIHZhbGlkYXRpb24gPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+
LCBjbGFzcyBXVEY6OlNjb3BlZExhbWJkYTx2b2lkIF9fY2RlY2wodm9pZCk+ICogYmVmb3JlU2xl
ZXAgPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+LCBjbGFzcyBXVEY6OlRpbWVXaXRoRHluYW1p
Y0Nsb2NrVHlwZSAqIHRpbWVvdXQgPSAweDAwMDAwMDE4YGY2YmZmY2I4KSsweGVmIFtDOlxob21l
XHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxQYXJraW5nTG90LmNwcCBAIDYwMl0NCjA1IChJbmxp
bmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OlBhcmtpbmdMb3Q6OnBhcmtD
b25kaXRpb25hbGx5KHZvaWQpKzB4NjYgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3Rm
XFBhcmtpbmdMb3QuaCBAIDgyXQ0KMDYgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0t
LS0gV1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0VW50aWxVbmNoZWNrZWQodm9pZCkrMHg5ZiBbQzpc
aG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9uLmggQCAxOTJdDQowNyAwMDAw
MDAxOGBmNmJmZmJkMCAwMDAwN2ZmZGA1Y2M4MzAxNSBXVEYhV1RGOjpDb25kaXRpb246OndhaXRV
bnRpbChjbGFzcyBXVEY6OkxvY2sgKiBsb2NrID0gMHgwMDAwMDFmMGAwYmQxMGQ4NCwgY2xhc3Mg
V1RGOjpUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgKiB0aW1lb3V0ID0gMHgwMDAwMDAxOGBmNmJm
ZmNiOCkrMHhiMCBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9uLmgg
QCA3N10NCjA4IChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkNv
bmRpdGlvbjo6d2FpdEZvcih2b2lkKSsweDNiIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RG
XHd0ZlxDb25kaXRpb24uaCBAIDExNl0NCjA5IDAwMDAwMDE4YGY2YmZmYzkwIDAwMDA3ZmZkYDVj
Y2FmMjIxIFdURiFgV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0Jzo6YDInOjo8bGFtYmRhXzE+
OjpvcGVyYXRvcigpKHZvaWQpKzB4ZTUgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3Rm
XEF1dG9tYXRpY1RocmVhZC5jcHAgQCAyMTddDQowYSAoSW5saW5lIEZ1bmN0aW9uKSAtLS0tLS0t
LWAtLS0tLS0tLSBXVEYhV1RGOjpGdW5jdGlvbjx2b2lkIF9fY2RlY2wodm9pZCkrMHg5IFtDOlxo
b21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxGdW5jdGlvbi5oIEAgODJdDQowYiAwMDAwMDAx
OGBmNmJmZmQ0MCAwMDAwN2ZmZGA1Y2QwMmY2OSBXVEYhV1RGOjpUaHJlYWQ6OmVudHJ5UG9pbnQo
c3RydWN0IFdURjo6VGhyZWFkOjpOZXdUaHJlYWRDb250ZXh0ICogbmV3VGhyZWFkQ29udGV4dCA9
IDB4MDAwMDAxZjBgNTdkOTRmNDApKzB4YzEgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZc
d3RmXFRocmVhZGluZy5jcHAgQCAxOTJdDQowYyAwMDAwMDAxOGBmNmJmZmQ5MCAwMDAwN2ZmZGA1
Y2QxOTVjNCBXVEYhV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQgKiBkYXRhID0gPFZhbHVl
IHVuYXZhaWxhYmxlIGVycm9yPikrMHg5IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0
Zlx3aW5cVGhyZWFkaW5nV2luLmNwcCBAIDE1M10NCjBkIDAwMDAwMDE4YGY2YmZmZGMwIDAwMDA3
ZmZkYDg3ZjY3MDM0IFdURiF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50ICh2b2lkICogcGFyYW1l
dGVyID0gMHgwMDAwMDFmMGA1N2RjNTE0MCkrMHg1MCBbbWlua2VybmVsXGNydHNcdWNydFxzcmNc
YXBwY3J0XHN0YXJ0dXBcdGhyZWFkLmNwcCBAIDk3XQ0KMGUgMDAwMDAwMThgZjZiZmZkZjAgMDAw
MDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowZiAwMDAw
MDAxOGBmNmJmZmUyMCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3RhcnQr
MHgyMQ0KDQogIDM3ICBJZDogMTdkYy4yMDhjIFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBmNDY1
OTAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAgQ2Fs
bCBTaXRlDQowMCAwMDAwMDAxOGBmNmNmZjgyOCAwMDAwN2ZmZGA4OTQ1NDAyMSBudGRsbCFOdFdh
aXRGb3JBbGVydEJ5VGhyZWFkSWQrMHgxNA0KMDEgMDAwMDAwMThgZjZjZmY4MzAgMDAwMDdmZmRg
ODZiN2NlODkgbnRkbGwhUnRsU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDEzMQ0KMDIgMDAw
MDAwMThgZjZjZmY4YjAgMDAwMDdmZmRgNWNkMDJlMjcgS0VSTkVMQkFTRSFTbGVlcENvbmRpdGlv
blZhcmlhYmxlU1JXKzB4MjkNCjAzIDAwMDAwMDE4YGY2Y2ZmOGYwIDAwMDA3ZmZkYDVjY2E5YWVm
IFdURiFXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KGNsYXNzIFdURjo6TXV0ZXggKiBt
dXRleCA9IDB4MDAwMDAxZjBgNTI1YmNiYjAsIGNsYXNzIFdURjo6V2FsbFRpbWUgYWJzb2x1dGVU
aW1lID0gPFZhbHVlIHVuYXZhaWxhYmxlIGVycm9yPikrMHg3NyBbQzpcaG9tZVx3ZWJraXRcZ2Nc
U291cmNlXFdURlx3dGZcd2luXFRocmVhZGluZ1dpbi5jcHAgQCAzOTBdDQowNCAwMDAwMDAxOGBm
NmNmZjk0MCAwMDAwN2ZmZGA1Y2M4M2E3MCBXVEYhV1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0
aW9uYWxseUltcGwodm9pZCAqIGFkZHJlc3MgPSAweDAwMDAwMWYwYDU3YzYyYzVjLCBjbGFzcyBX
VEY6OlNjb3BlZExhbWJkYTxib29sIF9fY2RlY2wodm9pZCk+ICogdmFsaWRhdGlvbiA9IDxWYWx1
ZSB1bmF2YWlsYWJsZSBlcnJvcj4sIGNsYXNzIFdURjo6U2NvcGVkTGFtYmRhPHZvaWQgX19jZGVj
bCh2b2lkKT4gKiBiZWZvcmVTbGVlcCA9IDxWYWx1ZSB1bmF2YWlsYWJsZSBlcnJvcj4sIGNsYXNz
IFdURjo6VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlICogdGltZW91dCA9IDB4MDAwMDAwMThgZjZj
ZmZhYjgpKzB4ZWYgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXFBhcmtpbmdMb3Qu
Y3BwIEAgNjAyXQ0KMDUgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV1RGIVdU
Rjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHkodm9pZCkrMHg2NiBbQzpcaG9tZVx3ZWJr
aXRcZ2NcU291cmNlXFdURlx3dGZcUGFya2luZ0xvdC5oIEAgODJdDQowNiAoSW5saW5lIEZ1bmN0
aW9uKSAtLS0tLS0tLWAtLS0tLS0tLSBXVEYhV1RGOjpDb25kaXRpb246OndhaXRVbnRpbFVuY2hl
Y2tlZCh2b2lkKSsweDlmIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxDb25kaXRp
b24uaCBAIDE5Ml0NCjA3IDAwMDAwMDE4YGY2Y2ZmOWQwIDAwMDA3ZmZkYDVjYzgzMDE1IFdURiFX
VEY6OkNvbmRpdGlvbjo6d2FpdFVudGlsKGNsYXNzIFdURjo6TG9jayAqIGxvY2sgPSAweDAwMDAw
MWYwYDBiZDEwZDg0LCBjbGFzcyBXVEY6OlRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSAqIHRpbWVv
dXQgPSAweDAwMDAwMDE4YGY2Y2ZmYWI4KSsweGIwIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2Vc
V1RGXHd0ZlxDb25kaXRpb24uaCBAIDc3XQ0KMDggKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1g
LS0tLS0tLS0gV1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0Rm9yKHZvaWQpKzB4M2IgW0M6XGhvbWVc
d2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXENvbmRpdGlvbi5oIEAgMTE2XQ0KMDkgMDAwMDAwMThg
ZjZjZmZhOTAgMDAwMDdmZmRgNWNjYWYyMjEgV1RGIWBXVEY6OkF1dG9tYXRpY1RocmVhZDo6c3Rh
cnQnOjpgMic6OjxsYW1iZGFfMT46Om9wZXJhdG9yKCkodm9pZCkrMHhlNSBbQzpcaG9tZVx3ZWJr
aXRcZ2NcU291cmNlXFdURlx3dGZcQXV0b21hdGljVGhyZWFkLmNwcCBAIDIxN10NCjBhIChJbmxp
bmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkZ1bmN0aW9uPHZvaWQgX19j
ZGVjbCh2b2lkKSsweDkgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXEZ1bmN0aW9u
LmggQCA4Ml0NCjBiIDAwMDAwMDE4YGY2Y2ZmYjQwIDAwMDA3ZmZkYDVjZDAyZjY5IFdURiFXVEY6
OlRocmVhZDo6ZW50cnlQb2ludChzdHJ1Y3QgV1RGOjpUaHJlYWQ6Ok5ld1RocmVhZENvbnRleHQg
KiBuZXdUaHJlYWRDb250ZXh0ID0gMHgwMDAwMDFmMGA1N2Q5NGY0MCkrMHhjMSBbQzpcaG9tZVx3
ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcVGhyZWFkaW5nLmNwcCBAIDE5Ml0NCjBjIDAwMDAwMDE4
YGY2Y2ZmYjkwIDAwMDA3ZmZkYDVjZDE5NWM0IFdURiFXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQo
dm9pZCAqIGRhdGEgPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+KSsweDkgW0M6XGhvbWVcd2Vi
a2l0XGdjXFNvdXJjZVxXVEZcd3RmXHdpblxUaHJlYWRpbmdXaW4uY3BwIEAgMTUzXQ0KMGQgMDAw
MDAwMThgZjZjZmZiYzAgMDAwMDdmZmRgODdmNjcwMzQgV1RGIXRocmVhZF9zdGFydDx1bnNpZ25l
ZCBpbnQgKHZvaWQgKiBwYXJhbWV0ZXIgPSAweDAwMDAwMWYwYDU3ZGM0ZjkwKSsweDUwIFttaW5r
ZXJuZWxcY3J0c1x1Y3J0XHNyY1xhcHBjcnRcc3RhcnR1cFx0aHJlYWQuY3BwIEAgOTddDQowZSAw
MDAwMDAxOGBmNmNmZmJmMCAwMDAwN2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFkSW5p
dFRodW5rKzB4MTQNCjBmIDAwMDAwMDE4YGY2Y2ZmYzIwIDAwMDAwMDAwYDAwMDAwMDAwIG50ZGxs
IVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxDQoNCiAgMzggIElkOiAxN2RjLjVlZTggU3VzcGVuZDog
MSBUZWI6IDAwMDAwMDE4YGY0NjViMDAwIFVuZnJvemVuDQogIyBDaGlsZC1TUCAgICAgICAgICBS
ZXRBZGRyICAgICAgICAgICBDYWxsIFNpdGUNCjAwIDAwMDAwMDE4YGY2ZGZmMzc4IDAwMDA3ZmZk
YDg5NDU0MDIxIG50ZGxsIU50V2FpdEZvckFsZXJ0QnlUaHJlYWRJZCsweDE0DQowMSAwMDAwMDAx
OGBmNmRmZjM4MCAwMDAwN2ZmZGA4NmI3Y2U4OSBudGRsbCFSdGxTbGVlcENvbmRpdGlvblZhcmlh
YmxlU1JXKzB4MTMxDQowMiAwMDAwMDAxOGBmNmRmZjQwMCAwMDAwN2ZmZGA1Y2QwMmUyNyBLRVJO
RUxCQVNFIVNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcrMHgyOQ0KMDMgMDAwMDAwMThgZjZkZmY0
NDAgMDAwMDdmZmRgNWNjYTlhZWYgV1RGIVdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQo
Y2xhc3MgV1RGOjpNdXRleCAqIG11dGV4ID0gMHgwMDAwMDFmMGA0ZjcwYzU3MCwgY2xhc3MgV1RG
OjpXYWxsVGltZSBhYnNvbHV0ZVRpbWUgPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+KSsweDc3
IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0Zlx3aW5cVGhyZWFkaW5nV2luLmNwcCBA
IDM5MF0NCjA0IDAwMDAwMDE4YGY2ZGZmNDkwIDAwMDA3ZmZkYDVjYzgzYTcwIFdURiFXVEY6OlBh
cmtpbmdMb3Q6OnBhcmtDb25kaXRpb25hbGx5SW1wbCh2b2lkICogYWRkcmVzcyA9IDB4MDAwMDAx
ZjBgNTdjNjM0MmMsIGNsYXNzIFdURjo6U2NvcGVkTGFtYmRhPGJvb2wgX19jZGVjbCh2b2lkKT4g
KiB2YWxpZGF0aW9uID0gPFZhbHVlIHVuYXZhaWxhYmxlIGVycm9yPiwgY2xhc3MgV1RGOjpTY29w
ZWRMYW1iZGE8dm9pZCBfX2NkZWNsKHZvaWQpPiAqIGJlZm9yZVNsZWVwID0gPFZhbHVlIHVuYXZh
aWxhYmxlIGVycm9yPiwgY2xhc3MgV1RGOjpUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgKiB0aW1l
b3V0ID0gMHgwMDAwMDAxOGBmNmRmZjYwOCkrMHhlZiBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNl
XFdURlx3dGZcUGFya2luZ0xvdC5jcHAgQCA2MDJdDQowNSAoSW5saW5lIEZ1bmN0aW9uKSAtLS0t
LS0tLWAtLS0tLS0tLSBXVEYhV1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseSh2b2lk
KSsweDY2IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxQYXJraW5nTG90LmggQCA4
Ml0NCjA2IChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkNvbmRp
dGlvbjo6d2FpdFVudGlsVW5jaGVja2VkKHZvaWQpKzB4OWYgW0M6XGhvbWVcd2Via2l0XGdjXFNv
dXJjZVxXVEZcd3RmXENvbmRpdGlvbi5oIEAgMTkyXQ0KMDcgMDAwMDAwMThgZjZkZmY1MjAgMDAw
MDdmZmRgNWNjODMwMTUgV1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0VW50aWwoY2xhc3MgV1RGOjpM
b2NrICogbG9jayA9IDB4MDAwMDAxZjBgMGJkMTBkODQsIGNsYXNzIFdURjo6VGltZVdpdGhEeW5h
bWljQ2xvY2tUeXBlICogdGltZW91dCA9IDB4MDAwMDAwMThgZjZkZmY2MDgpKzB4YjAgW0M6XGhv
bWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXENvbmRpdGlvbi5oIEAgNzddDQowOCAoSW5saW5l
IEZ1bmN0aW9uKSAtLS0tLS0tLWAtLS0tLS0tLSBXVEYhV1RGOjpDb25kaXRpb246OndhaXRGb3Io
dm9pZCkrMHgzYiBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9uLmgg
QCAxMTZdDQowOSAwMDAwMDAxOGBmNmRmZjVlMCAwMDAwN2ZmZGA1Y2NhZjIyMSBXVEYhYFdURjo6
QXV0b21hdGljVGhyZWFkOjpzdGFydCc6OmAyJzo6PGxhbWJkYV8xPjo6b3BlcmF0b3IoKSh2b2lk
KSsweGU1IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxBdXRvbWF0aWNUaHJlYWQu
Y3BwIEAgMjE3XQ0KMGEgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV1RGIVdU
Rjo6RnVuY3Rpb248dm9pZCBfX2NkZWNsKHZvaWQpKzB4OSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291
cmNlXFdURlx3dGZcRnVuY3Rpb24uaCBAIDgyXQ0KMGIgMDAwMDAwMThgZjZkZmY2OTAgMDAwMDdm
ZmRgNWNkMDJmNjkgV1RGIVdURjo6VGhyZWFkOjplbnRyeVBvaW50KHN0cnVjdCBXVEY6OlRocmVh
ZDo6TmV3VGhyZWFkQ29udGV4dCAqIG5ld1RocmVhZENvbnRleHQgPSAweDAwMDAwMWYwYDU3ZDk0
ZjQwKSsweGMxIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxUaHJlYWRpbmcuY3Bw
IEAgMTkyXQ0KMGMgMDAwMDAwMThgZjZkZmY2ZTAgMDAwMDdmZmRgNWNkMTk1YzQgV1RGIVdURjo6
d3RmVGhyZWFkRW50cnlQb2ludCh2b2lkICogZGF0YSA9IDxWYWx1ZSB1bmF2YWlsYWJsZSBlcnJv
cj4pKzB4OSBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcd2luXFRocmVhZGluZ1dp
bi5jcHAgQCAxNTNdDQowZCAwMDAwMDAxOGBmNmRmZjcxMCAwMDAwN2ZmZGA4N2Y2NzAzNCBXVEYh
dGhyZWFkX3N0YXJ0PHVuc2lnbmVkIGludCAodm9pZCAqIHBhcmFtZXRlciA9IDB4MDAwMDAxZjBg
NTdkYzU3MTApKzB4NTAgW21pbmtlcm5lbFxjcnRzXHVjcnRcc3JjXGFwcGNydFxzdGFydHVwXHRo
cmVhZC5jcHAgQCA5N10NCjBlIDAwMDAwMDE4YGY2ZGZmNzQwIDAwMDA3ZmZkYDg5NDQyNjUxIEtF
Uk5FTDMyIUJhc2VUaHJlYWRJbml0VGh1bmsrMHgxNA0KMGYgMDAwMDAwMThgZjZkZmY3NzAgMDAw
MDAwMDBgMDAwMDAwMDAgbnRkbGwhUnRsVXNlclRocmVhZFN0YXJ0KzB4MjENCg0KICAzOSAgSWQ6
IDE3ZGMuNWQ3MCBTdXNwZW5kOiAxIFRlYjogMDAwMDAwMThgZjQ2NWQwMDAgVW5mcm96ZW4NCiAj
IENoaWxkLVNQICAgICAgICAgIFJldEFkZHIgICAgICAgICAgIENhbGwgU2l0ZQ0KMDAgMDAwMDAw
MThgZjZlZmY1ODggMDAwMDdmZmRgODk0NTQwMjEgbnRkbGwhTnRXYWl0Rm9yQWxlcnRCeVRocmVh
ZElkKzB4MTQNCjAxIDAwMDAwMDE4YGY2ZWZmNTkwIDAwMDA3ZmZkYDg2YjdjZTg5IG50ZGxsIVJ0
bFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcrMHgxMzENCjAyIDAwMDAwMDE4YGY2ZWZmNjEwIDAw
MDA3ZmZkYDVjZDAyZTI3IEtFUk5FTEJBU0UhU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDI5
DQowMyAwMDAwMDAxOGBmNmVmZjY1MCAwMDAwN2ZmZGA1Y2NhOWFlZiBXVEYhV1RGOjpUaHJlYWRD
b25kaXRpb246OnRpbWVkV2FpdChjbGFzcyBXVEY6Ok11dGV4ICogbXV0ZXggPSAweDAwMDAwMWYw
YDUyM2Y1MTYwLCBjbGFzcyBXVEY6OldhbGxUaW1lIGFic29sdXRlVGltZSA9IDxWYWx1ZSB1bmF2
YWlsYWJsZSBlcnJvcj4pKzB4NzcgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXHdp
blxUaHJlYWRpbmdXaW4uY3BwIEAgMzkwXQ0KMDQgMDAwMDAwMThgZjZlZmY2YTAgMDAwMDdmZmRg
NWNjODNhNzAgV1RGIVdURjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHlJbXBsKHZvaWQg
KiBhZGRyZXNzID0gMHgwMDAwMDFmMGA1N2M2NDk2YywgY2xhc3MgV1RGOjpTY29wZWRMYW1iZGE8
Ym9vbCBfX2NkZWNsKHZvaWQpPiAqIHZhbGlkYXRpb24gPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJy
b3I+LCBjbGFzcyBXVEY6OlNjb3BlZExhbWJkYTx2b2lkIF9fY2RlY2wodm9pZCk+ICogYmVmb3Jl
U2xlZXAgPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+LCBjbGFzcyBXVEY6OlRpbWVXaXRoRHlu
YW1pY0Nsb2NrVHlwZSAqIHRpbWVvdXQgPSAweDAwMDAwMDE4YGY2ZWZmODE4KSsweGVmIFtDOlxo
b21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxQYXJraW5nTG90LmNwcCBAIDYwMl0NCjA1IChJ
bmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OlBhcmtpbmdMb3Q6OnBh
cmtDb25kaXRpb25hbGx5KHZvaWQpKzB4NjYgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZc
d3RmXFBhcmtpbmdMb3QuaCBAIDgyXQ0KMDYgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0t
LS0tLS0gV1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0VW50aWxVbmNoZWNrZWQodm9pZCkrMHg5ZiBb
QzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9uLmggQCAxOTJdDQowNyAw
MDAwMDAxOGBmNmVmZjczMCAwMDAwN2ZmZGA1Y2M4MzAxNSBXVEYhV1RGOjpDb25kaXRpb246Ondh
aXRVbnRpbChjbGFzcyBXVEY6OkxvY2sgKiBsb2NrID0gMHgwMDAwMDFmMGAwYmQxMGQ4NCwgY2xh
c3MgV1RGOjpUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgKiB0aW1lb3V0ID0gMHgwMDAwMDAxOGBm
NmVmZjgxOCkrMHhiMCBbQzpcaG9tZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQ29uZGl0aW9u
LmggQCA3N10NCjA4IChJbmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6
OkNvbmRpdGlvbjo6d2FpdEZvcih2b2lkKSsweDNiIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2Vc
V1RGXHd0ZlxDb25kaXRpb24uaCBAIDExNl0NCjA5IDAwMDAwMDE4YGY2ZWZmN2YwIDAwMDA3ZmZk
YDVjY2FmMjIxIFdURiFgV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0Jzo6YDInOjo8bGFtYmRh
XzE+OjpvcGVyYXRvcigpKHZvaWQpKzB4ZTUgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZc
d3RmXEF1dG9tYXRpY1RocmVhZC5jcHAgQCAyMTddDQowYSAoSW5saW5lIEZ1bmN0aW9uKSAtLS0t
LS0tLWAtLS0tLS0tLSBXVEYhV1RGOjpGdW5jdGlvbjx2b2lkIF9fY2RlY2wodm9pZCkrMHg5IFtD
Olxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxGdW5jdGlvbi5oIEAgODJdDQowYiAwMDAw
MDAxOGBmNmVmZjhhMCAwMDAwN2ZmZGA1Y2QwMmY2OSBXVEYhV1RGOjpUaHJlYWQ6OmVudHJ5UG9p
bnQoc3RydWN0IFdURjo6VGhyZWFkOjpOZXdUaHJlYWRDb250ZXh0ICogbmV3VGhyZWFkQ29udGV4
dCA9IDB4MDAwMDAxZjBgNTdkOTRmNDApKzB4YzEgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxX
VEZcd3RmXFRocmVhZGluZy5jcHAgQCAxOTJdDQowYyAwMDAwMDAxOGBmNmVmZjhmMCAwMDAwN2Zm
ZGA1Y2QxOTVjNCBXVEYhV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQgKiBkYXRhID0gPFZh
bHVlIHVuYXZhaWxhYmxlIGVycm9yPikrMHg5IFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RG
XHd0Zlx3aW5cVGhyZWFkaW5nV2luLmNwcCBAIDE1M10NCjBkIDAwMDAwMDE4YGY2ZWZmOTIwIDAw
MDA3ZmZkYDg3ZjY3MDM0IFdURiF0aHJlYWRfc3RhcnQ8dW5zaWduZWQgaW50ICh2b2lkICogcGFy
YW1ldGVyID0gMHgwMDAwMDFmMGA1N2RjNGQ4MCkrMHg1MCBbbWlua2VybmVsXGNydHNcdWNydFxz
cmNcYXBwY3J0XHN0YXJ0dXBcdGhyZWFkLmNwcCBAIDk3XQ0KMGUgMDAwMDAwMThgZjZlZmY5NTAg
MDAwMDdmZmRgODk0NDI2NTEgS0VSTkVMMzIhQmFzZVRocmVhZEluaXRUaHVuaysweDE0DQowZiAw
MDAwMDAxOGBmNmVmZjk4MCAwMDAwMDAwMGAwMDAwMDAwMCBudGRsbCFSdGxVc2VyVGhyZWFkU3Rh
cnQrMHgyMQ0KDQogIDQwICBJZDogMTdkYy4yYzE4IFN1c3BlbmQ6IDEgVGViOiAwMDAwMDAxOGBm
NDY1ZjAwMCBVbmZyb3plbg0KICMgQ2hpbGQtU1AgICAgICAgICAgUmV0QWRkciAgICAgICAgICAg
Q2FsbCBTaXRlDQowMCAwMDAwMDAxOGBmNmZmZjc3OCAwMDAwN2ZmZGA4OTQ1NDAyMSBudGRsbCFO
dFdhaXRGb3JBbGVydEJ5VGhyZWFkSWQrMHgxNA0KMDEgMDAwMDAwMThgZjZmZmY3ODAgMDAwMDdm
ZmRgODZiN2NlODkgbnRkbGwhUnRsU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVysweDEzMQ0KMDIg
MDAwMDAwMThgZjZmZmY4MDAgMDAwMDdmZmRgNWNkMDJlMjcgS0VSTkVMQkFTRSFTbGVlcENvbmRp
dGlvblZhcmlhYmxlU1JXKzB4MjkNCjAzIDAwMDAwMDE4YGY2ZmZmODQwIDAwMDA3ZmZkYDVjY2E5
YWVmIFdURiFXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KGNsYXNzIFdURjo6TXV0ZXgg
KiBtdXRleCA9IDB4MDAwMDAxZjBgNTIzZjU0MjAsIGNsYXNzIFdURjo6V2FsbFRpbWUgYWJzb2x1
dGVUaW1lID0gPFZhbHVlIHVuYXZhaWxhYmxlIGVycm9yPikrMHg3NyBbQzpcaG9tZVx3ZWJraXRc
Z2NcU291cmNlXFdURlx3dGZcd2luXFRocmVhZGluZ1dpbi5jcHAgQCAzOTBdDQowNCAwMDAwMDAx
OGBmNmZmZjg5MCAwMDAwN2ZmZGA1Y2M4M2E3MCBXVEYhV1RGOjpQYXJraW5nTG90OjpwYXJrQ29u
ZGl0aW9uYWxseUltcGwodm9pZCAqIGFkZHJlc3MgPSAweDAwMDAwMWYwYDU3YzYzZTJjLCBjbGFz
cyBXVEY6OlNjb3BlZExhbWJkYTxib29sIF9fY2RlY2wodm9pZCk+ICogdmFsaWRhdGlvbiA9IDxW
YWx1ZSB1bmF2YWlsYWJsZSBlcnJvcj4sIGNsYXNzIFdURjo6U2NvcGVkTGFtYmRhPHZvaWQgX19j
ZGVjbCh2b2lkKT4gKiBiZWZvcmVTbGVlcCA9IDxWYWx1ZSB1bmF2YWlsYWJsZSBlcnJvcj4sIGNs
YXNzIFdURjo6VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlICogdGltZW91dCA9IDB4MDAwMDAwMThg
ZjZmZmZhMDgpKzB4ZWYgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXFBhcmtpbmdM
b3QuY3BwIEAgNjAyXQ0KMDUgKElubGluZSBGdW5jdGlvbikgLS0tLS0tLS1gLS0tLS0tLS0gV1RG
IVdURjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHkodm9pZCkrMHg2NiBbQzpcaG9tZVx3
ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcUGFya2luZ0xvdC5oIEAgODJdDQowNiAoSW5saW5lIEZ1
bmN0aW9uKSAtLS0tLS0tLWAtLS0tLS0tLSBXVEYhV1RGOjpDb25kaXRpb246OndhaXRVbnRpbFVu
Y2hlY2tlZCh2b2lkKSsweDlmIFtDOlxob21lXHdlYmtpdFxnY1xTb3VyY2VcV1RGXHd0ZlxDb25k
aXRpb24uaCBAIDE5Ml0NCjA3IDAwMDAwMDE4YGY2ZmZmOTIwIDAwMDA3ZmZkYDVjYzgzMDE1IFdU
RiFXVEY6OkNvbmRpdGlvbjo6d2FpdFVudGlsKGNsYXNzIFdURjo6TG9jayAqIGxvY2sgPSAweDAw
MDAwMWYwYDBiZDEwZDg0LCBjbGFzcyBXVEY6OlRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSAqIHRp
bWVvdXQgPSAweDAwMDAwMDE4YGY2ZmZmYTA4KSsweGIwIFtDOlxob21lXHdlYmtpdFxnY1xTb3Vy
Y2VcV1RGXHd0ZlxDb25kaXRpb24uaCBAIDc3XQ0KMDggKElubGluZSBGdW5jdGlvbikgLS0tLS0t
LS1gLS0tLS0tLS0gV1RGIVdURjo6Q29uZGl0aW9uOjp3YWl0Rm9yKHZvaWQpKzB4M2IgW0M6XGhv
bWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXENvbmRpdGlvbi5oIEAgMTE2XQ0KMDkgMDAwMDAw
MThgZjZmZmY5ZTAgMDAwMDdmZmRgNWNjYWYyMjEgV1RGIWBXVEY6OkF1dG9tYXRpY1RocmVhZDo6
c3RhcnQnOjpgMic6OjxsYW1iZGFfMT46Om9wZXJhdG9yKCkodm9pZCkrMHhlNSBbQzpcaG9tZVx3
ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcQXV0b21hdGljVGhyZWFkLmNwcCBAIDIxN10NCjBhIChJ
bmxpbmUgRnVuY3Rpb24pIC0tLS0tLS0tYC0tLS0tLS0tIFdURiFXVEY6OkZ1bmN0aW9uPHZvaWQg
X19jZGVjbCh2b2lkKSsweDkgW0M6XGhvbWVcd2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXEZ1bmN0
aW9uLmggQCA4Ml0NCjBiIDAwMDAwMDE4YGY2ZmZmYTkwIDAwMDA3ZmZkYDVjZDAyZjY5IFdURiFX
VEY6OlRocmVhZDo6ZW50cnlQb2ludChzdHJ1Y3QgV1RGOjpUaHJlYWQ6Ok5ld1RocmVhZENvbnRl
eHQgKiBuZXdUaHJlYWRDb250ZXh0ID0gMHgwMDAwMDFmMGA1N2Q5NGY0MCkrMHhjMSBbQzpcaG9t
ZVx3ZWJraXRcZ2NcU291cmNlXFdURlx3dGZcVGhyZWFkaW5nLmNwcCBAIDE5Ml0NCjBjIDAwMDAw
MDE4YGY2ZmZmYWUwIDAwMDA3ZmZkYDVjZDE5NWM0IFdURiFXVEY6Ond0ZlRocmVhZEVudHJ5UG9p
bnQodm9pZCAqIGRhdGEgPSA8VmFsdWUgdW5hdmFpbGFibGUgZXJyb3I+KSsweDkgW0M6XGhvbWVc
d2Via2l0XGdjXFNvdXJjZVxXVEZcd3RmXHdpblxUaHJlYWRpbmdXaW4uY3BwIEAgMTUzXQ0KMGQg
MDAwMDAwMThgZjZmZmZiMTAgMDAwMDdmZmRgODdmNjcwMzQgV1RGIXRocmVhZF9zdGFydDx1bnNp
Z25lZCBpbnQgKHZvaWQgKiBwYXJhbWV0ZXIgPSAweDAwMDAwMWYwYDU3ZGM1MjkwKSsweDUwIFtt
aW5rZXJuZWxcY3J0c1x1Y3J0XHNyY1xhcHBjcnRcc3RhcnR1cFx0aHJlYWQuY3BwIEAgOTddDQow
ZSAwMDAwMDAxOGBmNmZmZmI0MCAwMDAwN2ZmZGA4OTQ0MjY1MSBLRVJORUwzMiFCYXNlVGhyZWFk
SW5pdFRodW5rKzB4MTQNCjBmIDAwMDAwMDE4YGY2ZmZmYjcwIDAwMDAwMDAwYDAwMDAwMDAwIG50
ZGxsIVJ0bFVzZXJUaHJlYWRTdGFydCsweDIxDQowOjAwMD4gcQ0KcXVpdDoNCk5hdFZpcyBzY3Jp
cHQgdW5sb2FkZWQgZnJvbSAnQzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxXaW5kb3dzIEtpdHNcMTBc
RGVidWdnZXJzXHg2NFxWaXN1YWxpemVyc1xhdGxtZmMubmF0dmlzJw0KTmF0VmlzIHNjcmlwdCB1
bmxvYWRlZCBmcm9tICdDOlxQcm9ncmFtIEZpbGVzICh4ODYpXFdpbmRvd3MgS2l0c1wxMFxEZWJ1
Z2dlcnNceDY0XFZpc3VhbGl6ZXJzXGNvbmN1cnJlbmN5Lm5hdHZpcycNCk5hdFZpcyBzY3JpcHQg
dW5sb2FkZWQgZnJvbSAnQzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxXaW5kb3dzIEtpdHNcMTBcRGVi
dWdnZXJzXHg2NFxWaXN1YWxpemVyc1xjcHBfcmVzdC5uYXR2aXMnDQpOYXRWaXMgc2NyaXB0IHVu
bG9hZGVkIGZyb20gJ0M6XFByb2dyYW0gRmlsZXMgKHg4NilcV2luZG93cyBLaXRzXDEwXERlYnVn
Z2Vyc1x4NjRcVmlzdWFsaXplcnNcc3RsLm5hdHZpcycNCk5hdFZpcyBzY3JpcHQgdW5sb2FkZWQg
ZnJvbSAnQzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxXaW5kb3dzIEtpdHNcMTBcRGVidWdnZXJzXHg2
NFxWaXN1YWxpemVyc1xXaW5kb3dzLkRhdGEuSnNvbi5uYXR2aXMnDQpOYXRWaXMgc2NyaXB0IHVu
bG9hZGVkIGZyb20gJ0M6XFByb2dyYW0gRmlsZXMgKHg4NilcV2luZG93cyBLaXRzXDEwXERlYnVn
Z2Vyc1x4NjRcVmlzdWFsaXplcnNcV2luZG93cy5EZXZpY2VzLkdlb2xvY2F0aW9uLm5hdHZpcycN
Ck5hdFZpcyBzY3JpcHQgdW5sb2FkZWQgZnJvbSAnQzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxXaW5k
b3dzIEtpdHNcMTBcRGVidWdnZXJzXHg2NFxWaXN1YWxpemVyc1xXaW5kb3dzLkRldmljZXMuU2Vu
c29ycy5uYXR2aXMnDQpOYXRWaXMgc2NyaXB0IHVubG9hZGVkIGZyb20gJ0M6XFByb2dyYW0gRmls
ZXMgKHg4NilcV2luZG93cyBLaXRzXDEwXERlYnVnZ2Vyc1x4NjRcVmlzdWFsaXplcnNcV2luZG93
cy5NZWRpYS5uYXR2aXMnDQpOYXRWaXMgc2NyaXB0IHVubG9hZGVkIGZyb20gJ0M6XFByb2dyYW0g
RmlsZXMgKHg4NilcV2luZG93cyBLaXRzXDEwXERlYnVnZ2Vyc1x4NjRcVmlzdWFsaXplcnNcd2lu
ZG93cy5uYXR2aXMnDQpOYXRWaXMgc2NyaXB0IHVubG9hZGVkIGZyb20gJ0M6XFByb2dyYW0gRmls
ZXMgKHg4NilcV2luZG93cyBLaXRzXDEwXERlYnVnZ2Vyc1x4NjRcVmlzdWFsaXplcnNcd2lucnQu
bmF0dmlzJw0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445465</attachid>
            <date>2021-11-30 13:39:48 -0800</date>
            <delta_ts>2021-11-30 19:39:35 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211201083945.patch</filename>
            <type>text/plain</type>
            <size>499418</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2YjlmZjNlYmEyYjYw
MmE3MzVjYzQ5OGY1NjBjNzk4NjgxOTBhZC4uMGY4YTE4Zjc4OWI3ZjU4MjNhNDQyODMwYWM1MGVj
MzE0ZGJkYjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxMSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBi
ZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZl
cmVkRGF0YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICogbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVk
QnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051
bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3
YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWlu
ZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAg
ICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVl
IHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisg
ICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVy
IHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hh
cmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5
cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQg
dG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJl
ZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJl
CisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2Vk
OyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4
cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBU
aGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZl
cnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAg
ICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90
ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1p
dCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBk
ZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBj
b3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUK
KyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNv
bnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJl
ZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBo
YXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFs
IGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQu
CisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ug
b2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVu
ZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0Miwg
YSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3Jl
YXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBi
eSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJ
REJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2Nl
bmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZv
ckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZG
b3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0
aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxp
emVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0
YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
VUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdS
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6
Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5k
RmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxl
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJs
ZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNj
cmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJv
YXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEtMjYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFk
ZCBpbXBsZW1lbnRhdGlvbiBvZiBzZWxlY3Rpb24gaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0
aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1NzQ4ZGJlMjllYWJjYmVjNDJiMjQ5ZjhjNjVjZTI2NDg3M2I2
NzUxLi5mZDQ5MmZjZDZhZmVjNDM1YTg1Y2FlY2E2YmYxZjdiOGE5MTQ4ZmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdp
blZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRv
U3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVx
dWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToK
KyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1h
Z2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0
KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1v
cnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSB3
cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAgICAgICAgU2hh
cmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAgTm8gY2hhbmdl
IGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5IHNpemUgcmVk
dWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdoZW4gbWFwcGlu
ZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEgY291cGxlIG9m
IHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFj
dG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBjb2RlIGFuZCB1
c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisKKzIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBh
bGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFy
ZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1l
bW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxl
IGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAg
ICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1v
cnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtlIFNoYXJlYWJsZVJlc291cmNl
IHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBTaGFyZWFibGVSZXNvdXJjZSBv
bmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVkTWVtb3J5IG9iamVjdAorICAg
ICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcuIERlbGV0aW5nIHRoZSBvYmpl
Y3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgc2FmZS4KKyAgICAgICAgTWFr
ZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIp
OiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29k
ZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQuCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHku
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCiAy
MDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0R0wgaW1wbGVtZW50YXRpb25zIHNob3VsZCBoYXZlIHNlcGFyYXRl
IGNsYXNzIGRlZmluaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAxZDUw
MWFiMzgwMTdmMWQ4ZjllODFjOWJlZmRjMmQ3ZjZmMTZmZS4uZjM1MjlkZWI3MmYxZWY1ZGQ3ZTE4
NDg5YjA0YWJkYWU0ZTQzNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29k
ZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0yNCAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxl
IHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIxMzk2
OTY2YmI2MGFjLi41Mjk0OTMxOTgyOGU0ZTE1NjM4MmI5MzdhZjliYzJjYTVlYmU0MWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTEtMjUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBj
b250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFu
dGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAg
ICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVh
bTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAq
IFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJj
ZS5oOgorCiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZk
YTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRi
MWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJ
Zk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAg
ICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwot
ICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3Ry
aW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0K
aW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFl
NjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21p
bWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdl
UE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBC
bG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMx
Y2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZl
OGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAi
aW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYg
KGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0
Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRv
cHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7
CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0
MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
b21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2
NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3Jt
RGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewog
ICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpu
dWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjg2
NzUwZGZlZWZlYzU1NWNhZjlhMWJiZjg1MTA2MGE1OWFmZjI4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBET01D
YWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQ
b3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVl
c3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRs
ZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3Bv
bnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0g
V1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OCwxNSArMjk4LDE1IEBAIHZvaWQgRE9N
Q2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVz
cG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRp
b24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNl
Qm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcsNyArMzE3LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAt
Mzc0LDcgKzM3NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9u
c2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVm
ID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2
ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMt
PnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5
KCkpOwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRX
aXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIu
LmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNl
PiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNw
b25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYu
LjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMx
LDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9k
eSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8
Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZv
cm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5
KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBh
cy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9
KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25z
dCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwg
W10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRy
X3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4u
Y2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBF
eGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBX
RUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7
CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVl
YWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIw
NDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zv
cm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyAr
MTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAg
ICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJh
eSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBr
ZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
ICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAh
PSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNt
cChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJv
b2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6
VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBw
YWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUo
KSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBh
aXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi5mMTJj
ODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRj
aEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYg
KGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewot
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25l
ci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5z
IGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIs
NyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAog
ICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0
YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0
YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6
VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25z
dW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
ICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlz
QmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRj
aEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAo
aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rp
bmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
ICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9T
dHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJs
U2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFk
MWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3
ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0
YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEg
dGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4NjUwODU4
NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMTFhNzNmMzQ1ZTgyZDllNzA4NTk4YWE4MzNkZWFlZDhiZWM5
MzQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
ICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0y
NjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJl
YW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29s
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTog
ewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZv
cm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisg
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICsz
MjYsMjAgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5k
KGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit7
CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRh
KSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0
YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIGlmICghbV9idWZmZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7CiB9
CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJy
YXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0Nyw3IEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwogCi0g
ICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwot
ICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgcmV0
dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKIH0KIAogUmVmPEJs
b2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCkBAIC0zNTEsOSArMzU1LDcgQEAgUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFt
X2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBWZWN0b3I8dWlu
dDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5cGUpKTsKIAot
ICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0cik7Ci0gICAg
YXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBibG9iRnJvbURh
dGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAgcmV0dXJuIGJs
b2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRhKCksIG1fY29u
dGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpA
QCAtMzYyLDggKzM2NCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgp
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0
byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRh
KCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRv
IGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgzLDEwICszODUsOCBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKCkKIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNlPiYmIHNvdXJjZSkK
IHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAobV9idWZmZXIpIHsK
LSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChtX2J1ZmZl
cikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxl
ZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2JhOTY3ZmU0MWEw
MTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZkOGJiMGUxODcyYWFm
ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJl
dHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9
CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFr
ZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUg
bV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVm
UHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5
U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2NDYwMDQ2ZTQ2YmQ1
MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFiN2MxZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQw
MCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5r
KENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9Owor
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
U3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAg
ICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0MSw3ICs0NDIsNyBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEsIHVp
bnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsK
ICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9ybURhdGEpKTsKICAg
ICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAg
ICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsK
ICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92ZShidWZmZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggYmM1
ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4uYTE2MDc0N2RlMGNlYWNlZWNj
Nzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVl
ZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBS
ZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5
RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXgg
ZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEzN2MyY2Y2ZmY0N2Ez
Njg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5z
aXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0
YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6
ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5k
ZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uODNiOTVkN2NmMDA3
YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00
Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlID0g
MHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6b3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2Rl
cigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKICAgICBz
dGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBkZWNvZGVyID4+
IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMmEy
YzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMxMmQ0NWViYmZjZTlm
MzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzks
NyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUg
eyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0g
S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2
b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtl
eSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEo
Y29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVu
Y29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
S2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEm
IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMx
YzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRiMzRmZmFh
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29u
c3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURh
dGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4
ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUlu
Zm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAg
dHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qg
c3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0
YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4g
ZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hh
bmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBh
dXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAg
ICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0
byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29u
c3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
aW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNl
Il9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0
SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGlu
ZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShp
bmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9Owog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhl
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9
OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpr
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3Rz
IGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3Rv
cmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUi
X3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBB
U1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkp
OwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8g
a2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0
YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBi
ZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBh
IHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0
byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5
QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkg
dG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9y
ZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAg
aWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7
CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5p
c051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwor
ICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYg
KCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
dXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRl
eElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWRE
Qjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4p
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAg
IGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sg
dXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkg
PSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdl
Lmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFu
Z2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRp
b24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNO
dWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJL
ZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5
KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURC
S2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFjNDMyMDYu
LjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRB
cmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktl
eSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2Vy
S2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQr
KywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRS
ZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1
bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBh
ZmVmNDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJiOTY3YWEzLi4wMDI3NTcwODAyYjE0YjA5
ZDFhYTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZvciAo
YXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZm
ZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xv
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li5lNzllYmRi
YWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fYnVmZmVy
ZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJh
d0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAg
ICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2
ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5n
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2IyZTJmY2EwZDM3YWE1Mzk5OWZhNjI4NGE0
NTlhNGU0NzMxYWMuLjAyOGE5MTk4NTgxN2ZkMzY5ZTcwZjRjYWFiOTRlMWExNGY1ZDBjMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJs
OwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3Vy
Y2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDgg
KzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsx
OTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3Vy
Y2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5k
bGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291
cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNy
ZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVB
bmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAzNjM5M2EzYjZmOTI3ZmYw
NGZiYzI1ZWQ1N2FkZGFmYzM5MjllYWYzLi45YzQ3MjZmMjY0MmRmMDFkMzNhYmNkZjRlMzFlYzgy
ZjRjOWE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgog
CiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9k
ZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9v
bCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1v
ZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJj
ZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtp
dE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6
TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNT
RVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90
IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291
cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6
ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVs
U291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRh
KCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBt
b2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4
NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc1LDcg
KzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWlu
Z0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1FOiBTdXBw
b3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xvYmFsT2Jq
ZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0oUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXgg
YzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYzMTQxYWYyZjUy
MTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEs
MTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3Vv
dXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJ
KSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkp
IHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVy
c0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkK
LSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNo
QW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9
IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9
CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7
IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsg
bV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3Jp
cHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRC
dWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAg
ICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkx
LDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRC
dWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb250
aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9Owog
ICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4Y2ZhN2IwZThjYTQ3
NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAg
ICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0Zv
bnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1l
bnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJh
dGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RG
QnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNf
Y2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3
Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29s
IHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNz
KCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291
cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVyLmdldCgp
LCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0
PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4
ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMx
ZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBA
IC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7
CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsK
QEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxl
Y3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsK
IGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRh
Z2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8v
IEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3Rl
IGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIyNDEzMDQ4
MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5YWQ3YjcwYTEz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1LDcgQEAgUHJv
bWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVu
dCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFk
ZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERh
dGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0NGVmNjNm
MjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBlNjMyMzUxYzlm
ZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNs
YXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0
ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3Rv
bVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJv
bGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsK
QEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9t
UGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlF
eGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lk
IGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8
U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEp
OworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVu
dCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4LDEyICs2MTks
MTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNl
bGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgU3Ry
aW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIHN0YXRp
YyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCmlu
ZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4
NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7CiAg
ICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5
MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEy
IEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChG
b250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9f
YnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hp
dmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERh
dGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hp
dmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5n
U2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290
T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpu
dWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBA
IC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0
cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQor
dm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2Ug
PSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5
LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsK
LSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2Fy
ZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNo
aXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRl
eHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmlu
ZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVu
dEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRh
SW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5n
ICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAg
IGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5n
IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpA
eyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5n
IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpA
eyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5k
ZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0MzI1Yjlm
ZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1M
Q29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNV
UkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1
YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2Ut
Pm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBl
ICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291
cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxl
V3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRG
aWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIz
MDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBw
ZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNv
dXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBk
YXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICgh
ZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1l
ID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJj
ZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
RmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVt
ZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hl
ZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRC
dWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFy
ZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
fQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmlu
ZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFkYTY2ZDJhYzI5
NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUsNyArMjg1
LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2Vy
dGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250
ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5h
bEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxh
Y2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21l
bnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9
IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEu
YXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlw
ZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERh
dGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1l
VHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAg
ICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMz
Miw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFt
ZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHko
KSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudElu
c2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1l
VHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFj
aG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1
ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwg
aW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09m
VHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAg
c3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudElu
c2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1l
VHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3Qg
fSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbklu
Zm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRB
cmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlm
ICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1h
aW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwg
bWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9
OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVh
c2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFu
ZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVB
c0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdp
dGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAg
ICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRl
bnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3Vw
QW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVN
YWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAg
ICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUs
IGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlz
YWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlm
IChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFu
ZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAo
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZm
ZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFn
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBAIGJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJh
bWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0
byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcu
Z2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1
Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAg
IGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3Ry
aW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5YzdjMjJiM2Vi
YzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2FhZjJk
YTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAt
MTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQo
Tm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+
c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hp
dmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlv
bigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVy
ZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVy
IG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0
aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tW
aWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNl
ZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQx
Y2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5
ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVu
ZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5h
bWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09
IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmll
ZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNl
dHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1
dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVy
KQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0
aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcg
KzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxh
dGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFNo
YXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50
RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVE
b2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJ
WE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNp
ZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8g
dGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIg
aXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4
IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLjhhNjE1MDQzOTEwOTlm
ZmUyZTRhMDZlNzQ4OTZlZjg4OGVkMDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMg
Y29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAgKiAxMDAw
ICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVz
b3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklk
KQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJ
ZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEoKSkgewog
ICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1
ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICBt
X2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpA
QCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAor
Ym9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVfdCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAgIHJl
dHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0
YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVu
Z3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0g
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAg
ICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
KyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRh
dGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVk
ID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRh
QnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAg
bV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0
ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJl
ZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5ZmU5N2QwN2M5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTmV0
d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTAz
LDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFt
cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBz
ZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAg
PSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7
IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEo
KSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEyMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3Ry
aW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZlcjsKICAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2Vy
dGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDRl
MDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1MTc4NjdjMzQ4
YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTQwNywxMiAr
MTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewog
ICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVU
ZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRF
bmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAg
ICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2
NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2
NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRl
eCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5OGYzMzIwODIy
YjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDMsMTIgKzEw
MywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFt
ZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2Rl
LCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRv
Y3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJv
b2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0
aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50
KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAg
IHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5n
TmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBi
NGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJhMmRhN2EwMmM2
NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
UmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0
byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBt
X2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+
ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2VmMDM3YjcwN2M5
MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1
Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBsb2Fk
ZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVhdGVBY2Nlc3ND
b250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwg
bG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0byBpZGVudGlm
aWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5u
b3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9LCBlcnJvciwg
cmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBiLi42ZmViOGY1
YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2Vz
KCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAg
ICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBt
X3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRB
cmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBt
X3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NF
UlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0
YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEo
bV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7
CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRl
UmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVyKiBEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1Niw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQog
ICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0g
ZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291
cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNl
RGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYzYzg3Li43Y2Yz
MDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNs
YXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAg
IFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciogcGFy
c2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAg
ICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNv
dXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3
MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2OGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAg
bG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3Vz
IHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VP
YmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAz
YTA2NGJjNzIzMWEzNjAwY2M4M2RjNThhOWEyZTdmZjJlZTk2YjM1Li40ODBmMjJhYmUzNTVkMTA5
YzIwODYyZWZhZTlkYmQ1ZDA4NTdjOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2Vy
VHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jikg
ZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFs
IHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVz
dENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hl
Y2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdiLi42MzA5OWI0
OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBy
ZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5
LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdp
bmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAg
IEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3Vy
aXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVm
ZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMx
NDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9j
dW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91
c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRp
ZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAg
ICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1h
eWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2Us
IGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1
YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAg
ICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8g
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6
IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRmZThmZDdk
ZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEwMWZhZmI2
OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBA
QCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVk
UmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExv
YWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAog
ZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRp
b25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNo
YW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNv
bnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpv
cHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21T
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmll
d0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0g
c3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3Qm
JiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li4xNGU1
ZmQxZDBkMWIyMDUzMzk2OGE0MDQ2YTE0NDQ0MzE2MDkxOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX0FMTE9DQVRP
Ul9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6
UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9u
cykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVudExvYWRlciB7IGZy
YW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwgbV9yZXNvdXJjZURh
dGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9kZWZl
cnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQ
b2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmco
KSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3ICsxMTksNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmll
ciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNl
RGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgp
OwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1
ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAg
IC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0
KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNv
dXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyMyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAg
IGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJj
ZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewot
ICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKKyAg
ICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBt
X3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNv
dXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitTaGFyZWRCdWZmZXIqIFJlc291
cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNl
RGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3Vy
Y2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5jbGVhcigpOworICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwogfQogCiBib29sIFJl
c291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAgLTU3MSw3ICs1NzEs
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkn
cyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBw
cmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmls
ZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1Bv
bGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
ZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4o
ZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5k
aWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2Fz
dDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIz
YjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjQwNjUwMWVlNTMxNWE4Njg2MTFlZWNlMjZj
MTk0Njk1NWUxZTc5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNz
IEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9h
ZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291
cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0ZWQg
UmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRC
dWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgp
OyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNs
ZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVl
c3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNv
dXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VE
YXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2Vm
YmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdm
NjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwK
ICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQog
ICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1
ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwor
ICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVu
Z3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRj
YTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7
ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQg
Y2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1f
cmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9y
ZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVS
ZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBm
MWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3
ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3Bv
bnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21h
bmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJz
ZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3Vy
Y2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkp
OwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3
cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJl
YXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJz
ZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAK
aW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIwYTkyNzFj
ZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTMs
MTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29u
c3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVz
b3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAg
ICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2Uu
cGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291
cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAg
ICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0LCBy
ZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc28KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
RmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2FkaW5nIHJl
c3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4gKGlu
ZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0dXMgY29k
ZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBlcnJvcnMg
KGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBpbnN0ZWFk
IGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sgZW50cnkK
QEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRp
b25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAg
ICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6
IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUg
U2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXgg
NTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2ZDU0NTNl
YjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAg
Y2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9u
Q2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtNDksNyArNTAs
NiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBt
YXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tG
b3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJv
b2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwor
ICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJj
ZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hlSW5CYWNrRm9yd2Fy
ZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAxNDcxZjMw
ODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzEx
ZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBS
ZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2
ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNl
QW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRl
ci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBk
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdi
MmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgp
OworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsK
IH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZl
M2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5iZGEyYTJjNzY2OWUxOGM1MjQ3YWM4MGExMmYxN2Jk
MjZiMzQ4ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4NCw3ICs3ODQsNiBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
IHJlc291cmNlLCB1bnNpZ25lZAogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAotCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3Vy
Y2UtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIs
IEZpbGVTeXN0ZW06OnBhdGhGaWxlTmFtZShyZXNvdXJjZS0+cGF0aCgpKSk7CkBAIC04MTUsNyAr
ODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+
YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5k
YXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVz
b3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCBy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAg
ICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3OCw3ICs4Nzcs
NyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNl
J3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9m
IG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2Ut
PmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291
cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEz
LDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3Rh
dHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWdu
ZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50
NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0
YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAg
ICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcp
OwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMy
MjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUy
M2MwNDM5YjZlNjhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJl
c2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0
IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0
YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBu
dWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgog
ICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiBy
ZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVz
b3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNv
dXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9w
ZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNv
dXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25z
ZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBj
cmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lv
biA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9u
YXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAg
ICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVz
cG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBp
cyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAg
ICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0
YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0K
IApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcg
ZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRh
ID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0
YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYg
ZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxp
c3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJs
ZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0y
NzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZS
ZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQo
KSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBw
cm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBp
bnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6
OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBp
bnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAK
KwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJB
cmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNl
IGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMz
Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52
YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNl
ID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRT
dWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAt
MzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lX
ZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3Vi
ZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZl
LT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNo
aXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBM
ZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAg
ICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1
YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
LCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsK
LSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQg
YSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNw
b25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUp
CiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNo
aXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFu
IGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50
ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBT
dHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndp
ZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUl
XCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgp
LnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAz
ZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5
YjZjMzFkNDJjNTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBt
aW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8g
Y29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRj
aCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29k
ZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2Rl
ZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90
ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRh
YmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBN
SU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAg
IC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwg
d2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25z
IDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMy
NTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5l
cmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4
MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2
NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBA
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmco
ZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZh
MGJjZjAwMGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAg
ICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUg
ZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUg
YSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQg
a2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAo
ZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0
IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNr
Tm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAg
Ly8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQg
aW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3
ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0
ODRhMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApA
QCAtNjYsOCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewot
ICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9k
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNr
Tm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6
Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdt
ZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9h
ZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgs
OSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1
ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEz
NSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3
YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0g
d2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZk
ODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3
NmY4MTE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBi
b29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3Rh
dGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBp
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRy
PEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmlu
ZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBj
b25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZv
bnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJ
dGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZi
NTQyLi43MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBA
QCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2Rh
dGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUy
MywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VE
YXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBk
YXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVy
dmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2Ny
aXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisg
ICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEt
PmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihk
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAg
ICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBz
eXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41
YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hv
dWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJl
ZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAg
ICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5
NTYyZi4uODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02
NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRh
OworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlv
dXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJl
dmlvdXNEYXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xp
Y3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQ
b2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2Rh
dGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAg
ICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBt
X2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggOGI4M2U1MzMx
OTBhNzc2YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRjN2Q3NTRlMTliNzU1YTlj
YWM1NzRiZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6
Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkK
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZl
ciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAo
Km1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xl
YXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7
IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5
NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3Nzhl
OWZhYTg1YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBs
b25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2Rl
ZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNl
RW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2Fk
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9h
ZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0
PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fk
cy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vz
c1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdk
YTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2
YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
dG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRv
IHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50
OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAg
IG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmco
ZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMy
ZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBA
QCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNh
YmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRl
cm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJy
b3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAg
Ym9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFm
aXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAg
ICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0
OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBA
IHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZH
Rm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFj
ZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1
bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRp
bmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRl
eCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIx
YjhmOTgyNjk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVk
U2NyaXB0OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4u
YWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEg
PSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2Fj
aGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5
NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNm
YzI1ZDg1MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxl
U2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1f
c2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNp
emUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
bV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29k
ZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAg
ICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVh
MjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMw
Y2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZV
UkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJG
cm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0
ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vz
c2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxl
QmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7
IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Np
b25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2Uw
ZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1t
CkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0g
bnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUg
ZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBk
b3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0Rmls
ZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJM
UmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVD
cmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3
ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3Bv
bnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2Nr
VG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1v
bml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRC
dWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJl
c291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jl
c291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2
MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2NWQ1YmI3YWY5MGVi
ZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcgQEAgY2xhc3MgTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5
UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9v
cmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2lu
YWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAg
ICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1
NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZkNTM3YmZkNjJmZjY3ZGVjZDQ2NGI2
NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRl
ciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9u
c2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5y
ZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3
Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29u
dmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJl
dmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJl
c291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9j
b252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQog
CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsK
QEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xv
YWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25z
ZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVy
dGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAg
ICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3Jp
Z2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAs
IG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2Nm
Li5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRo
U29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1MzVjNjMyZDlkMmRhYzkxM2VmLi41ODcxYThlYTZhMzEx
OThjOTBhNGY0OTQxYmMyM2RlOTg0OTViMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTEs
NyArMTk1MSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAog
ICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBl
c3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmly
ZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlv
dXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAg
ICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNm
Zjk2NDIzMDA1MmY3OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsK
LSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlw
ZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsg
dXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAo
YXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFs
aXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBj
b25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hh
cnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAg
ICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5j
aGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAg
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsg
dXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5j
b2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25z
ZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5k
KHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91
cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFm
NDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1p
bWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQg
UGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgK
aW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFi
YjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5o
CkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7
CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAg
CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQy
ZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0
YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZp
bmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAg
ICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFy
cmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVz
dWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZp
bGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVm
ZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0
YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwot
ICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3Bl
bmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xl
YXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgw
ZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
MTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3Ry
aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5n
JiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2Qy
NDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNk
NzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04Miwx
NCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VY
UE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsK
ICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdG
b3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAg
ICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFz
dGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUlu
SFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVS
TCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlw
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1l
OwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhh
c2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAg
ICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBW
ZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3Ry
aW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JU
eXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0
YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBk
NmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6
OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRh
dGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3Rl
eHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwog
CkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAg
ICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIg
PDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIp
CkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRD
dXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3Rl
bmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2
ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYw
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
aApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9h
cmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFy
ZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVy
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4
OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1
YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVy
bFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAg
IHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+
IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRl
VG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcy
ZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3
NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9y
aWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJp
bmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3
NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYw
YmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0
YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3Qg
UGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVi
b2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFz
dGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
U3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdy
aXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1h
Z2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVS
TCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwo
c2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4u
NGJlYTRmMThlNGM3OWRlYjU3NDRmMjgwZTlmOGY5YmMxODNjNmYzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgY29u
c3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QK
IAogY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3By
ZXZpZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWlu
UmVzb3VyY2UoKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVw
bGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5w
cmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlmICghbV9w
cmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGll
bnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdl
dCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhp
cywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
b252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2
YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIuLjA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRl
YTlkMzQ5YWI3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0
cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlcjsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29u
dmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsK
KyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBS
ZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmln
aW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRl
eCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYz
ZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5
cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7Cisg
ICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7
CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1NWI5YWZkMzkw
MDM1MzUzODVkLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQwNTg3ZGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEzICs1MCwxMyBA
QCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0p
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkK
IHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAgU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBhcHBlbmQoV1RG
TW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewpAQCAtNzMs
MjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1h
cHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBl
ZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50
OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmls
ZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmICht
YXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJv
b2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1h
cHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwot
ICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQot
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4m
JiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1v
dmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50
c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNp
emVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMs
MzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShj
b25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVk
RGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNv
bnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGln
dW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3Vn
aHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMg
ZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2Fs
bGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSBy
MjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwot
I2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsK
LQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nh
c3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhp
cykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9
PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2Vn
bWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29t
YmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xl
YXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEp
OwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVu
dCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9z
ZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiArMTU2LDIxIEBAIFN0
cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpzaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVy
Ojppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisK
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKQEAgLTIwMiwx
MCArMTkyLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVT
ZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUo
KSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVu
dCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0p
OwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywyMyArMjAyLDI2IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAg
ICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXpl
KCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsK
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisK
IHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKQEAgLTI0Mywx
NyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0
CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNo
ZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVt
ZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNT
RVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRl
cikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAg
ICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTUsOCArMzQyLDcgQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBj
b25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAm
JiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQog
CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3Miw3ICszNTgsNTcgQEAgYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkg
Y29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQor
eworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7Cisg
ICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwg
V1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+
aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9z
aXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVy
LT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGln
dW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9
CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1h
eVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VG
aWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBw
ZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3Mp
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
V1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVu
dC0+ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRh
QXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBj
b25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtd
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4g
ZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyArNDI3LDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQo
dmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6
OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEp
OwogfQpAQCAtNDAyLDcgKzQzOCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90
TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4g
e3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19Owog
fQpAQCAtNDU2LDcgKzQ5Miw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVf
dCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2Vn
bWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyBy
ZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTExLDcgQEAgc2l6ZV90IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZp
c2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6
ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAg
ICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAs
IG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGlu
U2VnbWVudCkKQEAgLTQ5OSwxNiArNTM1LDIxIEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVu
dCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4g
c2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0g
ZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6
ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1
cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZm
ZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXpl
X3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU3NSw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAg
ICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEo
KSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFk
Li5kYTNkMjJmMjAzZGNiYzU1Y2M3NjY4MzQ1ZGRlMGIyZWJjMmUyN2JlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTMzIEBAIGNs
YXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVk
QnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1t
dXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8v
IFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVu
dC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFT
ZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VG
aWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpT
aGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hy
aW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBj
cmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lm
IFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9p
ZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5
dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVy
Jik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFs
bCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5
IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdp
bigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRl
cyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9z
c2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIq
IGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVu
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAg
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAg
ICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBk
YXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8g
RGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNl
IGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAg
ICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxp
Y2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQot
ICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWlu
dDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAg
ICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRl
ciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
cHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVu
dChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3Zp
ZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlk
ZXIpKSB7IH0KIAotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsK
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAg
ICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8
R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxl
RGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElP
TikKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0
ZUNGRGF0YQogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKKworY2xh
c3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZl
cj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3Zp
ZGVyKSkpOyB9CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3Jl
YXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJ
QikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisg
ICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0
YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlz
IG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwogCi0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7
CisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVm
ZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2lu
ZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Nv
bnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0
aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcg
RGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAg
c3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3Np
dGlvbjsKQEAgLTIxMCw1NSArMTk3LDE4MSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21l
bnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNl
Z21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdt
ZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNl
Z21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBj
b25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMg
Tyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6
ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRh
VmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRv
SGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5n
KCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAK
LSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFv
cGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3Qp
OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29u
c3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRp
Z3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92
aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisg
ICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBhbGwg
dGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIg
Y2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKK3ByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBz
ZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFy
aW5nIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVu
dEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21l
bnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBi
b29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wg
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5
IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVi
bGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBj
b25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19z
YW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRoYXQgeW91IGNh
bid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAg
ICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4p
ID0gZGVsZXRlOworCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8s
IFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKwor
I2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+
IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVf
RVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlm
CisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0
ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNl
Z21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3
YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVk
QnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAg
ICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBt
X2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAv
LyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIg
YXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2Ug
Y3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAg
IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3Mm
Ji4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBl
bnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9p
ZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAg
eworICAgICAgICByZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQor
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAg
cmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAg
ICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90
PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBA
IC0yNjgsMjEgKzM4MSwyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmll
dyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRC
dWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXpl
KTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0No
YXJQdHIoKSBjb25zdDsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8
RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhp
blNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRk
M2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5
YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEs
NyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9v
bCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNm
Q3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29y
ayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBu
c0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmlt
YWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9B
cnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlw
ZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxh
eWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3
M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3
ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29k
ZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5n
KCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxp
c3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFh
NWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBT
dHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9T
aGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBi
YjJmY2I5MS4uYTEyYTc0MWE1NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVz
aW5nIEZvdW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVu
dGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9y
IG5vbi1Gb3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFS
ZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFS
ZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBz
dGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+
bV9pbW11dGFibGVEYXRhKSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6Omhp
bnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewog
ICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRh
dGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYy
OGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJh
ZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0
cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNp
ZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BO
RyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhE
YXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9
IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEg
KnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5
cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShw
bmdEYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0Rh
dGEpOwogfQogI2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0
ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlw
ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JU
eXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5
Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5
MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4
MTY3NWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1Zl
Y3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0Rh
dGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdl
cilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBv
c2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50Owor
ICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAg
IE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3
ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNl
Z21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjoo
TlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwy
MiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4g
YXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdl
X2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRv
T25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVy
biBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJU
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21l
bnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAg
ICBpZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6
ZmlsZVBhdGhdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VE
YXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNv
dXJjZURhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAg
UmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25z
dAogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjow
IHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIw
NzExZWFlMDgwZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3
NzgwM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9i
amVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMg
SlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNl
SlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CmluZGV4IGRkMzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJhZGRlZTdl
ZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAg
IGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0g
ICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0
RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRp
Z3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXRE
YXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNp
emUgPSAwOwpAQCAtMTk2LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2Vu
Y0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFw
LmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAg
ICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlm
ICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJy
YXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUo
a2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJp
bmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0
YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25E
YXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgp
OwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0g
aW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBr
ZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3Qg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpB
cnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBm
b2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkg
SURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcg
b2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBr
ZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5k
YXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
aW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92
ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0
cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25E
YXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtl
KCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2Nj
NDFhMGM1OC4uN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjpl
bmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5j
b2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVm
ZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4
NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2
NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNv
ZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzEx
OTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBi
YjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVu
Y29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rpbmco
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlz
aEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgp
ID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0g
Z192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdC
eXRlcz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgy
MTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3Qg
U3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3
MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckds
aWIuY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoR0J5dGVzKiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
R0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUo
KSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIq
PihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMp
KSk7CisgICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+
ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlz
KSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmls
ZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXpl
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdl
dCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRm
Yjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3Jp
ZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7
CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFj
ZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRp
Y2FsRGF0YSkKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250
Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1
c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VE
YXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5m
OWJhY2E1YTI2NDFlMzhjODI5NDAwZjVlMzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sg
PSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0
ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZv
clZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAg
VmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBP
cmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3Jp
Z2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0
YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5
OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3Jl
YXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3
YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0
OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRG
YWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0o
V0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4
ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5Mjll
NjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVU
eXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
LCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9k
YXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQog
ICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4u
OTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVs
PiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5
LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8
TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwo
UmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7
CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYw
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90Piht
X2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCks
IDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwog
fQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwg
V1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNy
ZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1v
dmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
Y3BwCmluZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTcz
YjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7
IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50
MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUp
CitzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNl
dCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zm
c2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJ
bnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1
ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBi
b29sIHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9m
ZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXpl
b2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0
b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50
MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNX
T0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNp
Z25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29s
IGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBz
Zm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50Lmlz
RW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50
LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5
NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250
OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250
KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0
YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIg
aXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZG
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09G
RiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQg
KGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVy
d2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4K
LWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhf
dD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVy
IGlzIGEgV09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1
cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1
ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMs
CiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5
Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGlj
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFz
ZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
U3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVy
LnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0
byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEw
ZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVm
UHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNv
bnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAg
U3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkg
fTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpw
YXJzZUpTT04oanNvbik7CiB9CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAg
IGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFt
ZSgpKQotICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRl
bnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFU
QSkKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05h
bWUoKSkgewotICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhp
bml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3Ry
aW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtO
U0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJp
bmcqKXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9y
Om5pbF07CiAgICAgfQogI2VuZGlmCkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1f
ZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRh
dGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BB
TDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAg
IGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVk
ZWQpOwogICAgICAgICByZXR1cm47CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAg
ICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZD
b250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0
cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
XTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQ
QUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRo
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3Npbmcg
cmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5m
aXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAg
IFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAog
ICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNr
IGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNz
IGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtl
eXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0
QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dp
dGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJM
OnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXli
YWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVj
dG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRh
IGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vz
c2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VE
aXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7
CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNh
dGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChy
ZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNy
ZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0g
a2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0
cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRh
Rm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50
aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNF
cnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3Ip
LCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRh
KV0gewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAg
IHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBm
aW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsK
QEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAg
ICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8m
IGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0g
cmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7Cisg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5n
KGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhw
YXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAg
cmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0x
MjEyLDcgKzEyMTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1
dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAg
ICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJz
dCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFr
ZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgp
IGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNv
bXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNE
YXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3Zl
KGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtl
eVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVu
ZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
OwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmlj
YXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1f
Y3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50
SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFr
ZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgp
IGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNv
bXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNE
YXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0g
cmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0
NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZl
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpA
QCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRl
cihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24o
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2Fk
ZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAg
ICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9h
ZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxf
cXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0
IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25I
YW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02
NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2Rl
ckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRh
UmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxs
RGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgz
YmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRh
ID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFy
c2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkK
ICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFn
czpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApp
bmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5Mzdk
Zjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxv
YWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
bV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBt
X2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0
N2YwLi5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0x
NjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
bV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJj
ZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQo
KSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0yMjgsNyArMjI1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFy
ZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNl
TWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVz
dC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAg
ICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0
LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsK
QEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZp
bmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwog
ICAgIGlmICghZGF0YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXgg
ZGI0NTdhODFkM2VlODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2
MTMxN2MwZDExNmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aApAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1
Yzk5YTdmNjhiNTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0y
MzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJl
Y3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZv
aWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwor
ICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VE
ZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
bwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5z
aXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRU
eXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikp
OworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRh
KGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBr
ZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2
IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNo
YXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVk
QnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5
IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmlu
ZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwg
ZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdl
U291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAg
IC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAg
ICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1
b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRo
ZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2lu
dGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3
YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdv
bid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdl
dEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tz
IHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9z
aXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3Qo
JmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJD
cmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJD
YWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZl
RGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYz
MTI4NDIxMjRlNmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdl
OjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVh
dGVQREZEb2N1bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCkt
PmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVm
PiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShk
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9k
b2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJv
dmlkZXIuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1
NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYz
OTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
QEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwo
bV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3
NWVkODJiN2I0YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0
MGY5OWZmOGM1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3
LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2
b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIg
PSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOwor
ICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVm
Y29uKTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3
MWYzOTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEs
MTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmpl
Y3RGb3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlD
aGVjayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0
Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9P
cHRpb25zKSkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXgg
NTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4
NWEzNDM4NjE5ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJv
b2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICgh
bGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJm
NWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEy
NDYwMWQ1YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxl
Q2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFj
ZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJv
RnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZh
Y2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJs
ZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFF
TkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2
MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2OTI0ZDQy
YmFhYzMzMzRmZjhkNWMzYjRhZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAg
LTQyMiw5ICs0MjIsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVW
ZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQor
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVT
aGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAK
IGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uaAppbmRleCBmMTYwNzE1YmRhNzc1OTg5MDEzMzZiNjNjOTU2N2MwMzI1
MGJkMjU3Li45NDRjNzFlNzA3M2U1NjkxYWNmNTg3MjIwNDdhOTFiYzczZDA4MTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQg
bWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRC
dWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2Nh
OGE1MDY5Li4yOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVu
Y29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNv
ZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNo
RW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxz
ZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFt
ZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7
CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
IiwgW3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIu
c2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5u
ZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDkxMTI2NTky
YzhiYTc2YmQ2NjM3MzMyNGQ1YmIyOTZiMzFkZTAzYmUuLmRmMWNiYjg1ZjIyY2NmNDYzYmQ1NTdi
YTE3ZTA5YTVjZTM5MDBhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC0zNjU0LDcgKzM2NTQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBp
bml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWlu
ZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+
c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRh
LnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAg
ICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0
RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdm
N2MwMWI5YzMuLmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVz
ZXJEYXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBz
c2g7CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29u
dGV4dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2No
YXIqKiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBz
dGF0aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciog
dGV4dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkg
ewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERl
Y29kZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0g
ICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkg
QEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvcios
IGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBT
dGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJv
dWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNl
ZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAg
ICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uNjZl
Mjk3OWUzZWNmMmVkNjk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19D
QVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVi
dWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJs
aWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNh
ZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGlu
aXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRf
TEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2Nh
dGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rp
b24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJ
Zk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBp
ZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0
YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChw
YXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNv
bnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAg
ICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0
Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxv
YWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lm
TmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5
bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCAr
NzUsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUg
Y2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsK
IAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAg
ICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBj
b25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5
bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVy
biBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3Qg
eyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgp
IGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2
YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9y
bURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6
ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRp
b24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRh
ID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAw
NjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9u
RGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTku
LjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9
IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9j
UERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
aW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2
ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
OiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVj
dGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rp
b25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0
aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFs
aWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0
YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
aXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhH
bHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRl
bmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2Vybklu
Zm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3Nl
bWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAg
IH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3Vu
dF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBU
YWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsK
ICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENv
dW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29u
c3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAg
ICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7
CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQ
YXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9
IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBo
QXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7
CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVy
YWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUg
YXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhv
cml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNv
bnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNW
ZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3Qo
dmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZz
ZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3Rh
bnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIs
NyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBt
YXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAg
ICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0
IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAz
NWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMs
NyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8
aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2
NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhk
NjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMs
NyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVm
aW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8
PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8
IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMg
Y29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
LCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6
ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUo
Y29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVj
dGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikK
ICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0
dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1
ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9p
ZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2
YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZv
aWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBU
KiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zm
c2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9m
ZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNl
dCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAg
LTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsK
ICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRh
YmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGgg
Z2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJh
Z2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVy
YWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgp
IGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkg
ewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjky
ZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6
OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFi
bGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRl
bkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2gg
aXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1i
b29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVu
YW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAg
ICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBz
Zm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9u
dERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEg
aW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250
TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250
TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYg
KCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0
ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250
TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1l
bW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAw
NzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4
MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyAr
MTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJh
Z2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VU
YWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxl
KiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZz
ZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3Rp
dHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAg
ICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVz
IGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2Fs
bHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3Rp
dHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJU
YWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZz
dWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVj
dCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENv
dW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0
IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5k
ZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+
PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBA
IC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1
cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhj
b25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVj
dCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVh
dHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVp
bnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0
dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZm
ZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJl
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1
cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJl
Q291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3
IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50
MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwog
Ci0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRh
ZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBm
ZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAg
IH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRM
YW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdT
eXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0p
KQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAg
ICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwog
Ci0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlw
dChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3
ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZh
dWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICgh
Y291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcg
KzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zm
c2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSog
ZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVs
dFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICsz
MzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RP
ZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0Pihi
dWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0
ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBj
b25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExp
c3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0
dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0
dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0
IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
c2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAg
fQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVy
ZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3Qg
RmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICsz
NjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZl
YXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhI
YXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBo
LCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJs
ZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBp
ZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VC
VGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdp
ZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3Bl
blR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBl
OjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVx
dWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxl
KE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVh
ID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsK
ICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lk
IE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBl
OjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NV
QlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0
NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgz
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAg
c3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1l
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnRO
YW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZj
MDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dG
b250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRT
ZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4g
Rm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQ
bGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMw
NDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0
YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFt
ZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5h
bWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkz
ZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fp
cm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBj
b25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmlu
ZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3
M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAK
QEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdE
SU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVE
QyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElP
Qkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6
ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJs
ZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3Qo
aGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
ZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2Iz
NjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5T
bWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1
c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RG
TW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3Zl
KGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRh
KCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9t
RGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdl
PiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1
NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAg
ICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBp
bnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0
YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
YXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3Vz
RGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWRE
YXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAg
ICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURl
Y29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIw
MDE2N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpw
ZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0g
PT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8p
CiB7CiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAo
anBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7
IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvKQogICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rl
cjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYg
VVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2Zp
bGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4
IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2Ni
ZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5o
CkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlv
biA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJv
ZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxl
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUu
LjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAt
NzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVi
b2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJv
YXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYz
LDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJD
b250ZW50JiBjb250ZW50KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgp
ID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ld
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwor
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50
RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpj
b250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hp
dmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQu
ZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVk
U3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRP
YmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNs
YXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVk
U3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRP
YmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNs
YXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0
dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9t
RGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwot
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
b2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQg
KzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2Fy
ZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFn
ZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlz
RW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5
cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1J
TUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5n
ZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9h
cmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBz
ZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3
ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRf
U1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0Rh
dGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2Fy
ZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBh
dXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRv
IGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAg
ICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8m
IHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9h
cmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxX
ZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVn
aXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBp
ZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1w
dHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8g
c2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0
aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9y
IGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2Ug
dGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8g
ZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFp
bmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0g
dG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0
byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwog
CiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChO
U0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9i
amVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdD
b252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQy
Li43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIs
NyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6
OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJl
c3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3Jt
RGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2
NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNjMzE5OTE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1
MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0
aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0
ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFz
ZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJl
ZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAg
cmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVy
cmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBh
c3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgp
CiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1J
bmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRl
eHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRh
dGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRU
eXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBh
dHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3
YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIu
bW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRh
SW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5j
bGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxy
ZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVh
ZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdp
bih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERh
dGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICBy
ZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDky
Y2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZi
YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3Rv
cjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAg
TlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0
KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QK
QEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5
cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RI
YXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlh
bGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlh
bGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4o
KSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJl
ZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsK
QEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkK
ICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgp
IGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3
IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEp
IHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXpl
ZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJp
YWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVi
b2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
Zm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0
ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRp
ZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7
CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rl
cm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4g
eyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZEl0
ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcg
KzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEg
PSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0
TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0
YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1
MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9h
cmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQor
ICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkp
CiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlw
ZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0g
c3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTll
N2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZi
MmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2Rh
dGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5Q
dHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmlu
ZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMx
ZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigp
CiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2lu
dGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3Vs
ZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAg
ICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3Nl
XTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAo
IW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBz
aXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExv
Y2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2Rh
dGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDM3MzFhMWFkODU0YTZjODNkNmNm
MDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUxZDZhYmMzZjBjY2EzNTA2YjY1ZmMzZDk4MTZk
MjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygp
IGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShm
bGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNmVjZDdmMWIwNzNjMzgz
MzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4
ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0
cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsK
IAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAog
ICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0K
ICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0
cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZl
YzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdi
MjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lk
IFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
CiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERh
dGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZm
MDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUx
MTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpA
QCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmln
aW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9
CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+
IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEg
ewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAg
ICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0
LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVz
cG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsK
LSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
az4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVs
bHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8
UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZv
aWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25z
ZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAg
ICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBv
dWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAv
IGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5z
dGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNo
IHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVu
Z3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAK
KyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZl
clNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBi
dWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFz
a0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBi
dWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFr
UHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJl
dGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAq
dGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNl
c3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEy
OSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZC
eXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFz
a0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5
dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAg
IGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUlu
ZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBh
dXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAg
ICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAg
LTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5n
ID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1
cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUo
KTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1
cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGgg
PSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIs
NyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5t
X21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9n
ZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5
NDk5ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2
YTc2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2
b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0
YTooUmVmPFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNv
dXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVs
ZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQg
Kz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRh
dGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0
KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOild
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5
ZjdiM2E5MTMzZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxN
dWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhl
IGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1
ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIu
YXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwog
CiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBA
IHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBh
dCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVt
YWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkp
OworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0Zv
ckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3Rh
cnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRh
cnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAg
ICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5k
YXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQg
b2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsK
KyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAg
ICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0
aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUx
YjAyOWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3
OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxl
ZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9h
ZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAg
ICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNl
MTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzcz
ZGNlMjc5NjdkZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApA
QCAtMTQ5LDggKzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxE
aWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNl
bGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5h
Z2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5k
bGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91
c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIo
Jm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9
CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJs
UmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5
ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUz
YjMwYzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcApAQCAtOTg2LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdl
RmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50
cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisg
ICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAt
MTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50
KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3Jp
dGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAg
ICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRh
LT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVt
cEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7Cisg
ICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQg
PSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBG
aWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFy
ZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZl
cldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4u
MDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxl
UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVT
aXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigp
OwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1Jl
YWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRl
c1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAg
ICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUi
LCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUx
N2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJj
ZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJl
c3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUko
YnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBy
ZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNw
bGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxp
ZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIs
NyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmlu
Z1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3Ry
aW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVk
ZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5
cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25z
ZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxp
dCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3Bv
bnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcg
Jyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZv
cm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2
Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAg
IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3Ro
KCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9
CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBA
QCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1
ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVm
ZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVy
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgp
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwog
ICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMg
QEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1
ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJl
Z2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9i
dWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQo
KS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lk
IFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwg
dXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXIm
IGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmQxYTc3
YjU4YjY0NGE5MGI5MDRlZmRjMWZlYmM2YzA2NzQ0ZjkyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0
cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3Jp
cHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVm
ZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9
CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7
IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVm
ZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVG
aWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYp
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250
YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmlu
ZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmU1ZjM0OWI0ODI3
NDZmOWVkYjljNWY2MzFiZmFkNGI0MTk5OGJhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVl
c3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3Vy
Y2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVT
b3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc4LDkgKzc5LDEzIEBAIHZvaWQg
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAgIGlmIChtX2RhdGEpIHsKLSAg
ICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsK
KyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9
IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNE
YXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGlndW91c0RhdGEpOworICAg
ICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAg
ICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkg
KzEyMiw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li5h
NjhjY2M2ZGZhOTU1OWRkOWJiNTEwMjZmNTgzYTA5YjE4NDdhNzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBA
QAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
Y2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
OwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYg
IW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1f
aXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051bGwoKTsgfQogICAg
IGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KICAg
ICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vycm9yT2NjdXJy
ZWQ7IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENs
aWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFrUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggNGRhOWNj
MDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1MWFmMjc4OS4uMWMwYjU3OGEwYTA0MTE5ZjIyYmE2
OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEs
NyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xp
ZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNw
b25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZv
cm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRy
X3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0
YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1Nj
cmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxl
IG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNj
cmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwg
c2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmls
ZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQog
CiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0MWNjNWUyOWNlOTZiNC4uZmNjYzJh
OWVkMjBkNzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX3Jlc3Bv
bnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFkeVN0YXRlKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5cGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAgICwgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogICAgICwgbV9wcm9n
cmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlhN
TEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsKQEAgLTIwNyw4ICsyMDgsOCBAQCBS
ZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAKICAgICAvLyBG
SVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQg
YXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRh
dGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0
cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSkK
KyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPmV4dHJhY3RE
YXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6
ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAvLyBy
ZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJl
Y3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdU
Rk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOCArMjE5LDcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJh
eUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlwZTo6QXJy
YXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAgIGF1dG8g
cmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwg
MCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIGF1dG8gcmVz
dWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSA/IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc0MSw3ICs3
NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAg
bV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBm
YWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+cmVz
ZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUs
OCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCht
X2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVm
ZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQot
ICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDcyODk0YWY2Y2M0
N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNhOTVhZWI3NTQ0ODliZDZjZDhjZGM1
MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUg
IlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCIKICNpbmNs
dWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBCbG9iOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFRleHRSZXNvdXJj
ZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFyYW1z
OwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1f
cmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRm
OGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4
ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9j
TG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJl
c291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJl
cXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0
YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVu
Yyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsK
ICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNh
NzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0
ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZv
aWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRv
IHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRh
LT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5t
YWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51
bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBv
aW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMzNmM4
Li41NGRjMjBhOWExOTVkNTllODhhZDQ0ZGI1NDA1ZTkyOTMzMTM4ZmY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1
ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8
dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUo
KSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5z
ZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+Ojpj
cmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25v
dXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9u
b3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAg
ICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERhdGEgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxlUmVmZXJl
bmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQogICAg
ICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGll
bnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVu
dEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+
Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJj
ZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsK
QEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5l
dHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNv
bnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkg
fHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAg
bV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3Qp
KQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgpOwogICAg
IH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJz
OwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAg
ICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERhdGEKKyAg
ICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAg
ICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVk
aWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmVt
cHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxv
YWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8v
IEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdl
dHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVj
aWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNN
dWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAgICBt
X2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0
KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY2
LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKIAogICAgIEFTU0VSVCghbV9j
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNo
ZSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAg
ICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5k
IGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAgICAgICAgIGNvbnN0IHNpemVf
dCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAvIDg7CiAgICAg
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8
PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+cmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRj
aCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9z
ZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCiAgICAgdW5z
aWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAg
PyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CiAKLSAgICBpZiAo
bV9idWZmZXJlZERhdGEpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSkgewog
ICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAg
ICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwpAQCAtOTA5LDExICs5MTEsMTEgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAgICAgaWYgKGlzU3luY2hyb25vdXMo
KSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNM
b2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAg
ICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEs
IG1fYnVmZmVyZWREYXRhLT5nZXQoKS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBl
bHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNF
bXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2Rl
ZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWRE
YXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS0+Z2V0KCks
IC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KQEAg
LTEyNTQsMTUgKzEyNTYsMTUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0QnVm
ZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQobV9idWZmZXJlZERhdGEpOworICAgIEFT
U0VSVCghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9h
ZCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRh
KHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAq
bV9idWZmZXJlZERhdGEtPmdldCgpIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgp
KTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBt
X2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoID0gMDsKIH0KIApAQCAtMTI3OSw3ICsxMjgxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBy
ZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5pc051bGwoKSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXND
YWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI4NywxMiAr
MTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3Rv
cmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAg
ICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJy
ZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5z
dG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVz
cG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCkpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2Fj
aGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2NhY2hl
LT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZN
b3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0
byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJs
ZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJv
ZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li4z
NDVjMmZiYTc5OGM2ZGI2YWRiNzcyMTEzMGJlMDRmMGRmNDQxNWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ3LDggQEAgY2xh
c3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTIyNSw3ICsyMjgsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWRE
YXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZl
cmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpA
QCAtMjQwLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZl
cmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2Fj
aGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6
RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lz
V2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
aW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgy
NzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVy
LT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZm
ZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5k
ZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApp
bmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5
NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNv
bnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRh
IGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBS
ZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3Rv
cmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hl
OjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3Jk
KTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3Jk
LnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiBy
ZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5
ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0g
ICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0g
bV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEo
KSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3Rp
bWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkz
Li5mZTc1OWNlZGEyZDdiZDJlYWU4Nzg5OTc4M2VmZjMzOTkyYTczYzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC00Niw3ICs0Niw2IEBAIFNwZWN1bGF0aXZlTG9h
ZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xv
YmFsRnJhbWVJCiAgICAgOiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJl
cXVlc3QpCi0gICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpCiAgICAgLCBtX2NhY2hlRW50cnkoV1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikp
CiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlk
YXRpb24oKSk7CkBAIC0xMDksNyArMTA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAg
ICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlz
TXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOwor
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlk
YXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAz
MDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVu
dHJ5KQpAQCAtMTI3LDEwICsxMjYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBn
cm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVu
ZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXpl
KCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0x
MzgsMTEgKzEzNywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChtX2RpZENvbXBs
ZXRlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZSht
X29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5
UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgaWYgKCFtX2NhY2hlRW50cnkg
JiYgIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9jYWNoZUVu
dHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAg
ICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4K
ICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZh
dWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdU
Rk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4Zjgx
NDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4
NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwog
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNo
ZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRy
eTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhmMGI3ODA3ZDc0MTcxYWRjNTIwNWEzLi5mNjMzZmZm
ZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBA
IC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRh
VVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAg
IG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50
UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAg
ICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVz
dWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdS
ZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAg
ICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQw
ZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYxNDYyNjZiODgyODEwMWViYzU5M2Y5
OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5
PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4g
eyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNk
ZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3
ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAog
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBt
X2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAg
IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZm
ZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7
IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
CmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4
ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVt
b3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVf
dCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRh
dGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRl
eCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVk
N2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhl
IHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBh
Z2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYg
T1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUw
YWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGlj
IHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0
IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgp
CiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2Ut
PmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEg
PSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0
YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZl
UmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIx
NTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01
NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250
RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8v
IFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIg
Y2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0
byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRG
YWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOwor
ICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1h
a2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNv
bGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRk
NjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJm
ZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBS
RUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwog
I2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkg
fSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IDBjMGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZi
ZTUxMjU1NmUxNjQuLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDQ5ICs1
NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYg
VVNFKENGKQotc3RhdGljIHZvaWQgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRlKHZvaWQgKnB0
ciwgdm9pZCAqaW5mbykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICBzdGF0aWNfY2FzdDxTaGFyZWFi
bGVSZXNvdXJjZSo+KGluZm8pLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBjcmVh
dGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKCkKLX0KLSAgICAKLXN0YXRpYyBSZXRhaW5Q
dHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hh
cmVhYmxlUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250
ZXh0ID0geyAwLAotICAgICAgICByZXNvdXJjZSwKLSAgICAgICAgTlVMTCwgLy8gcmV0YWluCi0g
ICAgICAgIE5VTEwsIC8vIHJlbGVhc2UKLSAgICAgICAgTlVMTCwgLy8gY29weURlc2NyaXB0aW9u
Ci0gICAgICAgIE5VTEwsIC8vIGFsbG9jYXRlCi0gICAgICAgIE5VTEwsIC8vIHJlYWxsb2NhdGUK
LSAgICAgICAgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRlLAotICAgICAgICBOVUxMLCAvLyBw
cmVmZXJyZWRTaXplCi0gICAgfTsKLQotICAgIHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KSk7Ci19Ci0jZW5kaWYKLQotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCi17
Ci0gICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRl
YWxsb2NhdGVkLgotCi0jaWYgVVNFKENGKQotICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVT
aGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpOwotICAgIGF1dG8gY2ZEYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0
YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwotI2VsaWYgVVNF
KEdMSUIpCi0gICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3
X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7Ci0gICAgICAg
IHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwg
dGhpcykpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShieXRlcy5nZXQoKSk7Ci0j
ZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotI2Vu
ZGlmCisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgeworICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4g
c2VsZi0+ZGF0YSgpOyB9LAorICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1
cm4gc2VsZi0+c2l6ZSgpOyB9CisgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVz
b3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYg
KCFyZXNvdXJjZSkgewpAQCAtMTM4LDkgKzEwNCw3IEBAIFNoYXJlYWJsZVJlc291cmNlOjpTaGFy
ZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSwgdW5zaWduZWQK
IHsKIH0KIAotU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJjZSgpCi17Ci19CitT
aGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkgPSBkZWZhdWx0OwogCiBib29s
IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCiB7CkBAIC0x
NjIsNyArMTI2LDcgQEAgdW5zaWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6OnNpemUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3NpemU7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IDdiNDdmNWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2
MGFhNGY3YzZjYjcuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsMTIgKzMzLDEy
IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKK2NsYXNzIFNoYXJlYWJsZVJlc291cmNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7CiBwdWJsaWM6
CiAKICAgICBjbGFzcyBIYW5kbGUgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
IGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBm
cmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCwxMiArODAsMTIgQEAgcHVibGlj
OgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5
PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJl
ZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCi0gICAgdW5zaWduZWQgbV9vZmZzZXQ7
Ci0gICAgdW5zaWduZWQgbV9zaXplOyAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBtX29mZnNldDsK
KyAgICBjb25zdCB1bnNpZ25lZCBtX3NpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGMwYjZlZjNmYTNhMmUxMjA0YzY3N2VjZjg2YWVjYmQxOWJiNjRkN2IuLjY3YjdlYjkwMzQwNTVk
N2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lk
IGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVy
KERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNO
dWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0y
MjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBj
SGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTIzNCwxMyAr
MjM0LDEzIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKHNoYXJlZE1lbW9yeUJ1
ZmZlci0+c2l6ZSgpIDwgYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyU2l6ZSk7CisgICAgYnVmZmVyID0g
c2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoYnVmZmVyU2l6ZSk7CiAjZW5k
aWYKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlw
ZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0
eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNv
ZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRh
KERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYg
ZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUo
KSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRh
dGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7
CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50
ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6
c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNv
ZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
cHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAt
NDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJn
dW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBp
ZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBk
YXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3
ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7
IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMw
MTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQo
KSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9
CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBA
IC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1
cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsK
ICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMw
MjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdh
MjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBD
b2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwog
Y2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2
ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3
OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5
NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFy
Z3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8
U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRh
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9v
bCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
V2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjVi
NjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVh
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRD
b2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxh
dGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShE
ZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51
bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7
CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNl
RGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJi
MGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2My
OWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEw
M2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgs
NiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5n
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNF
bmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3Np
bmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5
cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVT
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpX
ZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0
MWUxMTdhNjdkM2RlZTkzYjcuLjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjEx
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBn
ZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5j
dGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQg
Z2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9u
PGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBn
ZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBm
dW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmlu
ZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4
NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcg
KzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFt
X2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAg
YXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcw
LDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5n
JiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxp
emVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAg
ICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYmFkNDdjMDc2ZWNkYzVhOGZmMDkw
ZjY3MTE3ODE1YzdlYzlkNjQ0NS4uNmZhNDFmMzQ0Y2U2OWIyYzZjODIxMjlhNjAxMzhhMWI3YWRh
NjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC0xNTk1LDcgKzE1OTUsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29u
c3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRl
eHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3
a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGln
aGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4
dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhp
Z2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0p
OwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDop
XSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tI
aWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3Jl
OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6
aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2Iw
MjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMx
OTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNl
aXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwog
ICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3Rr
X3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAg
ICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3Vz
dG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1
NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhj
YjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+
PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5t
X3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTc0NzBjNjJjNzIwZGRl
ODJiNzkxNWI3YjNiNTgyMDIzZWI1MWVjNy4uYmJlZjY2NzM1MWEwYTJiZjU4ZGZhZjVhNzIxMDAw
NmEzMThlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLAogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJl
ZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigwKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9y
eUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUuZGF0YVNpemUp
KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogICAgICAgICBhdXRvIG5ld0NoYW5nZUNvdW50
ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1
ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOwogICAgICAgICBkaWRNb2RpZnlDb250ZW50c09m
UGFzdGVib2FyZChjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSwgcHJldmlvdXNDaGFuZ2VDb3Vu
dCwgbmV3Q2hhbmdlQ291bnQpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VD
b3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmlu
ZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJi
YTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZp
ZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9h
cmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1
YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAg
IFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0
SW5kZXg6aV0pOworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVz
IG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZm
ZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9i
amVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
IGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUs
IGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBp
ZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXIt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9y
VHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQs
IE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1f
cHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAg
ICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZElt
YWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAg
ICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdl
dCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5
ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihO
U1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAo
bV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEo
KS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3By
b21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5p
bF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBh
c3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBo
YW5kbGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVz
cG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVi
b2FyZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkg
PT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJy
ZW50UGFzdGVib2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21w
bGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgz
M2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAx
ZDQ1NmYzNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyAr
NDY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9z
aXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdl
VG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5n
UG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0
ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2Vz
dHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTNiYjZkNWRkMTBjYjYzNTNh
YWVmOTM1OGUwM2IwNDAwMzJmOTY3Ny4uODg4MjdlYjI5MTJhNTM0ZTkyNWJiNWZhOGY5NjIzYWVj
M2ExMzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzgs
NyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25G
cm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcg
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsK
ICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5v
bG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFk
ODBjMTZiZDEuLjU4NTQ3ZDg0ODgxZGM4MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1
MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFu
ZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShw
YXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5j
Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwg
bV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5
bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5
bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAg
fQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxl
dGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2Nv
bXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRh
dGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAg
ICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25z
ZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVt
ZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNv
dXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0
N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAK
IG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAg
ICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9y
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDcz
YmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQy
MTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUlt
YWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29s
IGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6
Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNo
b3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQw
YTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2
MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9z
aXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQK
ICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsK
IH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xp
YnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgp
OwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgp
LCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYThlOTBlNDI5YTZlY2UxMzY4
N2I5ZjkxYmM3MzgyY2E3Y2IwZmYzZC4uNjVlNWQ4MmEzNTdiY2JhYWY5NTA5MDM4NWQyYWVkYTJl
ZGYzNDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNh
blBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRl
cgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9h
cmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpk
YXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4p
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5NCw3ICs2NTk0
LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkp
Lm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAK
QEAgLTc1NjUsNyArNzU2NSw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2Vi
Q29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZp
bGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcq
KVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxl
IGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0g
ICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVE
YXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxm
IF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJv
dW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CmluZGV4IDQ2NzlkN2IwOTgxYWE3ZDNmY2Q5YmRlOTBlZDZmZjJhYzIzMmVlMTUuLmJhOTk1ZmI5
ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmlu
ZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdl
SGFuZGxlCiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgIGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5
QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogICAgIHBh
Z2VDbGllbnQoKS5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmQz
MzM4NjllNGUwMDEyZDI3ZDNmZTg1ZDg1ZTUzYTRlZDk2OTYwYS4uYTdmYjRhYWJjZjc0ZDFiZDcy
OTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQ
cm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDAs
NyArMjQwLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAgICBhdXRvIHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSks
IGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3Jl
YXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIGJvb2wgV2ViUGFnZVBy
b3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKQEAgLTI3NSwxNSArMjc1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAgICAg
YXV0byBzaGFyZWRNZW1vcnlJbWFnZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLmhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFy
ZWRNZW1vcnlJbWFnZSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBz
aGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXpl
KTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1hZ2UtPmRhdGEoKSksIHN0YXRpY19j
YXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBhcmNoaXZlQnVmZmVyOwotCiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051
bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6
Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlBcmNoaXZlLT5kYXRhKCkpLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGFyY2hpdmVIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXJjaGl2
ZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUFyY2hpdmUtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihhcmNoaXZl
SGFuZGxlLmRhdGFTaXplKTsKICAgICB9CiAgICAgcGFnZUNsaWVudCgpLnNldFByb21pc2VkRGF0
YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSwgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUpLCBleHRlbnNp
b24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1vdmUoYXJjaGl2ZUJ1ZmZlciksIG9yaWdp
bklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkx
YmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMx
LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0
aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRG
cmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFs
c2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3
OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUz
NTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAt
NjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJv
Y2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9j
b250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2Fy
ZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRl
TWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxX
S1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAg
ICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQo
KSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIg
cGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdl
KS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBl
KSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRh
LmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlw
ZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3Njhl
MzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0
YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAg
ICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVh
dGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAot
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7
CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBw
ZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJh
eS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShp
dGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEu
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlk
OTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdh
MTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2Um
LCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hh
bmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQ
YWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNv
cmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGlu
YXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBh
NDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxl
YXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAg
IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1
b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAg
UmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAg
IHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEg
PSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFz
ZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9j
bGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0
b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdO
YW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5
MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0
ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVs
U291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdh
ZGYwYjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhh
bmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxl
UmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5
NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFh
ZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1By
b2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5k
IGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVO
TElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXIt
PmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
ICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0
ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkx
ZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQ
bHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYm
IHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgp
KSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVx
dWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJM
UmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZp
ZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAg
ICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAg
IGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEt
PmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3
ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1f
bWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAg
IG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3
aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1f
cGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJl
YW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1
cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51
YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3Ry
ZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVz
cG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJl
YW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0
cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdt
ZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAg
IH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpG
aW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3
NTM5OTBmNmZhOWJkNDc0NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0
aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNl
OwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5p
cXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsK
IAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hv
dWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5
NTUyYTRkNjI4YmYuLmRlZDFkZTE5YzE5MjVkMzdiOGQzOTNlODVmNjVmNWI3M2EyYzI5MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93
YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlm
ICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURh
dGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9u
c2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAg
ICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAg
c3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDgg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51
bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmlu
aXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oU2hhcmVk
QnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlci50
YWtlKCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2go
KTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0
MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZh
dGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9v
bCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZh
bHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJl
c291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0
YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAg
ICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4
ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2Ut
PmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3Bh
Z2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9h
cmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5
ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5
YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRv
U3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3Rl
cChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIz
ZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihs
b2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNWQwNWMw
ZWFiNzZiNjJiNGY4MzZjODU4MjIxZmVhNDQ3MmUwNTU2ZS4uNmYzZjU2NmM1MmYxZTM5ZGVmMDBi
NWYzMTlmZWJhZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
QEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBj
aGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsK
ICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRl
cygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92
ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0
byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQu
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMTQ1LDcgKzE0NSw5
IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmCiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1
ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9y
eUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9y
eUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIHZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpAQCAt
MzIyLDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAg
IElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA0LDcgKzQwNiw3IEBAIHN0ZDo6b3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBp
cGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBh
Z2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKQEAgLTQxMiw3ICs0
MTQsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1l
bW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFT
aXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlw
Y0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2
ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgwOGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0
YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4
ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQz
ZTgwOGJhYzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2Fk
ZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVO
YW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBw
YWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAs
IG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0K
IApAQCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmlu
aXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3
ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1
ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5n
ZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0g
ICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQg
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3
Y2I1M2RhODcuLmFlMDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAog
CiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYkZyYW1lOwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmlu
ZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIx
Li40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
RWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCku
bnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVm
ZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1h
Z2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXIt
PnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpj
b3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAg
IHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBh
cmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRh
dGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBh
dXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
YXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBi
MTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMs
NyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3Vy
Y2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRl
Y29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZy
YW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFjYTljMjNkNjc3ZjAzYTI5YzYwZjViMmE4YmFj
NjgwZDZiNWM4NDMuLjJiNzRmNzUxNTZhYmY2YzAxMTA4MDAxMDFlYzdhNWY3MDhkMGJlMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzM3
LDcgKzc3MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xs
VG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJl
ZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBI
aWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRh
dGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdo
dDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhp
Z2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoc2hhcmVkTWVt
b3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/
IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAg
ICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0
NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZy
YW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRv
cigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1l
bW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYx
Yjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
QEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0
c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQot
I2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAg
ICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0
c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25z
dAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRF
Uk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNl
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFl
MjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
CkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09M
KXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFn
ZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVs
ZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFm
YTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7
CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpE
T01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRG
b3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1
NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEy
NWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQy
LgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdl
YktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2
YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThl
NmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUs
MTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5k
aWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRl
bUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0
TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBh
NmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdl
dFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUp
OwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRC
dWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5
NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
QEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdl
YkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmlu
ZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZl
YWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAs
NyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRv
Y3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkg
eyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291
cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0
YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEz
MzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRk
NDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdl
LT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdl
IGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgp
IGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRk
T2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXIt
PnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVj
dGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdl
MzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMs
MjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRl
Y29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAg
IGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAg
ICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAg
IE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVu
Y29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
dXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1l
VHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7
CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVz
cG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwor
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURh
dGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNl
VVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJl
c291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2Rp
bmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAy
LDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
LT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAg
LSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0
aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxs
cHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8g
Y29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDAp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRl
eCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJm
YzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0o
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVh
bShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcg
QEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09N
UHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlT
dHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4
NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVh
bSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxN
ZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93
bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwx
MCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBN
ZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5
U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+
TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3
MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4
NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9v
cHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdl
dEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwor
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdl
dEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwog
CiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIp
KS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1
OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdm
NTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsy
NjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBj
MTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQx
NWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmln
Z2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5
N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdl
YkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAg
IGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1
cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0
YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJ
bnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5j
b3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRh
dGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIw
ZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1
YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVz
b3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJj
ZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9y
eVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5
NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFz
cyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAg
IHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAg
IC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5
SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2
M2RkZDgwN2RjMWJkMzk3NmU2ODgzNmY5M2M2NDM5MGI1MmNlZTRjLi42Y2NmMjk3ZWQ3YWViNDFl
YmMxOTcwMjdmOThjMjg0NGQ5OGZlNmM4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjggIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVp
bGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1j
b250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84
NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorCiAyMDIxLTExLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Ygc2Vs
ZWN0aW9uIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMx
ZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uNjFhMTFmZjViZjU1YWEyZDk4ZTVi
ZGFiOTdkYmIzZjlkNjFhYTdhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAg
LTQzLDUyICs0Myw0NSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwo
YnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBB
U1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9
PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVF
KFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1Rf
R1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9
PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCks
IGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVm
ZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6
ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1
ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgi
YSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChi
dWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5k
YXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkg
PT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLmdldCgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2
LDEwICs4OSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFb
XSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0
RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWls
ZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29k
YnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRD
b25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRl
bmF0aW9uKSkpOwpAQCAtMTExLDEwICsxMDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAw
LCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2
ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1
ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0
b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBh
YyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJv
aW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBx
dWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVz
dERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwor
ICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBk
YXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAg
ICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJU
X0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAo
Y2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAg
ICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGgg
KiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEu
c2l6ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHko
KTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5n
ZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUp
OworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEo
bGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIy
LnRha2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAg
IC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1
aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVy
MS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1Rf
TkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVk
QnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0
aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNl
dCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNU
X0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0Vt
cHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc1LDYw
ICsyMDQsNzAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2In
LCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdo
J307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAg
Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9
IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScs
ICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAn
aycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgw
KTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8g
a2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1
ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0
byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJj
ZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBj
aGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZl
cihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCks
IGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6
ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgp
LCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUo
KSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwg
ImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBj
aGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsK
ICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10g
KFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBi
dWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0g
bWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVm
ZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEu
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdk
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9
LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwot
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4o
eyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9
KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAn
YycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycs
ICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7
ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9
KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAg
ICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShy
ZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNl
dCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXIt
PnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUz
MGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdk
NmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0IEBAIHN0YXRp
YyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQs
IE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRh
QXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5p
bCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
d29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9E
YXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVp
bGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxs
b0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZp
bGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6
dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
ICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFT
ZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRl
czoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIq
KWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwogCiAg
ICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIg
bGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29y
bGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0RhdGEs
IHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0
YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVu
dENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgpKQor
ICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0Rh
dGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIgcG9z
aXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAoYnVm
ZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERh
dGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1aWxk
ZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRh
ID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4
cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9IGlu
Y3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRlID0g
YnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBsYXN0
Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwogICAg
ICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpb
QCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAgICAg
IEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445505</attachid>
            <date>2021-11-30 19:39:43 -0800</date>
            <delta_ts>2021-11-30 22:39:00 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211201143941.patch</filename>
            <type>text/plain</type>
            <size>502049</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgzMDRiN2VkMTRkZWQz
OWExMjE3OGY5ZWIwMTY2YzZlY2QxMGQyMC4uYmVjY2Q3ZTA5YTM5NTQ2YTk4YTNiMjI4YTZjOGU5
NjRjMzM1Mzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxMSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBi
ZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZl
cmVkRGF0YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICogbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVk
QnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051
bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3
YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWlu
ZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAg
ICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVl
IHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisg
ICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVy
IHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hh
cmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5
cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQg
dG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJl
ZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJl
CisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2Vk
OyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4
cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBU
aGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZl
cnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAg
ICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90
ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1p
dCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBk
ZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBj
b3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUK
KyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNv
bnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJl
ZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBo
YXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFs
IGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQu
CisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ug
b2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVu
ZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0Miwg
YSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3Jl
YXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBi
eSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJ
REJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2Nl
bmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZv
ckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZG
b3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0
aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxp
emVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0
YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
VUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdS
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6
Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5k
RmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxl
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJs
ZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNj
cmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJv
YXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEtMzAgIHVqd2FsIGtvbmVy
dSAgPHVqd2FsLmtvbmVydUBzb255LmNvbT4KIAogICAgICAgICBGaXggUGxheXN0YXRpb24gYnVp
bGQgYWZ0ZXIgcjI4NjE3MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MDZkNDk3NDkzMjE0ZjY0ZjIyMWE0NDI2Njcz
NTZhYmU1NGI4MDVmLi5hOTA5NDFkNDMxN2RiZjYxNzRkYmRiNDZiODBkMTI4ZmU3Zjc5YjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIK
KyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxT
Y2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJl
YW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZm
ZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5
Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAg
KEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBD
OjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0
YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNX
aW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6Cisg
ICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhp
Z2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFG
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNl
bmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1l
bnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVh
dGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFu
ZGJ5IGNvbnN0KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBT
aGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBk
aXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAg
ICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAg
Tm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5
IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdo
ZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEg
Y291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZl
cik6IFJlZmFjdG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBj
b2RlIGFuZCB1c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVi
b2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFy
eSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0
eS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisK
KzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGlu
dG8gYSBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBh
IFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1l
bW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBv
YnNlcnZhYmxlIGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlv
bi4KKworICAgICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBT
aGFyZWRNZW1vcnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90
cy4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtlIFNoYXJlYWJs
ZVJlc291cmNlIHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBTaGFyZWFibGVS
ZXNvdXJjZSBvbmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVkTWVtb3J5IG9i
amVjdAorICAgICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcuIERlbGV0aW5n
IHRoZSBvYmplY3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgc2FmZS4KKyAg
ICAgICAgTWFrZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRmb20gc3Bl
Y2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQuCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRl
Y29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VU
b0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmls
aXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVs
bGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5k
ZXgpOgorCiAyMDIxLTExLTMwICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGFkZCBFeHRlbnNpb25UYWJBY3RpdmF0aW9uIGRpYWdub3N0aWMgZXZl
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MDFkNTAxYWIzODAxN2YxZDhmOWU4
MWM5YmVmZGMyZDdmNmYxNmZlLi5mMzUyOWRlYjcyZjFlZjVkZDdlMTg0ODliMDRhYmRhZTRlNDM2
OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEt
MTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0
aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBh
bmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVz
ZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50
YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
OgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgor
ICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9z
dHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUgdG8gY2hlY2sgbG9jYWxp
emVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCmluZGV4IGNhZDYxYTc3YTAxMGNkZDg3MGYwYTVjNjdkMjEzOTY5NjZiYjYwYWMuLjUyOTQ5
MzE5ODI4ZTRlMTU2MzgyYjkzN2FmOWJjMmNhNWViZTQxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAK
KyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3Ry
ZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNl
OjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJj
ZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTEt
MTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IEFYOiBVc2UgT2JqZWN0SWRlbnRpZmllciBmb3IgQVhJRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVm
YTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJk
OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAgIFN0
cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0byYgYnVmZmVy
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJr
dXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAg
ICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZm
ZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4
MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdl
L3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgp
IGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlv
bihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2Rv
Y3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRh
LmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUw
NTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQz
NjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRh
OmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0g
W2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0p
IHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5T
RGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5T
Qml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZl
MTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNp
emUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsK
ICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBb
Jl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9
IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggOTA5
OGUwNWFmNGM4NDMzYjNkMTNiMzk1NjUwNjRhOWMxNTQzMzg3ZC4uODY3NTBkZmVlZmVjNTU1Y2Fm
OWExYmJmODUxMDYwYTU5YWZmMjg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVj
dG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hh
bmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9u
c2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0
aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNw
b25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5j
b25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5k
bGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3Bv
bnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMjk4LDE1ICsyOTgsMTUgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZl
Y3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSBy
ZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3Jk
UG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAg
dGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRh
dGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0
LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNl
RGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0
PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlm
IChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNl
cHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpw
dXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJl
ZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlm
IChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCks
IHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lk
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzQsNyArMzc0LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2
ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQo
KTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9u
c2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyks
IHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODIsOSAr
MzgyLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBk
YXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXgg
MTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2Iy
NTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZp
bmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
IAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRj
aFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBO
bywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXgg
MjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4
MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJv
ZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVk
Q29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
c3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0
Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYg
Ym9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1E
YXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVy
LmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNl
Qm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5
NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNh
YWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0
VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
VVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9u
c2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpu
dWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBS
ZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBX
RUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25z
ZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJl
NDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1
MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMo
Y29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1
ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1
dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVm
ZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5n
KGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkp
OworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMu
LjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3Ro
ID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBi
LmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1
c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAg
c3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVk
aWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUo
KSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4g
S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7
IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0
YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhl
Zjk1NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJs
b2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwog
dm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZm
ZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3Vt
ZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCks
IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1f
Y29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRU
eXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhl
bSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3Jt
RGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURh
dGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5
KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJl
dHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hC
b2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7
CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5
NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAg
ICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0
Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0
Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNl
YXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVu
Y29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5
KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlm
IChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlC
dWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5
KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNB
cnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJl
c3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmll
d0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdm
NGIwNGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIz
YjQwMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0
YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFr
ZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2
b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92
ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYy
YjNiLi4xMWE3M2YzNDVlODJkOWU3MDg1OThhYTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAt
MjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZm
ZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykg
ewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBA
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBB
U1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRC
dWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVk
QnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
ewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUo
cHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRh
dGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRo
VHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAg
ICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYs
NyArMzA4LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdl
Rm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8g
Zm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6
ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRh
LCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewot
ICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBtX2J1ZmZlci5y
ZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKLSAgICByZXR1
cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCkBAIC0z
NDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRvIGFycmF5QnVm
ZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBu
dWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFr
ZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1
MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpu
b3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZm
ZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZN
b3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAK
IFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzY0LDgg
QEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNp
emUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZm
ZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
ICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNl
ID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJj
ZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3Nv
dXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwog
fQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlv
biYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJk
NGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDgg
KzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7
IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsg
bV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtl
RGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigp
OwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3Ry
aW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9t
aXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVk
QnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5k
ZXggNWQ0NTJjZTI4OGNlZGMwMjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlh
MDY4MzBlNjRiYWM1ZDMxMDBjODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNo
dW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Bh
biBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRh
Q2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVX
aXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9k
eSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAg
ICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0Jv
ZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9k
eSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlk
MTZmZGU2MThjY2ViMWQ4Yzk0Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUw
ZWExODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7
CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZl
cj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNw
b25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1
ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUy
NTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+
c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAg
ZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3
NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhi
MWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29u
c3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMy
MzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNv
ZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1
cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZk
NTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRk
Y2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywg
QXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25z
dCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVu
Y29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0
YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAg
ICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtl
eSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9
CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhf
dComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQy
NC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRo
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5
UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25z
dCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdl
ZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVl
YzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
QEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3Rp
bmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRy
YW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdp
bigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJ
REJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFs
aXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZl
IGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12
ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgo
KSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQ
YXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9i
amVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1w
dCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24i
X3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBp
biBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8m
IGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAg
YXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAg
IGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMs
MTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQ
dXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVz
LCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1
dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBp
ZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4
IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZh
bHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1
ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2
NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwg
IXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUg
d2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAg
ICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYg
KCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3
ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQo
U1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQg
ZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0
aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5z
YWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4g
YW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qg
c3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
CiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgp
KQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0
byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2Vy
QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJ
REJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5n
ZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAg
ICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAg
ICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpA
QCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VS
VChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXgg
JiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0
byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVw
IG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVj
b3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
CiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5
LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxv
d2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dl
cktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2Vy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0K
IAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURh
dGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1
cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBw
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXgg
OGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEw
YzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2
OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmICht
X3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBT
UUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBz
dGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcg
KzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3By
ZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIp
ICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFy
Z3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3Yjk0Yzll
N2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNl
MGI4NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkK
ICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1v
dGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNz
YWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3Jl
bW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01l
c3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQw
MDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQx
OTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xp
ZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAg
ICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewot
ICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJp
bmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0
KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKaW5kZXggYWU3YjJlMmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uMDI4
YTkxOTg1ODE3ZmQzNjllNzBmNGNhYWI5NGUxYTE0ZjVkMGMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJM
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEg
PSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFs
c2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBt
X2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAg
IG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JD
YW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5y
ZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRl
cmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAg
IH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNy
ZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtl
KCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNl
LnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDM2MzkzYTNiNmY5MjdmZjA0ZmJjMjVlZDU3YWRkYWZj
MzkyOWVhZjMuLjljNDcyNmYyNjQyZGYwMWQzM2FiY2RmNGUzMWVjODJmNGM5YTdmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3Vy
Y2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVz
b3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRl
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
aW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQy
NTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0Qu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3Vy
Y2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJN
b2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0g
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5
NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGlj
IEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9h
ZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4
Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5v
dCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBb
Jl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1
YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0
YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1f
Y29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAg
bV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1
b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAg
bV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAg
IG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMo
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCpt
X2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAg
ICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygp
OwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1
ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRh
YmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJp
bmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAppbmRleCBjYWRjNGEwNTk0YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQz
OTk1NGYxOWJhNGI4MjM3YzllNWRhZWQ0MWU0YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRG
YWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NF
UlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZH
Rm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2
Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAg
ICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRP
VEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250
LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygp
KTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5E
b2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NG
b250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBp
ZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRl
U291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRp
YXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgo
KSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFw
cGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIz
YjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRT
ZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBA
QCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENh
cGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZh
Y2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdl
YWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250
cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRl
ciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Z2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1f
aW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0
Li5mYTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwot
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjEx
YzIyOGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291
cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFz
cyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRp
dENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxv
bmVJbWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5
cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmlu
Zz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0
RGF0YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5I
VE1MRm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQoRWxlbWVudCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlz
aWJsZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Cisg
ICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYK
ICAgICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRy
aWJ1dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAw
NmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4
OWU5OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRp
ZmllcjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
aW5kZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAw
YzY1NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6
OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICgh
YXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRh
V2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVT
IGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRl
ZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAog
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAg
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRh
Rm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMs
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVj
dG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lk
IEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBk
YXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAg
ICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAg
IG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEy
ICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJE
YXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRX
ZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewog
ICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
bV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRh
UmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAK
IC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2Zl
ciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZp
c2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVT
dHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZE
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYg
KCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRG
REZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9
XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJU
RkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAg
ICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgw
OGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5
YjViMTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRB
dHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAg
ICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkg
ewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAg
ICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIp
IHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVu
dExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAg
IGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJl
c291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2Zp
bGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxl
bmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsK
QEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmls
ZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYg
KENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAg
ICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiBy
ZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJi
OTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjcz
MDk4MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9p
ZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAg
ICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9
OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+
dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
bmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RF
bGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0g
ImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RG
TW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUt
PmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcg
KzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RN
YXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5
cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1
cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1h
cmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFp
blJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9Owog
fQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3Vw
QW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3
ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJl
cGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpm
cm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZy
YW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1l
TWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1
bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01J
TUVUeXBlQXNIVE1MKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdz
KCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnBy
ZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYg
KCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJv
b2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJm
MDliNzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0
ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50
JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVu
Y3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUg
c2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2Vk
IGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1Mg
WCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2
ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBT
dHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVz
aXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50
cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhG
VFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGlj
IGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShj
b25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1w
bGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCkt
PnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1
bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
c3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQg
cGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVu
dCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBn
ZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3
MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uOGE2MTUwNDM5MTA5OWZmZTJlNGEwNmU3NDg5NmVm
ODg4ZWQwNDYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4
aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSA1MCAqIDEwMDAgKiAxMDAwOyAvLyA1ME1C
CiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVl
c3RJZChyZXF1ZXN0SWQpCiAgICAgLCBtX2xvYWRlcklkKGxvYWRlcklkKQorICAgICwgbV9kYXRh
QnVmZmVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAt
NjQsNyArNjUsNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpyZW1vdmVDb250ZW50KCkKICAgICBpZiAoaGFzRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCgh
aGFzQ29udGVudCgpKTsKICAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Ci0g
ICAgICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YUJ1ZmZlci0+cmVz
ZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODIsMzcg
QEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250
ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAh
bV9kYXRhQnVmZmVyLT5pc051bGwoKTsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFC
dWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAg
ICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlmICghbV9kYXRhQnVmZmVyKQotICAgICAg
ICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgp
OworICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB1bnNp
Z25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAKLSAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gYnVmZmVyID0gbV9kYXRhQnVm
ZmVyLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBi
dWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRF
bmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3Ro
KTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAg
ICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwg
ZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBu
dWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0
aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5kNzRl
ZTEwOTMzZDdlZTRlNWY3ZWY5YjdjNDA5MDlmZTk3ZDA3YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC00MSw2ICs0Miw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0
YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMDMsMTAgKzEwNSwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0
YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAg
ICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsg
fQorICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEo
KTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAg
ICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBk
ZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksNyArMTIxLDcgQEAgcHVibGljOgogICAgICAg
ICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOworICAgICAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1f
Y2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJj
ZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4
OTM3NjFkNzFlNGM3NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1
OWRhNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNo
b3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRv
IGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291
cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsK
ICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0
ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIx
MDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQw
YTg3ZTA2ZjMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5z
cGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3
aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUt
PmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAg
cmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rp
bmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBT
dHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNv
ZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250
ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0
RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRl
bnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRh
MWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZl
NDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIz
Myw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZl
ciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNl
aXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNl
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNv
dXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFm
NzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRS
ZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIo
KSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9j
dW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZs
aWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNy
ZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBm
NzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2
NTUwNTI5MWNkNmZhNzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcApAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNy
ZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAg
ICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNv
dXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFp
blJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVU
eXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1
bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWlu
UmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVE
YXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogfQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5
VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRB
cmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRl
cjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hp
dmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIo
KS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAg
Y29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwor
ICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29u
TG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0
NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4
NzY2YmYxMWNiNjRmZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBj
bGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xh
c3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3Qg
Q3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0y
MjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJj
aGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNo
aXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+
IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJM
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxl
QXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNl
bmRpZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2
ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURh
dGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dz
QWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIu
LmM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUs
NyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtT
dGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlm
ZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8
UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBj
YzgzZGM1OGE5YTJlN2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVk
MDg1N2M5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYs
NyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rp
b25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsg
fQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmlu
YWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4
MDU2NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlh
YTdiMDE0NmUzMDc3NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtMzEwMSw3ICszMTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZy
YW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0K
IAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlh
bFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGll
bnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUu
ZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVy
YXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBy
ZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5h
cHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwg
ZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgp
LT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0
LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJz
LCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAg
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5n
KCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3Jp
cHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4
ZGRkYjEuLmE1MmQ3ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZy
YW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNz
IENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyAr
NzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hl
UG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBs
b2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQ
SGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291
cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xp
Y3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1l
T3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRB
dHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxs
cHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxs
b3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODVi
YjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjE0ZTVmZDFkMGQxYjIwNTMzOTY4
YTQwNDZhMTQ0NDQzMTYwOTE4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtNzYsNiArNzYsNyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVO
VElGSUVSKFJlc291cmNlTG9hZGVyKTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcihG
cmFtZSYgZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9mcmFt
ZSB7ICZmcmFtZSB9CiAgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCkuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKSB9CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBvcHRp
b25zLmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZl
cnNMb2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1fb3B0
aW9ucyB7IG9wdGlvbnMgfQogewpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0gICAg
bV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwog
ICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3
ICszMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERh
dGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFs
cmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEg
PSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwy
NCArMzM1LDIzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5k
YXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0
YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5
bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZm
ZXIpCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBs
ZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9h
ZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0
YS0+cmVzZXQoKTsKKwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5h
cHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5k
KGRhdGEsIGxlbmd0aCk7CiB9CiAKK1NoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291
cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQo
KTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAg
IGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7Cisg
ICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6Omlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJl
MWNhNjRlZTQyYjkxNy4uNDA2NTAxZWU1MzE1YTg2ODYxMWVlY2UyNmMxOTQ2OTU1ZTFlNzkzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBj
bGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVz
b3VyY2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJs
aWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNs
aWVudCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRC
dWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEo
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpA
QCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJl
ZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNi
OWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIy
ZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0
YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3
MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZm
ZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVm
ZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9
KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsg
bV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRh
LmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEu
Y29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
CkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4Nzhh
ZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFm
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5p
ZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2Yg
IkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1h
bmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBw
bGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFy
dCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgz
NzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFh
MjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVS
TCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgp
CiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGll
bnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVy
IHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3Vy
Y2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
Citib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExv
YWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3
OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRh
KQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGly
ZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNh
cHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQs
CiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUg
dXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBj
YWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3
MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEw
NCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNr
Rm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNh
OWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNl
KCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGln
dW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1
bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1
MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0Mzdm
NDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQz
MGU2MzY1OTUuLmJkYTJhMmM3NjY5ZTE4YzUyNDdhYzgwYTEyZjE3YmQyNmIzNDhlNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcApAQCAtNzg0LDcgKzc4NCw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2ln
bmVkCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0KICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1w
dHkoKSkKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgRmlsZVN5c3RlbTo6cGF0
aEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJl
c291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRo
KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0g
ICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRl
bWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODc4LDcgKzg3Nyw3IEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2UsIHVuc2lnbmVkCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVl
IHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlm
ICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7
CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJ
RChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJl
ZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hl
KHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVT
dGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAg
IGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5C
bG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0
cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcg
bG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0
ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAg
ICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQg
YnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7
CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0
byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAt
MTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5j
bHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYg
KCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0
YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgp
KSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwg
TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRh
LmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJl
c3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlz
dDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNw
b25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJl
c291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9
IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENG
U3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0g
Y3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9u
c2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1
NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7
Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwot
ICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNG
RGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7
Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yo
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRh
KDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7
CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBl
SUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMg
bm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFy
Y2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9u
YXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3Vy
Y2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJj
ZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAg
Ym9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJm
cmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBj
cmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJh
bWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJm
cmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6
OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBz
a2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0
byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgp
OwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8g
aXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgp
KQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9j
dW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAor
CiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNh
biBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2
ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJr
dXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2lu
aGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkg
KyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRj
YjJkMGJkYjgwMTVlLi43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
fQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVu
dCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNv
bnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDog
ewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEo
KSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERl
Y29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFz
ZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAg
ICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRl
bnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFy
eToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkp
OworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50
LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBV
UkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2
ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29s
dmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAg
ICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1
dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNl
YTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOwor
ICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYu
LjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgx
LDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChN
SU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVj
b2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJl
Z2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkK
LSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwot
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNv
ZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0
ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBt
X2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFu
ZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAg
ICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVj
b2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2Fp
biBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2
MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02Niw4ICs2NiwxMyBA
QCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xp
ZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0
YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDAp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5D
b2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCku
dG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkg
ewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVy
biBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVz
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAg
IFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMg
fTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7
CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZl
ciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZv
aWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMp
OwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQog
ICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0
YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3Jt
RGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwg
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZv
bnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4
dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
OworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
ZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24o
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmlu
ZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2Jk
NDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENh
Y2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
SW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAg
Ym9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAg
IHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1l
KS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5l
ZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQot
ICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9J
TUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1l
bnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkp
LmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRv
Y3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhl
IGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBz
dXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUz
ODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5
NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUlt
YWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApp
bmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNi
OGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0g
ZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5j
b2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7
CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFC
dWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAg
ICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
Q2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1l
bnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgz
MTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUxOWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
QEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJG
aXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJl
c291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2
b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47
CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29k
ZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0
YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAg
ICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkw
NDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5
NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7
CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1
YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4
NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3Rh
bEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3
ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VD
bGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4g
bV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZh
dGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBh
cyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJl
OTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2Fm
Njc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcg
ZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VF
bGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRy
LCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0
Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwog
ICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRl
eCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThh
MmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZH
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQog
CiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5T
Y29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQt
PnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRl
bnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNh
d0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAg
ICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVt
b3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29u
dmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVu
dCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRG
b250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9u
dC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApp
bmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2
NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBT
VkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RG
b250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFs
U1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVu
dDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgy
ODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEw
MjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhh
c2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAg
ICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAx
MjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVl
NDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBAQCBDYWNoZWRUZXh0VHJh
Y2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6
OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9k
YXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVu
dD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0
NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjExZmQz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0
OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRh
LT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAo
ZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0
ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
QEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNw
b25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmls
ZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lv
bklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNl
KENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJl
c3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNo
ZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpp
bmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRm
MDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0Miwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25k
cyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZv
cmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVN
b25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25p
dG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRS
ZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1h
cHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBE
aXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tD
YWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxl
QmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VC
ZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlz
a0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlD
YWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBt
X3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2Zj
Y2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDViYjdhZjkwZWJkYTQ3ZWYwMDJlYjg4N2Jj
ZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3Mg
TGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVu
dCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFByZXZp
ZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vh
a1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNo
ZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9j
ZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhk
ZDAwOTdlZjJhNTczNC4uNTJmZmQ1MzdiZmQ2MmZmNjdkZWNkNDY0YjY1ZmI2YzkwNTcwNjJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSk7Ci0gICAgbV9vcmln
aW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEtPnJlc2V0KCk7CiAgICAgcmVz
b3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92
ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jl
c3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBj
CiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3
Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAg
Y29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdM
b2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3
IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0
OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29u
dmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAg
ICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxl
TmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0
YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtl
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRl
ciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBs
b2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5n
UXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4
IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmEzNjNiN2IwMmNiM2M5
NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9N
UGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZy
YW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVk
aXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRD
aGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjli
YjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIz
ZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29u
c3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQg
c2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCBy
ZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVu
dDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxs
b3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHls
ZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVT
aGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAxYTEyMTBm
YTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5kNzUwY2ZmOTY0MjMwMDUyZjc5OTVh
MjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1l
KEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9
IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCks
IFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2Vz
LmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5z
dWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVu
Y29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwog
ICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDogbm9k
ZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNw
ZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgVGV4dEVuY29k
aW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAg
ICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMu
YXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNv
ZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJf
cywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3Nz
VGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAg
ICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgyLDcg
QEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSog
aW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwg
V1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9y
ZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdi
OGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3Vy
Y2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihW
ZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMw
NmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUy
NzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcg
QEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmls
ZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURh
dGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApp
bmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1
MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNo
YXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7
Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcx
LDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQg
bG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3Bl
bmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwog
ICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmls
ZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChX
VEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAo
bV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5z
aXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBp
ZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFu
ZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIz
NTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1
NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVj
b2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXks
IGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFhMTZmMzQyYzE3
NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2ExM2Q3MzkzNGFhMDQzNmVlN2Y3
OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2MSw3
IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
IGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1
Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJk
V2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21h
cnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRh
dGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2Ugewog
ICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2Vu
ZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgog
I2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxT
dHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xp
ZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGll
bnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXpl
IGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiBy
ZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3Ry
aW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJl
YWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5
ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1c3Rv
bURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQgY3Vy
cmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5LDcg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8IHNh
bWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMo
KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5j
b2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVj
b2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQs
NyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBh
c3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZl
ci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMw
My4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2ICszNCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewpA
QCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYg
b3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIm
Jik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3
MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5hNzg4ZmI3MzBlZGMxYzNlZmFk
ZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0
ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0
aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFs
bFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFz
dGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1
MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0
ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJB
cmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9y
bWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8
U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUwMDI0M2JiNDZmZjU5
ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
NDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUlu
Zm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1Ymxp
YzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1Q
YXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5n
JiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0
cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29u
c3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3Jp
dGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0
Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGVi
NTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9y
JiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFyZWRC
dWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgp
OwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0y
MjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2
aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJE
aWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0Vt
cHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBj
bGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0
YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhh
c0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBi
YTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgs
NyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07
CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9w
cmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjky
YzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3
NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2Vk
QXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBz
dHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
I2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLmJiZTM5
MjNhMjA3YTBlOTM2MTE3MzA3NGY5NzYwN2ZhZDA1ODdkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAg
ICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsK
IH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYg
cHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHBy
b3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0K
IAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiAjaWYgVVNF
KEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1h
cHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7CkBAIC03MywyNiArNzgsMTAgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVk
QnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkK
IHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVk
QnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmls
ZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5n
ID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2Vz
czsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmls
ZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBw
aW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19
Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArOTIsMTYgQEAgc3Rh
dGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lk
IFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsK
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRv
IHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJl
bW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1
c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8g
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29u
dGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAo
IW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50
LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRh
KG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRh
KSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6
OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJU
KGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21l
bnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE4MSw2ICsxNTYsMjEgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZl
cjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91czsKK30KKwogUmVmUHRyPEFycmF5QnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBh
dXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpAQCAtMjAyLDEwICsxOTIsOSBAQCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25z
dAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIG1f
c2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21l
bnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21l
bnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1l
bnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBl
bmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6
ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDIsMjYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2
ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwogdm9pZCBTaGFyZWRCdWZm
ZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpAQCAtMjQzLDE3ICsyMzUsMTIgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9z
aXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1f
c2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxl
bWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAg
IGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlv
biwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRz
ID0gbV9zZWdtZW50czsKQEAgLTM1NSw4ICszNDIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0
byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7
CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5B
QkxFRApAQCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNv
bnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdt
ZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQp
IH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3Vz
QnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkg
fHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3Vz
QnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQo
KSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3Nl
Z21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7
Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVyKFdURk1v
dmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcp
Cit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
IHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBw
aW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQ
YXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgp
IGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisK
K2NvbnN0IGNoYXIqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25z
dAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOwor
fQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0
byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwK
QEAgLTM5MSw3ICs0MjcsNyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0
YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Rmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CkBAIC00MDIsNyAr
NDM4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29u
c3QKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6
ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAgIHJldHVybiB7eyByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CkBAIC00NTYsNyArNDky
LDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBv
dGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29u
c3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUo
KTsgfSwKQEAgLTQ3NSw3ICs1MTEsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFi
bGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6
ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAq
c2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDk5
LDE2ICs1MzUsMjEgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEo
KSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5T
ZWdtZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50Owot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdt
ZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1
cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4g
c2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAg
fSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRv
IGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNTc1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRm
OEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5r
KHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4
IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLmRhM2QyMmYyMDNkY2Jj
NTVjYzc2NjgzNDVkZGUwYjJlYmMyZTI3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAgY2xhc3MgRGVjb2RlcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERh
dGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBp
dCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNv
bWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNl
Z21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZp
bGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9v
bCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmls
ZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cisg
ICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5
KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7
Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFS
ZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRl
cygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdC
eXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9
CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21l
bnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5
LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGlu
c3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rp
b24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0K
LSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhf
dD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQog
Ci0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2ls
bCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVy
IGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwotCi0g
ICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVy
J3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBz
ZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwot
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVj
dG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVjdCBQcm92aWRl
ciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1
bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkg
YSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVy
ZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUg
ZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNo
cmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBib29sIGNvbnRhaW5zTWFwcGVkRmls
ZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotCi0gICAgICAgIHN0cnVjdCBQ
cm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwot
ICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQot
Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OworICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNlbmRpZgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0gICAg
ICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxW
ZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNp
ZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBE
YXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYK
LSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAg
IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAg
ICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAg
ICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsK
ICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAg
ICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNv
cHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRv
IGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5z
dGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICAvLyBDcmVhdGVz
IGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0
byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZm
ZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5
KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICB2b2lk
IGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdl
YkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hl
biB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1
ICsxOTcsMTgxIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3Rv
cjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29u
c3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0K
ICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8g
YmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4K
LSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRh
KHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAg
IHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIp
OyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0Owot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVk
OgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNl
Z21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYp
OwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRl
cyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsK
ICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXpl
IHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYg
VVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICop
OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENG
RGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50
byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hh
cmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBW
ZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1
ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAg
ICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6
ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNp
emVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21l
bnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29t
YmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIg
aXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250
ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9m
Li4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8
RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2FsbCBhcHBlbmQg
b24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdoZW4gY2FsbGVk
IGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxldGU7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAg
ZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VG
aWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikK
KyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOworfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVs
dDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJl
ZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJl
IGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmICghYnVmZmVy
IHx8IGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVu
ZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50
IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVm
ZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAg
ICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBw
ZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7CisgICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAg
ICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lk
IGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOwor
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051
bGwoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNF
bXB0eSgpIDogdHJ1ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1
ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0
KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkK
KyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2OCwyMSArMzgxLDIx
IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAg
ICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwg
c2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1Np
emUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBz
aXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0Owor
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0Rh
dGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9z
ZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBj
b25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZl
cihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5
NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWlu
Z0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQo
KSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJ
bmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1Bs
YXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1
dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
aW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0Fy
dHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5m
by5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIz
YzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2Nk
OTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29k
ZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgp
CiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8g
ZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92
MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4u
ZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1Ymxp
YzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAg
ICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNp
emVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29s
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi5hMTJhNzQx
YTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBh
bGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBm
dW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24u
CiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5z
aXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFp
blB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEp
KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAg
bV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZj
MDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4
M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2Fy
ZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJk
Ojp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykK
LXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYg
dGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJ
RkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIu
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFn
ZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6
QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYK
IApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBl
c1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4
YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpA
QCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAog
QGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6
KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihj
b25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0
IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9z
aXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9p
ZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2Vi
Q29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nh
c3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRh
dGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZE
YXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAg
ICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+
Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291
cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJh
eT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAK
LVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0
YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFs
bG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIy
Yjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05P
YmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcg
dGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkg
fTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAg
IGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZk
ZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMy
NGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4
LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlz
RW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xOTYs
NyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERh
dGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQs
OSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVjayBpZiBp
bml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50IHx8
ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50
YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29u
dGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBk
YXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAg
ICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAg
ICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAog
ICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBp
ZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAg
cmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
QEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhl
IGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJz
OgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVu
dCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2Vx
dWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNo
U3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEu
c2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkp
KTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7
CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwot
ICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwot
ICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpz
b25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFj
dG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0
YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEz
OSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBt
X2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTky
MDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2
YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3
YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFy
cmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewog
ICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1
aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRl
cl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192
YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
X2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
X2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
aW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZj
NGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAog
ICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJl
ZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4
Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2
ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMq
IGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOwog
fQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAor
R1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNv
bnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVm
KGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBk
YXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0s
IGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJu
IGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2Mu
LmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZjxGb250
PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmln
aW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURh
dGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNr
LCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAotUmVmPEZvbnQ+
IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3Jp
Z2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQorUmVmPEZv
bnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2Fs
RGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwg
d3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDlm
YzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVhMjY0MWUzOGM4
Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpYmlsaXR5ID0g
VmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFs
bGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBz
dGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJ
bnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmlsaXR5ID0gVmlz
aWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJh
Y2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6
Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRT
aXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUq
ID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4s
IGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGlj
LCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIxOS4uZTIz
ODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzQsNyAr
NzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFRoaXMg
Y2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBpbnN0YW5j
ZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3Qg
Q3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwor
ICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFJl
ZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYz
NWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitS
ZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsK
IH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlw
ZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRh
KSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZN
b3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAw
NjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0YzJh
MGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBj
cmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVy
PiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9t
aW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2Rl
ciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5Myw3
IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlm
ICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlw
ZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBX
VEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJm
YzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUz
NTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29u
c3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJl
YWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwg
dWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVm
ZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFs
dWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYg
dmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
KTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03
NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVj
dG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1
cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2
LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1Nm
bnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZl
cnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAt
MjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFs
U2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJv
b2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZl
cnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9u
dCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAx
MDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQw
MmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4K
LWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBp
bnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAv
LyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1
ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09G
RlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29s
IGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1
aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUg
YW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgog
Ly8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBi
dWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIg
d2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4
IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVk
MDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJp
bmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6
VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi42
MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+
IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwg
cmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsK
IH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRhVHlw
ZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAgIGlu
aXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgaW5p
dGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmlu
ZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRvcHRO
UyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7
CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2UgaWYg
KGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAg
IGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRhKCks
IGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+
c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6YXRp
b24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmluZyB9
IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAj
ZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAg
ICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMs
IFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAg
ICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGly
ZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0
b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAg
ICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVl
c3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAg
ICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50
S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWlu
Z0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAg
ICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29u
dGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3Bv
bnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVl
c3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BB
TDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhG
YWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRh
cjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25j
ZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05
MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9y
IChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6
YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsK
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkg
PSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7
CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZD
b250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhB
cHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0
b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5
UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byog
Y2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlm
IChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0
YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFty
ZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRp
Zmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRp
b25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDcg
KzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNl
LT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcgUmVxdWVzdHNE
YXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5T
RGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5Niw3ICsxMTk2
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0
RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNv
bmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRv
U3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5
LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNl
dFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0
ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVz
aE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyArMTIxMiw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlE
cyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAgICAg
ICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVu
dEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZp
ZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6
W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5
SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAo
KSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZD
b24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8q
IGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAg
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5
SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVu
dEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZp
ZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSBy
ZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVu
dEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRi
Zi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDksNyArMzA5LDcg
QEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMoW1tXZWJD
b3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJl
bnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRh
dGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xvYWRlciB1cGRh
dGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxl
dGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVsZWdhdGU6
bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9R
VUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVlc0FzeW5j
aHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
IGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFttX2xv
YWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0
YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKICAg
ICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4u
NGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMs
NyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNl
Z21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2Vn
bWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXIt
PmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0
IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJz
ZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBh
cnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJm
NmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZk
YzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRG
YWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0g
ICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAg
dm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAK
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBS
ZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmlu
ZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmI2ZTIzN2I1ZGY1
ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9
OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJj
ZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVy
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5u
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3Mg
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
QEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1
dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJM
RGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0g
UmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQp
OwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0
LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpAQCAtMzg4LDcgKzM4NSw3
IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0
b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRh
U3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBk
YXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVx
dWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4Mjkx
YjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNm
MDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3
IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFj
ZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRi
YmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1
OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9w
ZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFy
ZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZf
dCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1No
YXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXpl
KCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAg
ICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhp
bnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAog
ICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291
cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURl
Y29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBi
ZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVk
Z2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYg
aW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBp
cwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0
YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRh
KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dE
YXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7Cisg
ICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250
aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3Np
dGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2Ug
U2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24g
dGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gK
ICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2Fs
bGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFj
a3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVm
ZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXpl
KCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250
aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAg
IENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBk
YXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3
N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAK
QEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVk
RGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkK
IHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCku
Z2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRD
RihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTlj
NDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQx
ZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBA
QCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90
aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFl
NGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9p
ZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1
ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBi
dWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlh
Li5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRh
Q29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJl
dGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hl
Y2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewog
ICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFi
bGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0
dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZh
Mjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIz
MzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJl
ZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0
aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4
ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDks
NyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QK
ICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19h
cHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9z
Y2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNl
TG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAg
ICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9N
QVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEw
NzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNi
NGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBA
IFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAg
ICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0
TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1l
clBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5o
CmluZGV4IGYxNjA3MTViZGE3NzU5ODkwMTMzNmI2M2M5NTY3YzAzMjUwYmQyNTcuLjk0NGM3MWU3
MDczZTU2OTFhY2Y1ODcyMjA0N2E5MWJjNzNkMDgxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlu
b3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
dW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdz
dEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
CmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAx
ZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkg
Y29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9
IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAg
ICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigp
OwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZmE3MDlmZWE1MTZmMzU4NWZjMjIxNzJi
NWRiMGZlYmU5YWRiNzY4MS4uYzA3ZmI1Njk4NThlMDQ4Y2JhMzgwODM4YmMxZTMxMzkxZGIyMjk4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTM2NzMsNyArMzY3Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpp
bml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAg
R1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2
ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCku
ZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAg
ICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9w
bGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250
YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5j
cHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBl
ZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJv
b2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNz
aDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRp
YyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2No
YXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1
c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1
cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0
TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRM
ZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJE
YXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOworICAgICAg
ICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBt
YXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0
YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFy
a3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9y
IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAg
aWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2Fk
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFm
Zjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi42NmUyOTc5ZTNlY2YyZWQ2OTYy
YWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3
ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAgICBJbml0RGF0
YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAg
IEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGFu
IGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5LgogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEpCkBAIC01MCwx
MyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0
X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZF
TF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVt
SWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZElu
aXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBh
eWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRC
dWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0
ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVt
SWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RG
TW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+
bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJz
ZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9p
ZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAg
ICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5
bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBw
ZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQo
KTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3Rl
bUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBA
IC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CiAK
IGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUx
ZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAg
ICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMs
IG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5n
TW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
KQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRl
Q0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2
NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5
Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0
YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXgg
ODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYw
ZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4
LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQ
REZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9y
Q3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4Y2Q3NzY4
OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMx
Zjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVy
YWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAg
T3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUg
YXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0g
ICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25D
b3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlv
bltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFn
ZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAg
IGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0YWxp
Y3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zm
c2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNl
IHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQg
Z2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5U
eXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9p
ZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
VmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyAr
MTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBo
VmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFy
aWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQgZ2V0
U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlw
aFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhH
bHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9
IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2
b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAg
IHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9m
ZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlk
YXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAs
NyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBt
YXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlw
aENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291
bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29u
c3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0aEds
eXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291
bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAt
MjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5U
eXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1h
dGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFu
dHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENvbnN0
YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zm
c2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRI
VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNl
dCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBt
YXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlh
bnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmlu
ZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2ZDMxMTgy
ZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgK
QEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRm
b3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAK
ICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21h
dGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZl
cjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0
aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIxYWUzNzYz
MDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFk
ODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUlu
dDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUco
Y2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQz
Ml90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90
KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0
ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9
IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUo
Y29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3Vu
dCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkg
KiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCog
cG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAg
aWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1
ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
UHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAg
ICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQq
Pihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRbMV0p
KQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBA
IHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShPUEVO
VFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHByb3Rl
Y3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3Qm
IGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJh
Z2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNhc2Ug
MTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmlu
ZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNjYTcyN2FhZmJk
MmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1No
b3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwg
YW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyBy
ZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChj
b25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0
b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBW
ZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5h
bERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpA
QCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZv
bnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAKIC8vIFJlbmFt
ZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0K
LVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQorUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZl
Y3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9u
dERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi4yMmJl
MjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3Qg
RU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90LCA1MTI+IG1f
YnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4g
cmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhk
NThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3Qg
U3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYg
c3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKIAotICAg
IGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNv
dmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KIH07CiAKIHN0
cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7
CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6
VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUg
bGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAotICAgIGJvb2wg
Z2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0gc3ViVGFibGVD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tj
b3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1cExpc3QgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3VwVGFibGUqIGxv
b2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBA
QCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdEluZGV4WzFdOwog
Ci0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3Vw
cywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3Qq
IGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwTGlz
dEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDog
VGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zmc2V0OwogICAg
IH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2
X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9w
ZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAg
ICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2Nv
dW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
aW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFn
IHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsgKytpKSB7CiAg
ICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVy
ZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RydWN0IExhbmdT
eXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0
IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhbY291bnRdKSkK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJhc2UgewogICAg
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jk
c1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0yOTgsNyArMjk4
LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6
T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBjb25zdCBTY3Jp
cHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcg
dGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVj
dCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8fCAhaXNWYWxp
ZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RydWN0
IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwogICAgIH0KIAot
ICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7
CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3Qg
R1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0
T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsKIAotICAgIGNv
bnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlz
dE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVM
aXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3Qq
IGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KKyAg
ICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVm
ZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJl
TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsg
fQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0
PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0TGlzdCogc2Ny
aXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4
LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAgICBjb25zdCBG
ZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUo
T3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUqIGxhbmdTeXMg
PSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVh
dHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBH
U1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVyZTsKICAgICB9CiAK
LSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEds
eXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdl
dFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVhdHVyZShPcGVu
VHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVydGljYWxGZWF0
dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxl
KiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0
MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewog
ICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMg
dGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAg
IGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFU
YWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNh
bERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkK
IAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRp
b25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlw
ZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1
YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7
CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRp
b25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5
ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24p
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlx
dWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVG
b250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYx
MGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVjNzg4YjliZTk5
OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
NiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZv
bnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVt
b3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNw
ZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNl
dHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRp
bmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5j
cHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3
YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVh
dGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5k
ZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2Jj
MDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWly
b1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYm
IG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVU
YWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkz
YmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1
YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4
IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBm
b250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2Vs
ZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEo
aGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUg
IT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAg
ICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0
YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09
IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggY2YyYjUx
ZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4
YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Vs
ZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblNt
YXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNh
blNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0K
LSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURh
dGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAg
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1
c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25zdCB7IHJldHVy
biAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkgeyBtX2N1c3Rv
bURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAg
Ym9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2N1
c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4z
YzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5j
b2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hh
cmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2Ug
dGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigp
LT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNE
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEt
PmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5z
ZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdT
aXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRh
UmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4
NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcw
M2RiOWVmZWI2YzdkNDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0y
MjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1z
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNz
X3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtl
cl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2Vy
LT5uZXh0KSB7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgaWYgKGJ1
ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBi
dWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgog
CkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBv
bmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQg
SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0
N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEy
YjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247
IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXgg
MTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFjNGI2NTQ3
NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykK
ICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRU
eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3Rl
Ym9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQp
CiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGll
bnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNs
aWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlw
ZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAg
ICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0
ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3Nlczpb
TlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNv
bnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0
ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3Nlczpb
TlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNv
bnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107
CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3Rv
bURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21E
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAK
ICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5n
ZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9h
cmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAg
ICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0
YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBl
OwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAg
ICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAg
ICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291
cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5T
U3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6
ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6
cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3Rv
cjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5U
QVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1
c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNl
cmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmln
aW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3Jk
ZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBl
KTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJl
Z2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVP
cmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVk
QnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBs
aWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3
aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2Yg
aXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBh
c3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBj
dXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVu
IGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihO
U1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5n
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+
PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtw
YXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0
ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4
IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLjdhNGEyYjE2NWIyZmE3
ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwg
bV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0
TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6
KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIy
YzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVy
KiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsK
LSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJl
Z3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwog
ICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1J
TUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VN
SU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAs
NyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgo
Y29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3ku
c3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29u
c3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJv
YXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYg
dHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5
JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJu
IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xp
Y3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQ
YXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4
LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRh
Li44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsx
MjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBm
b3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRl
bnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50
LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNv
bnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJ
VW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJk
SXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNl
NzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpA
QCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFz
dGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBb
bV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBk
b21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEg
PSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEp
LmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0
b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAg
ICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3
IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSYgZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAg
IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9y
bVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQog
ICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRh
LmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAg
ICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlm
ICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVm
ZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9h
cmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpi
dWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDog
bmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBl
KE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1B
dEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JU
eXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFz
dGVib2FyZEN1c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAg
ICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07
CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+
KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgy
NTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAg
LTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBt
X3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEz
YjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdm
MTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0
ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBu
byBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xv
c2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJE
ZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9
IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
ZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJu
IGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2ZTEyNjJlN2QwMDhm
NzkwNS4uYzdkMThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGViNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMSwxMyArNDEx
LDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1
cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6
OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBG
b3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZl
Y3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAK
IFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQx
MGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBE
T01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURh
dGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsg
fQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2Jv
dW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1No
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNT
dHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3
YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3Ry
ZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0
ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+
UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNl
aXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFu
Z2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkz
NzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlh
ODJjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRh
IHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBv
cmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVz
cG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBU
YXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQs
OSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVf
dCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJl
c3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNz
aW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVz
cG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFz
aE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVf
cHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3Jp
Z2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
ZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVz
b3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNl
R2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykK
IHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBh
cnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENv
bnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6
ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUg
dG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlv
biBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdh
aXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtu
b3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFl
eHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVy
U2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJl
Z2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVm
ZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7
CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2
ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEg
PSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7
CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBi
dWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5l
cmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1
bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAg
ICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlcklu
ZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+
PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6
ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVy
Vmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBA
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENv
bnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+
c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklY
TUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hl
Y2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxS
ZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2
YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0
cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVm
ZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJl
c3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1
NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6
U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNl
ID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpb
c3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsK
LSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7
CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlk
PE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVn
YXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4u
ZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9z
ZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJv
Y2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkg
ewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhl
IHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7
CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6
OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRh
cnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkg
ewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRh
dGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZm
ZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIu
cmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVu
ZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5y
ZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgz
OTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0Yjdk
MTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3Vy
bFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxl
SGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
IH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVj
ZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkg
QEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZm
ZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRp
ZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1v
dmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29y
a0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2
Nzk0NTVhLi5jNDYwZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCAr
OTg2LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFy
ZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRh
LT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9y
eShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBA
QCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmws
IFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0
aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1w
V3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAg
ICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEt
PnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1w
RmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCks
ICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAg
ICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4
OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVm
MTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwg
MCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUz
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYg
KFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNS
ZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVz
dWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQg
Y29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lp
KCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4
Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAg
KzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
IGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBT
dHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAg
IGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0
ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmlj
YXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0
aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9
CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5n
KHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChy
ZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAg
ICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJh
Li41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZm
ZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVy
IFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBT
Y3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJv
bVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0
QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1Np
bmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZl
ci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdt
ZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjph
cHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAg
ICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0
cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
IH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0
QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDlj
MTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uZDFhNzdiNThiNjQ0YTkwYjkwNGVm
ZGMxZmViYzZjMDY3NDRmOTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4o
bV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hh
cmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50
KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBl
bmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250
YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdi
NjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uZTVmMzQ5YjQ4Mjc0NmY5ZWRiOWM1ZjYzMWJm
YWQ0YjQxOTk4YmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExv
YWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJs
KFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9t
T3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSkKIHsKIH0KIApAQCAtNzgsOSArNzksMTMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2Nj
dXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNl
c3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRh
LCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9k
YXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
Y29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAg
ICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1
b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAg
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBtX2Vy
cm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSArMTIyLDYgQEAgdm9pZCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5
ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5
YmI1MTAyNmY1ODNhMDliMTg0N2E3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1f
ZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1
cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2Fk
UmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgz
M2M5ZDVlMzRkNzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUy
Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0
aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJl
ZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9k
eSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0
YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3Zl
KGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAg
ICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVu
dC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9y
YWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4w
M2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0
cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3Jl
IGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDog
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwg
c2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRT
dG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAz
ZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2
YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQo
ZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkp
CiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBl
OjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRs
ZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRp
bWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJl
Y2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBi
YWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAg
IGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFu
Z2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAg
IGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJp
bmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJl
c3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUg
ZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9y
bWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBB
U1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAg
QVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwg
MCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2Rp
bmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVz
cG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBu
dWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVz
cG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEu
Ci0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5
MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBA
IC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZv
cm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNz
IFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7Cisg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
OwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFm
ZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2
MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0
IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAg
ICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZy
YW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzky
Li5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVy
aSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJj
ZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3
MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJl
Y29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
IHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFi
bGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxw
dHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkg
OiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0
byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRh
dGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2YzguLjU0ZGMyMGE5YTE5NWQ1
OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25z
ZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNw
b25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3
b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7
CiAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6
IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9u
IHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24u
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBtX2lzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xp
Y3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMg
fQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9zaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAtMzA2LDEwICszMDgs
MTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRl
bnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMu
bWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1w
dHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29y
a0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzAsMjAgKzcz
MiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0i
KTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlmIChtX2J1ZmZlcmVk
RGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNo
T3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVz
cG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICAgICAg
bV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1l
ZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94
LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlw
bGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAg
ICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5y
ZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewog
ICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1l
bW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBl
bnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVm
ZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNl
dCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMg
Z2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0
YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkg
eworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJp
bmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZl
cmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEt
PmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0
dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAg
ICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNv
dXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwxNSArMTI1Niwx
NSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVl
ZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQo
KQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVk
RGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmICht
X2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERh
dGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+
Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZm
ZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5l
bXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBA
IC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVB
c0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVs
aWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7
CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBz
dG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxs
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEyIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlz
Q3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9j
b25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkg
ewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTog
U3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+
cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJs
KCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkp
OworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5n
IGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29y
a0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBt
dXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIg
PSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNv
dXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQy
MzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0NWMyZmJhNzk4YzZkYjZh
ZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjI1LDcgKzIyOCw3
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwog
CiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVl
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVu
c2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5j
aHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcg
QEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAg
UmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRh
dGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVX
aWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCAzM2E5
ZDRiNmRmYjg4MTBkMmY0MjdlMGY4NzZiODgxZjA0MGVjMmU2Li5hMDc2MTdiOWE4OWViNmQ1ZjJi
Mjk2ZjNlZGFiM2IzOTllYjI0OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBt
X2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
OworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAppbmRleCAwYWZjYjA3MDdkYWVkNjdmMGEyNzc5NjdkNWVjNDcyZGMw
ZmUwYzk3Li45MTZkYzg2MWRlMDgyMGFmNzkwMjAyYmIwY2ZiMTIyNTVlOGRkZjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNr
JiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAg
ICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+Owog
ICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4
ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFi
MDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUo
KSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0
YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZm
MjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1
ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBA
IC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVj
b3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsK
ICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJD
b3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3Jt
IGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9
KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29k
ZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAg
IHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9y
YWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9u
c2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2Uu
Ym9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZj
NmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5Ojpl
bmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5i
dWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAo
bV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1w
LCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLmZlNzU5
Y2VkYTJkN2JkMmVhZTg3ODk5NzgzZWZmMzM5OTJhNzNjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVj
dWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFt
ZUkKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkK
LSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKICAg
ICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSkKIHsKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50cnktPm5lZWRzVmFsaWRhdGlvbigp
KTsKQEAgLTEwOSw3ICsxMDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVz
cG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBh
cnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1
Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3Qg
TW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBA
IC0xMjcsMTAgKzEyNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBp
biBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1
ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOCwxMSAr
MTM3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwg
W10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiAhbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5pc051bGwoKSkgeworICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8g
Q3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAg
ICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9y
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1f
Y2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2Nh
Y2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcw
YzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAg
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAg
IGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4
IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMuLmY2MzNmZmZlYTQ4ZGQw
ZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE3NjEs
NyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3Rk
OjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAgICAgbV9yZXNw
b25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJlbnRSZXF1ZXN0
LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAgIGF1dG8g
Ynl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21l
bW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsKICAgICBkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNl
Y2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJjNTkzZjk5MjZmNTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJl
ZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0
YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1v
dmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5
Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTcgKzQwLDE0
IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCiAgICAgU2hh
cmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAg
ICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVy
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
KSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQot
ICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAt
NjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXgg
ZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2
YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJl
ZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1
cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFT
aXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsK
ICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFi
Y2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhi
MWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
fQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVt
IHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUo
KTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihz
aXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJX
SU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5k
ZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4
YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCBy
ZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCog
ZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJj
aGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAK
ICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJj
ZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXgg
ODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcw
MjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1
NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0
YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiBy
ZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBz
Y3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2Fs
Rm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRh
LnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAg
IGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRp
Z3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlv
bjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEz
NzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1
OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9D
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAK
QEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJFTEVBU0Vf
TE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Yg
c2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAjZW5kaWYK
IAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9
IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2YTlkNDJlYzlmOTZiYTM4ZmJlNTEyNTU2
ZTE2NC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsNDkgKzU1LDE1IEBA
IGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBVU0UoQ0Yp
Ci1zdGF0aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUodm9pZCAqcHRyLCB2b2lk
ICppbmZvKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291
cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIGNyZWF0ZVNoYXJl
YWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQotfQotICAgIAotc3RhdGljIFJldGFpblB0cjxDRkFs
bG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVS
ZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7
IDAsCi0gICAgICAgIHJlc291cmNlLAotICAgICAgICBOVUxMLCAvLyByZXRhaW4KLSAgICAgICAg
TlVMTCwgLy8gcmVsZWFzZQotICAgICAgICBOVUxMLCAvLyBjb3B5RGVzY3JpcHRpb24KLSAgICAg
ICAgTlVMTCwgLy8gYWxsb2NhdGUKLSAgICAgICAgTlVMTCwgLy8gcmVhbGxvY2F0ZQotICAgICAg
ICBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUsCi0gICAgICAgIE5VTEwsIC8vIHByZWZlcnJl
ZFNpemUKLSAgICB9OwotCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKLX0KLSNlbmRpZgotCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKLXsKLSAgICBy
ZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFyZWRCdWZmZXIgaXMgZGVhbGxvY2F0
ZWQuCi0KLSNpZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJs
ZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhKCksIHN0
YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7Ci0jZWxpZiBVU0UoR0xJQikK
LSAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9m
cmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCB0aGlzKSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKTsKLSNlbHNlCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5k
YXRhKCk7IH0sCisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxm
LT5zaXplKCk7IH0KKyAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291
cmNlKSB7CkBAIC0xMzgsOSArMTA0LDcgQEAgU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJl
c291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5LCB1bnNpZ25lZAogewogfQog
Ci1TaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkKLXsKLX0KK1NoYXJlYWJs
ZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgU2hhcmVh
YmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKIHsKQEAgLTE2Miw3ICsx
MjYsNyBAQCB1bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJjZTo6c2l6ZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fc2l6ZTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFkOWRlMzJkMWMzYTU0NzA1MTYwYWE0Zjdj
NmNiNy4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMywxMiArMzMsMTIgQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTaGFyZWFibGVSZXNvdXJjZT4geworY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKIHB1YmxpYzoKIAogICAg
IGNsYXNzIEhhbmRsZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJsaWM6CiAgICAg
CiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJl
ZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1bnNpZ25lZCBtX29mZnNldDsKLSAgICB1
bnNpZ25lZCBtX3NpemU7ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG1fb2Zmc2V0OworICAgIGNv
bnN0IHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYzBiNmVm
M2ZhM2EyZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRj
NjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2Rl
U2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFy
ZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
K3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBA
IC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNo
YXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsy
MjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVy
KERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjM0LDEzICsyMzQsMTMg
QEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNv
ZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoc2hhcmVkTWVtb3J5QnVmZmVyLT5z
aXplKCkgPCBidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVk
TWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBidWZmZXJTaXplKTsKKyAgICBidWZmZXIgPSBzaGFyZWRN
ZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZmZXJTaXplKTsKICNlbmRpZgogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NF
UlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpA
QCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkK
K3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVy
LCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAog
ICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAg
ICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hP
bihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwg
dHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7
CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyAr
NDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZm
ZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1
c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVl
KSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxh
dGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92
ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIK
IAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30K
Kworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUs
NyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNv
ZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlm
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5
ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5
M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2Miwx
NiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0
QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2
Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAg
LTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRD
b2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRC
dWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNt
YXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4Mjcz
NTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVy
c1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURh
dGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAg
IEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsK
IAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFk
M2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBA
IC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJi
ZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3
IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2lu
Z0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBB
dHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2
N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIK
IHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRh
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChT
cGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rp
b248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9u
KHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0
NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNm
MGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcg
QEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdy
YXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZp
bGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICgh
bV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4
MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJD
b3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAg
ICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxp
Z2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6
aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdl
Om5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0
IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAg
ICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3Rv
cmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAg
ICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdo
dC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGln
aHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBk
YjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKElu
dFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAg
IGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0
aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlm
IChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRh
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3
ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRj
NDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmll
dyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAxNzQ3MGM2MmM3MjBkZGU4MmI3OTE1
YjdiM2I1ODIwMjNlYjUxZWM3Li5iYmVmNjY3MzUxYTBhMmJmNThkZmFmNWE3MjEwMDA2YTMxOGVh
ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKDApOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVy
LT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlwY0hhbmRsZS5kYXRhU2l6ZSkpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVy
KGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiAgICAgICAgIGF1dG8gbmV3Q2hhbmdlQ291bnQgPSBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLnB0
cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgICAgIGRpZE1vZGlmeUNvbnRlbnRzT2ZQYXN0ZWJv
YXJkKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lLCBwcmV2aW91c0NoYW5nZUNvdW50LCBuZXdD
aGFuZ2VDb3VudCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5
ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVh
YWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6
OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNB
cnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZv
clR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
bV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDpp
XSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0
QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJ
bmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2Us
IE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5z
aW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNo
aXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJp
bmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNl
ZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0
YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFz
dGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9y
VHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZp
ZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpk
cm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21p
c2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5n
ZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRV
UkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBA
IC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nl
c3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURP
TVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6
RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdl
bmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmln
aW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0
ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24o
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYy
NjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ks
IGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNV
SUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1
cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiMmY1NjVmZjA1NDNkNjIxM2M2MzhkOGFj
MzQyOTVhZGFlOTkzNWYwLi5lMGZlOTQ0ZWQ3MTczMjNjYzRmNDUzYjA4NTJhODA4MGUwYTYzM2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OCw3ICsxMTc4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZv
aWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFr
ZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJk
MS4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3NjcwMzU0ZmVhZDAwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAg
V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBo
YW5kbGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRl
cnMucmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdU
Rk1vdmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNE
YXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBF
eGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7
Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEg
PSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAg
LTIxNywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVk
ID0gdHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsg
bV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBzaXpl
X3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXpl
IH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJv
ciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0K
IAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0Rp
ZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9h
ZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMw
ODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVmZGFhYjdhNWExYmU2YWRmNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNw
YWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBAIC00NCw2ICs0NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdi
MDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMx
YTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vs
ZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xp
YnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
YXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlk
ZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNo
YXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFE
ZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2
N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQw
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFtt
X2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
VUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwg
TlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYTgxY2NlNDQ1NWViMWE3MmIxMGU4ZjI0
NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNmYmQ5ODQ5Yjg0YjZlN2FhZmEzNGNmN2MzNDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9y
bUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAg
ICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRh
Rm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4g
YWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAg
ICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAg
ICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk5LDcgKzY1OTksNyBAQCBz
dGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9h
cmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2lu
KCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU3
MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVl
dEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpT
aGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJ
X1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRl
ZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFy
ZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmls
ZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dT
aGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdS
ZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
NDY3OWQ3YjA5ODFhYTdkM2ZjZDliZGU5MGVkNmZmMmFjMjMyZWUxNS4uYmE5OTVmYjllMDZiZjhk
ZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBh
Z2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJ
bWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUK
ICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdl
SGFuZGxlLmRhdGFTaXplKSk7CisgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXIt
PmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgcGFnZUNsaWVu
dCgpLnNhdmVJbWFnZVRvTGlicmFyeShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2ZDMzMzg2OWU0
ZTAwMTJkMjdkM2ZlODVkODVlNTNhNGVkOTY5NjBhLi5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFm
NzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5Ojpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0MCw3ICsyNDAs
NyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cgogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFu
ZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFy
ZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpA
QCAtMjc1LDE1ICsyNzUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICBhdXRvIHNo
YXJlZE1lbW9yeUltYWdlID0gU2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUuaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9y
eUltYWdlKQogICAgICAgICByZXR1cm47CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1l
bW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFy
Y2hpdmVCdWZmZXI7Ci0KICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7
CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFy
Y2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
ICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUFyY2hpdmUtPmRhdGEoKSksIHN0YXRpY19jYXN0
PHNpemVfdD4oYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhcmNoaXZlQnVmZmVy
ID0gc2hhcmVkTWVtb3J5QXJjaGl2ZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGFyY2hpdmVIYW5kbGUu
ZGF0YVNpemUpOwogICAgIH0KICAgICBwYWdlQ2xpZW50KCkuc2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UocGFzdGVib2FyZE5hbWUsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSksIGV4dGVuc2lvbiwgdGl0
bGUsIHVybCwgdmlzaWJsZVVSTCwgV1RGTW92ZShhcmNoaXZlQnVmZmVyKSwgb3JpZ2luSWRlbnRp
Zmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMx
MzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNs
YXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBz
dHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bh
c3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZv
cm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50
JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4
NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEw
NzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyAr
NjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1
Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xs
ZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBw
ZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2Rz
LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJv
Y2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRv
IGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJv
YXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgp
KV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAg
ICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAg
ICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5k
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVd
KSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4
Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xp
ZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRs
ZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShX
ZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
CiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAg
ICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlw
ZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVt
ZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5
dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVj
NzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02
NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0
IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxl
Y3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAg
ICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBm
aW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9j
dW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwg
Ym9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFl
MzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODljNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJM
UmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFy
ZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFs
YW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBz
aGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
CkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3
aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8
QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVk
QnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENv
cHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRC
dWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6
RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3Vv
dXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVk
QnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53
aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRh
dGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1w
bCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNl
ckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1
ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2
LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShX
ZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRk
MDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJj
ZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4
NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5
MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2lu
Z05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1
bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFko
bV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAg
ICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICht
X2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcw
OTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li41OGMxYzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0
NjE1ODUyYTAyMDg3Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZp
ZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2lu
LCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAg
ICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0
c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlz
KTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICgh
bV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09
IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFt
X21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5k
KGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxT
dHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51
YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxs
cHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjcsOCBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRh
Y2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4p
IHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRl
ID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21h
bnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVh
bFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVh
bURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIs
MTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQog
ICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7
CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEp
IHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0
YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNp
emUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4
IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjM0YmVmYjc1Mzk5MGY2
ZmE5YmQ0NzQ1ZDk2ZDNkZjBkYjNjZDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hv
dWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAg
Ly8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhl
IHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2
MjhiZi4uZGVkMWRlMTljMTkyNWQzN2I4ZDM5M2U4NWY2NWY1YjczYTJjMjkwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0g
ICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEp
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAg
IG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6Omdl
dDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90
JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsK
LSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRS
ZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShTaGFyZWRCdWZmZXJC
dWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLnRha2UoKSk7
CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAg
IH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcw
MTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsK
LSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5p
cXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29s
IG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXgg
ODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2
MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2
NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFu
Z2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCku
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVz
LCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhk
MzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgz
NjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
IGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdl
YkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNv
cmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5
MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZp
bmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEt
PmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5z
aXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+
cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA1ZDA1YzBlYWI3NmI2
MmI0ZjgzNmM4NTgyMjFmZWE0NDcyZTA1NTZlLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZl
YmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMy
LDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBh
Z2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRo
ZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlm
IChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0
RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVC
dWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVy
cmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3Nh
Z2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0xNDUsNyArMTQ1LDkgQEAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVk
TWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5k
YXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVy
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVy
LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBh
dGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCkBAIC0zMjIsNyAr
MzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBh
dGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00MDQsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRs
ZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50
aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpAQCAtNDEyLDcgKzQxNCw5IEBA
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpt
YXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOwor
ICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxl
LmRhdGFTaXplKTsKIH0KIAogVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3
MzIxNGZiMC4uM2ZmMzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRo
bmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
ICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5
ZGZhNTlmNWZkMTNjNzU0ZTEwLi43NmM2MDI4ODgxMzUyMjA3MWEyMjc2OWQ3M2YyZDNlODA4YmFj
M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBm
aWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9
Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9idWZm
ZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCkBAIC02
OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2Ut
PmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdl
dCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFrZSgpLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1
ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4
Ny4uYWUwNTBhOTkyM2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEzIEBACiAKICNpbmNs
dWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
RnJhbWU7CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmls
ZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZl
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUy
MTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQog
CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJl
c3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBp
bWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1h
Z2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgp
OwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6
OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBF
bGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90
IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQo
KSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJj
aGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZl
QnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVk
MTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEt
PmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+
ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNv
bnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNzdmODRkY2U3ZmFhYTQ5MmFhNTVmZWEwMjViYjYwNmUwZmQw
NmM1YS4uMTBiNGFhNDQwMmY4ZTE1MGFhZGQ2ZjJiYTRjNDA3YWI0NThmYjA5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3MzgsNyArNzcz
OCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4
KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdo
dFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwg
aXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMg
OiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0
U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChzaGFyZWRNZW1vcnktPmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xs
VG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUz
MDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01
NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2Vs
ZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVm
ZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpp
bmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJh
M2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4
LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFW
RShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1
cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0
Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0
MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4
OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1h
Z2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5
MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcg
KzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRp
b25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1
cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1
NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQor
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFh
NTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2Fh
ZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAg
IFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJP
ZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1
NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXMo
dHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBA
IC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAg
ICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihp
bmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1
OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYz
LDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1l
bnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBj
ZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMz
ODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAs
NyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRT
b3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAg
ICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZh
dGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAg
ICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2Rv
Y3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFy
c2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3
NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3
Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJ
dGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgK
IAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAg
ICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEo
KSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6
YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgp
XV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0
KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0
Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYz
LDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2Rlcgog
LSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byog
cmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0
YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwg
KnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2Rpbmcg
PSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBu
aWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNl
LT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSBy
ZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7
CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAg
ICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9
IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29k
ZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07
CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXld
OwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VN
SU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JL
ZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAt
IChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0
cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNv
ZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0g
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0
YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFl
ZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBj
ZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8g
TWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1v
cnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
TWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVt
b3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShX
VEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
TWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApp
bmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFi
NGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFs
IDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0
cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVG
SUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25l
KF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0
cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0o
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlT
dHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAg
ICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZi
YTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZj
MzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQs
NyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0
cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0
cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0
cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICBy
ZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlS
ZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2
YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIz
MzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5
MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3
M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNl
bGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250
ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApp
bmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0
OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNv
dXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFt
X2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1v
cnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNv
cHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNl
KG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZU
byhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9D
T01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdh
MzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2Nh
ZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJS
ZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkw
My4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJl
c291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJl
c291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVu
a25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJlNDg0NzE3
ZDRhYjQzN2JlZTY4NjdmMzM4MDg3NGE3YjdjYWZlNzQuLjBhYjQ1MGE0ZDQ3ZmU1ODZiM2IzMzgz
OWI2MDEyYzJiN2UzMjFjMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNs
YXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0
NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisKIDIwMjEtMTEtMzAgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogYWRkIEV4dGVuc2lvblRhYkFjdGl2YXRpb24gZGlhZ25vc3RpYyBldmVudApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5mYmY5OWZm
NTFhNDRlOTc3M2Y0ZGFiZjI4YTMxMTRiMmFlZjBjNjk0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQzLDQ1IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0Zp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAg
ICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0
cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShT
dHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgp
OwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChi
dWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwotfQotCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJV
RSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0g
KHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQo
KmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsg
MSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5
QnVmZmVyKQpAQCAtOTYsMTAgKzg5LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBj
aGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2Ri
eWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRh
MSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwor
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAi
SGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRl
bmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihl
eHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNCwxMCBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIp
KTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUg
KyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24g
PSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTE1MSwxNyAr
MTQ0LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGln
bmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0
IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJv
aW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1
cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERh
dGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAg
IGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIg
bXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hl
Y2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUo
KSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHko
KTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGgg
KiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0g
YnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXpl
KCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIu
YXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXIt
PnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBV
LCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3RE
YXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29w
eSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkp
OworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRp
ZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdl
dCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVu
ZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAg
IGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHko
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0
ZWQpCkBAIC0xNzUsNjAgKzIwNCw3MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4g
czEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2Un
LCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdr
JywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0
byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwor
ICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZm
ZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
OCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJj
ZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBn
aGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJj
ZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCks
ICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwog
ICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZl
cihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wu
ZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwg
YnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0
YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBn
aGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5z
aXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRh
QXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1h
a2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29u
dGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAg
ICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
Y29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBh
dXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1
dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAg
IEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEt
PmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2En
LCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydh
J30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdj
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZl
Y3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpi
dWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0g
fSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdl
dCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRv
SGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9
OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAg
ICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAg
ICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQ
RUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI4OCwx
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7
CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkg
JiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAg
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMz
MzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkz
ZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0
IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAq
ZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7Cisg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciop
aGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJp
ZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERh
dGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZE
YXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBo
ZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9
IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVn
ZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVy
LmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlz
RXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUlu
dGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3
aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNy
ZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hp
bGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFs
VG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0
aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxh
c3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAg
YXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAt
IDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVh
bFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7
CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="470724"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445524</attachid>
            <date>2021-11-30 22:27:16 -0800</date>
            <delta_ts>2021-12-01 04:07:57 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211201172714.patch</filename>
            <type>text/plain</type>
            <size>503895</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgzMDRiN2VkMTRkZWQz
OWExMjE3OGY5ZWIwMTY2YzZlY2QxMGQyMC4uYmVjY2Q3ZTA5YTM5NTQ2YTk4YTNiMjI4YTZjOGU5
NjRjMzM1Mzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxMSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBi
ZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZl
cmVkRGF0YSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICogbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVk
QnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051
bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3
YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWlu
ZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAg
ICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVl
IHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisg
ICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVy
IHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hh
cmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5
cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQg
dG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJl
ZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJl
CisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2Vk
OyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4
cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBU
aGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZl
cnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAg
ICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90
ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1p
dCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBk
ZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBj
b3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUK
KyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNv
bnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJl
ZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBo
YXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFs
IGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQu
CisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ug
b2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVu
ZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0Miwg
YSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3Jl
YXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBi
eSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJ
REJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2Nl
bmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZv
ckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZG
b3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Ojpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0
aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxp
emVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0
YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZm
ZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
VUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdS
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6
Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1
cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5k
RmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxl
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJs
ZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNj
cmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJv
YXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEtMzAgIHVqd2FsIGtvbmVy
dSAgPHVqd2FsLmtvbmVydUBzb255LmNvbT4KIAogICAgICAgICBGaXggUGxheXN0YXRpb24gYnVp
bGQgYWZ0ZXIgcjI4NjE3MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MDZkNDk3NDkzMjE0ZjY0ZjIyMWE0NDI2Njcz
NTZhYmU1NGI4MDVmLi5hOTA5NDFkNDMxN2RiZjYxNzRkYmRiNDZiODBkMTI4ZmU3Zjc5YjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIK
KyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxT
Y2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJl
YW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZm
ZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5
Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAg
KEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBD
OjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0
YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNX
aW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6Cisg
ICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhp
Z2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFG
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNl
bmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1l
bnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVh
dGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFu
ZGJ5IGNvbnN0KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBT
aGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBk
aXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAg
ICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAg
Tm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5
IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdo
ZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEg
Y291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZl
cik6IFJlZmFjdG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBj
b2RlIGFuZCB1c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVi
b2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFy
eSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0
eS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisK
KzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGlu
dG8gYSBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBh
IFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1l
bW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBv
YnNlcnZhYmxlIGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlv
bi4KKworICAgICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBT
aGFyZWRNZW1vcnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90
cy4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtlIFNoYXJlYWJs
ZVJlc291cmNlIHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBTaGFyZWFibGVS
ZXNvdXJjZSBvbmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVkTWVtb3J5IG9i
amVjdAorICAgICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcuIERlbGV0aW5n
IHRoZSBvYmplY3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgc2FmZS4KKyAg
ICAgICAgTWFrZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRmb20gc3Bl
Y2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQuCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRl
Y29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VU
b0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmls
aXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVs
bGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5k
ZXgpOgorCiAyMDIxLTExLTMwICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGFkZCBFeHRlbnNpb25UYWJBY3RpdmF0aW9uIGRpYWdub3N0aWMgZXZl
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MDFkNTAxYWIzODAxN2YxZDhmOWU4
MWM5YmVmZGMyZDdmNmYxNmZlLi5mMzUyOWRlYjcyZjFlZjVkZDdlMTg0ODliMDRhYmRhZTRlNDM2
OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEt
MTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0
aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBh
bmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVz
ZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50
YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
OgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgor
ICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9z
dHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUgdG8gY2hlY2sgbG9jYWxp
emVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCmluZGV4IGNhZDYxYTc3YTAxMGNkZDg3MGYwYTVjNjdkMjEzOTY5NjZiYjYwYWMuLjUyOTQ5
MzE5ODI4ZTRlMTU2MzgyYjkzN2FmOWJjMmNhNWViZTQxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAK
KyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3Ry
ZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNl
OjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJj
ZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTEt
MTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IEFYOiBVc2UgT2JqZWN0SWRlbnRpZmllciBmb3IgQVhJRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVm
YTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJk
OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAgIFN0
cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0byYgYnVmZmVy
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJr
dXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAg
ICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZm
ZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4
MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdl
L3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgp
IGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlv
bihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2Rv
Y3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRh
LmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUw
NTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQz
NjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRh
OmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0g
W2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0p
IHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5T
RGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5T
Qml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZl
MTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNp
emUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsK
ICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBb
Jl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9
IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggOTA5
OGUwNWFmNGM4NDMzYjNkMTNiMzk1NjUwNjRhOWMxNTQzMzg3ZC4uODY3NTBkZmVlZmVjNTU1Y2Fm
OWExYmJmODUxMDYwYTU5YWZmMjg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVj
dG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hh
bmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9u
c2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0
aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNw
b25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5j
b25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5k
bGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3Bv
bnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMjk4LDE1ICsyOTgsMTUgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZl
Y3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSBy
ZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3Jk
UG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAg
dGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRh
dGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0
LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNl
RGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0
PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlm
IChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNl
cHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpw
dXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJl
ZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlm
IChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCks
IHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lk
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzQsNyArMzc0LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2
ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQo
KTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9u
c2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyks
IHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODIsOSAr
MzgyLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBk
YXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXgg
MTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2Iy
NTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZp
bmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
IAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRj
aFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBO
bywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXgg
MjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4
MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJv
ZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVk
Q29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
c3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0
Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYg
Ym9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1E
YXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVy
LmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNl
Qm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5
NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNh
YWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0
VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
VVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9u
c2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpu
dWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBS
ZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBX
RUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25z
ZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJl
NDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1
MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMo
Y29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1
ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1
dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVm
ZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5n
KGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkp
OworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMu
LjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3Ro
ID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBi
LmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1
c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAg
c3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVk
aWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUo
KSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4g
S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7
IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0
YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhl
Zjk1NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJs
b2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwog
dm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZm
ZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3Vt
ZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCks
IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1f
Y29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRU
eXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhl
bSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3Jt
RGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURh
dGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5
KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJl
dHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hC
b2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7
CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5
NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAg
ICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0
Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0
Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNl
YXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVu
Y29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5
KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlm
IChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlC
dWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5
KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNB
cnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJl
c3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmll
d0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdm
NGIwNGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIz
YjQwMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0
YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFr
ZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2
b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92
ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYy
YjNiLi4xMWE3M2YzNDVlODJkOWU3MDg1OThhYTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAt
MjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZm
ZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykg
ewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBA
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBB
U1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRC
dWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVk
QnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
ewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUo
cHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRh
dGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRo
VHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAg
ICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYs
NyArMzA4LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdl
Rm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8g
Zm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6
ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRh
LCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewot
ICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBtX2J1ZmZlci5y
ZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKLSAgICByZXR1
cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCkBAIC0z
NDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRvIGFycmF5QnVm
ZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBu
dWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFr
ZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1
MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpu
b3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZm
ZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZN
b3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAK
IFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzY0LDgg
QEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNp
emUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZm
ZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
ICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNl
ID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJj
ZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3Nv
dXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwog
fQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlv
biYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJk
NGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDgg
KzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7
IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsg
bV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtl
RGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigp
OwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3Ry
aW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9t
aXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVk
QnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5k
ZXggNWQ0NTJjZTI4OGNlZGMwMjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlh
MDY4MzBlNjRiYWM1ZDMxMDBjODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNo
dW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Bh
biBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRh
Q2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVX
aXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9k
eSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAg
ICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0Jv
ZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9k
eSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlk
MTZmZGU2MThjY2ViMWQ4Yzk0Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUw
ZWExODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7
CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZl
cj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNw
b25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1
ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUy
NTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+
c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAg
ZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3
NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhi
MWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29u
c3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMy
MzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNv
ZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1
cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZk
NTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRk
Y2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywg
QXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25z
dCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVu
Y29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0
YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAg
ICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtl
eSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9
CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhf
dComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQy
NC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRo
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5
UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25z
dCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdl
ZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVl
YzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
QEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3Rp
bmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRy
YW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdp
bigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJ
REJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFs
aXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZl
IGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12
ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgo
KSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQ
YXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9i
amVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1w
dCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24i
X3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBp
biBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8m
IGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAg
YXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAg
IGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMs
MTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQ
dXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVz
LCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1
dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBp
ZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4
IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZh
bHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1
ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2
NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwg
IXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUg
d2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAg
ICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYg
KCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3
ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQo
U1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQg
ZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0
aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5z
YWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4g
YW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qg
c3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
CiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgp
KQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0
byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2Vy
QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJ
REJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5n
ZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAg
ICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAg
ICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpA
QCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VS
VChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXgg
JiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0
byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVw
IG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVj
b3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
CiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5
LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxv
d2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dl
cktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2Vy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0K
IAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURh
dGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1
cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBw
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXgg
OGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEw
YzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2
OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmICht
X3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBT
UUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBz
dGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcg
KzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3By
ZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIp
ICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFy
Z3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3Yjk0Yzll
N2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNl
MGI4NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkK
ICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1v
dGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNz
YWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3Jl
bW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01l
c3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQw
MDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQx
OTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xp
ZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAg
ICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewot
ICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJp
bmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0
KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKaW5kZXggYWU3YjJlMmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uMDI4
YTkxOTg1ODE3ZmQzNjllNzBmNGNhYWI5NGUxYTE0ZjVkMGMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJM
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEg
PSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFs
c2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBt
X2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAg
IG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JD
YW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5y
ZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRl
cmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAg
IH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNy
ZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtl
KCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNl
LnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDM2MzkzYTNiNmY5MjdmZjA0ZmJjMjVlZDU3YWRkYWZj
MzkyOWVhZjMuLjljNDcyNmYyNjQyZGYwMWQzM2FiY2RmNGUzMWVjODJmNGM5YTdmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3Vy
Y2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVz
b3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRl
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
aW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQy
NTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0Qu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3Vy
Y2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJN
b2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0g
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5
NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGlj
IEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9h
ZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4
Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5v
dCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBb
Jl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1
YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0
YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1f
Y29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAg
bV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1
b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAg
bV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAg
IG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMo
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCpt
X2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAg
ICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygp
OwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1
ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRh
YmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJp
bmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAppbmRleCBjYWRjNGEwNTk0YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQz
OTk1NGYxOWJhNGI4MjM3YzllNWRhZWQ0MWU0YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRG
YWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NF
UlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZH
Rm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2
Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAg
ICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRP
VEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250
LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygp
KTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5E
b2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NG
b250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBp
ZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRl
U291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRp
YXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgo
KSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFw
cGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIz
YjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRT
ZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBA
QCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENh
cGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZh
Y2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdl
YWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250
cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRl
ciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Z2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1f
aW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0
Li5mYTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwot
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjEx
YzIyOGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291
cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFz
cyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRp
dENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxv
bmVJbWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5
cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmlu
Zz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0
RGF0YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5I
VE1MRm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQoRWxlbWVudCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlz
aWJsZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Cisg
ICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYK
ICAgICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRy
aWJ1dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAw
NmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4
OWU5OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRp
ZmllcjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
aW5kZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAw
YzY1NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6
OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICgh
YXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRh
V2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVT
IGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRl
ZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAog
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAg
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRh
Rm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMs
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVj
dG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lk
IEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBk
YXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAg
ICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAg
IG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEy
ICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJE
YXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRX
ZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewog
ICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
bV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRh
UmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAK
IC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2Zl
ciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZp
c2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVT
dHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZE
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYg
KCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRG
REZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9
XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJU
RkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAg
ICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgw
OGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5
YjViMTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRB
dHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAg
ICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkg
ewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAg
ICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIp
IHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVu
dExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAg
IGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJl
c291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2Zp
bGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxl
bmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsK
QEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmls
ZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYg
KENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAg
ICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiBy
ZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJi
OTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjcz
MDk4MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9p
ZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAg
ICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9
OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+
dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
bmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RF
bGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0g
ImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RG
TW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUt
PmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcg
KzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RN
YXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5
cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1
cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1h
cmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFp
blJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9Owog
fQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3Vw
QW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3
ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJl
cGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpm
cm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZy
YW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1l
TWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1
bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01J
TUVUeXBlQXNIVE1MKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdz
KCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnBy
ZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYg
KCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJv
b2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJm
MDliNzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0
ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50
JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVu
Y3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUg
c2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2Vk
IGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1Mg
WCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2
ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBT
dHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVz
aXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50
cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhG
VFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGlj
IGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShj
b25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1w
bGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCkt
PnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1
bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
c3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQg
cGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVu
dCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBn
ZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3
MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uOGE2MTUwNDM5MTA5OWZmZTJlNGEwNmU3NDg5NmVm
ODg4ZWQwNDYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4
aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSA1MCAqIDEwMDAgKiAxMDAwOyAvLyA1ME1C
CiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVl
c3RJZChyZXF1ZXN0SWQpCiAgICAgLCBtX2xvYWRlcklkKGxvYWRlcklkKQorICAgICwgbV9kYXRh
QnVmZmVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAt
NjQsNyArNjUsNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpyZW1vdmVDb250ZW50KCkKICAgICBpZiAoaGFzRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCgh
aGFzQ29udGVudCgpKTsKICAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Ci0g
ICAgICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YUJ1ZmZlci0+cmVz
ZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODIsMzcg
QEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250
ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAh
bV9kYXRhQnVmZmVyLT5pc051bGwoKTsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFC
dWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAg
ICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlmICghbV9kYXRhQnVmZmVyKQotICAgICAg
ICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgp
OworICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB1bnNp
Z25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAKLSAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gYnVmZmVyID0gbV9kYXRhQnVm
ZmVyLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBi
dWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRF
bmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3Ro
KTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAg
ICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwg
ZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBu
dWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0
aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5kNzRl
ZTEwOTMzZDdlZTRlNWY3ZWY5YjdjNDA5MDlmZTk3ZDA3YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC00MSw2ICs0Miw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0
YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMDMsMTAgKzEwNSwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0
YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAg
ICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsg
fQorICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEo
KTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAg
ICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBk
ZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksNyArMTIxLDcgQEAgcHVibGljOgogICAgICAg
ICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOworICAgICAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1f
Y2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJj
ZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4
OTM3NjFkNzFlNGM3NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1
OWRhNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNo
b3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRv
IGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291
cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsK
ICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0
ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIx
MDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQw
YTg3ZTA2ZjMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5z
cGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3
aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUt
PmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAg
cmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rp
bmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBT
dHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNv
ZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250
ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0
RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRl
bnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRh
MWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZl
NDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIz
Myw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxv
d2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZl
ciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNl
aXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNl
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNv
dXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFm
NzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRS
ZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIo
KSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9j
dW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZs
aWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNy
ZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBm
NzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2
NTUwNTI5MWNkNmZhNzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcApAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNy
ZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAg
ICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNv
dXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFp
blJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVU
eXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1
bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWlu
UmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVE
YXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogfQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5
VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRB
cmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRl
cjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hp
dmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIo
KS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAg
Y29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwor
ICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29u
TG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0
NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4
NzY2YmYxMWNiNjRmZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBj
bGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xh
c3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3Qg
Q3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0y
MjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJj
aGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNo
aXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+
IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJM
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxl
QXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNl
bmRpZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2
ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURh
dGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dz
QWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIu
LmM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUs
NyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtT
dGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlm
ZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8
UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBj
YzgzZGM1OGE5YTJlN2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVk
MDg1N2M5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYs
NyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rp
b25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsg
fQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmlu
YWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4
MDU2NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlh
YTdiMDE0NmUzMDc3NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtMzEwMSw3ICszMTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZy
YW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0K
IAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlh
bFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGll
bnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUu
ZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVy
YXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBy
ZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5h
cHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwg
ZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgp
LT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0
LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJz
LCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAg
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5n
KCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3Jp
cHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4
ZGRkYjEuLmE1MmQ3ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZy
YW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNz
IENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyAr
NzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hl
UG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBs
b2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQ
SGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291
cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xp
Y3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1l
T3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRB
dHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxs
cHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxs
b3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODVi
YjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjE0ZTVmZDFkMGQxYjIwNTMzOTY4
YTQwNDZhMTQ0NDQzMTYwOTE4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtNzYsNiArNzYsNyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVO
VElGSUVSKFJlc291cmNlTG9hZGVyKTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcihG
cmFtZSYgZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9mcmFt
ZSB7ICZmcmFtZSB9CiAgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCkuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKSB9CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBvcHRp
b25zLmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZl
cnNMb2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1fb3B0
aW9ucyB7IG9wdGlvbnMgfQogewpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0gICAg
bV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwog
ICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3
ICszMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERh
dGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFs
cmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEg
PSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwy
NCArMzM1LDIzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5k
YXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0
YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5
bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZm
ZXIpCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBs
ZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9h
ZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0
YS0+cmVzZXQoKTsKKwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5h
cHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5k
KGRhdGEsIGxlbmd0aCk7CiB9CiAKK1NoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291
cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQo
KTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAg
IGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7Cisg
ICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6Omlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJl
MWNhNjRlZTQyYjkxNy4uNDA2NTAxZWU1MzE1YTg2ODYxMWVlY2UyNmMxOTQ2OTU1ZTFlNzkzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBj
bGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVz
b3VyY2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJs
aWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNs
aWVudCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRC
dWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEo
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpA
QCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJl
ZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNi
OWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIy
ZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0
YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3
MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZm
ZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVm
ZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9
KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsg
bV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRh
LmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEu
Y29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
CkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4Nzhh
ZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFm
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5p
ZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2Yg
IkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1h
bmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBw
bGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFy
dCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgz
NzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFh
MjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVS
TCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgp
CiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGll
bnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVy
IHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3Vy
Y2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
Citib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExv
YWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3
OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRh
KQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGly
ZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNh
cHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQs
CiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUg
dXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBj
YWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3
MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEw
NCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNr
Rm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNh
OWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNl
KCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGln
dW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1
bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1
MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0Mzdm
NDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQz
MGU2MzY1OTUuLmJkYTJhMmM3NjY5ZTE4YzUyNDdhYzgwYTEyZjE3YmQyNmIzNDhlNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcApAQCAtNzg0LDcgKzc4NCw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2ln
bmVkCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0KICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1w
dHkoKSkKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgRmlsZVN5c3RlbTo6cGF0
aEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJl
c291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRo
KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0g
ICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRl
bWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODc4LDcgKzg3Nyw3IEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2UsIHVuc2lnbmVkCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVl
IHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlm
ICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7
CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJ
RChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJl
ZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hl
KHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVT
dGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAg
IGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5C
bG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0
cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcg
bG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0
ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAg
ICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQg
YnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7
CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0
byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAt
MTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5j
bHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYg
KCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0
YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgp
KSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwg
TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRh
LmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJl
c3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlz
dDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNw
b25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJl
c291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9
IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENG
U3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0g
Y3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9u
c2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1
NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7
Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwot
ICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNG
RGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7
Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yo
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRh
KDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7
CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBl
SUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMg
bm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFy
Y2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9u
YXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3Vy
Y2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJj
ZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAg
Ym9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJm
cmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBj
cmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJh
bWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJm
cmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6
OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBz
a2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0
byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgp
OwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8g
aXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgp
KQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9j
dW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAor
CiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNh
biBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2
ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJr
dXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2lu
aGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkg
KyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRj
YjJkMGJkYjgwMTVlLi43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
fQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVu
dCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNv
bnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDog
ewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEo
KSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERl
Y29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFz
ZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAg
ICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRl
bnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFy
eToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkp
OworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50
LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBV
UkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2
ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29s
dmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAg
ICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1
dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNl
YTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOwor
ICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYu
LjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgx
LDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChN
SU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVj
b2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJl
Z2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkK
LSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwot
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNv
ZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0
ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBt
X2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFu
ZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAg
ICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVj
b2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2Fp
biBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2
MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02Niw4ICs2NiwxMyBA
QCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xp
ZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0
YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDAp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5D
b2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCku
dG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkg
ewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVy
biBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVz
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAg
IFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMg
fTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7
CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZl
ciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZv
aWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMp
OwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQog
ICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0
YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3Jt
RGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwg
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZv
bnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4
dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
OworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
ZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24o
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmlu
ZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2Jk
NDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENh
Y2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
SW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAg
Ym9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAg
IHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1l
KS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5l
ZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQot
ICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9J
TUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1l
bnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkp
LmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRv
Y3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhl
IGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBz
dXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUz
ODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5
NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUlt
YWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApp
bmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNi
OGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0g
ZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5j
b2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7
CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFC
dWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAg
ICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
Q2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1l
bnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgz
MTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUxOWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
QEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJG
aXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJl
c291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2
b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47
CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29k
ZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0
YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAg
ICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkw
NDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5
NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7
CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1
YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4
NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3Rh
bEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3
ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VD
bGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4g
bV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZh
dGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBh
cyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJl
OTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2Fm
Njc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcg
ZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VF
bGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRy
LCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0
Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwog
ICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRl
eCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThh
MmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZH
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQog
CiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5T
Y29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQt
PnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRl
bnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNh
d0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAg
ICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVt
b3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29u
dmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVu
dCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRG
b250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9u
dC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApp
bmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2
NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBT
VkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RG
b250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFs
U1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVu
dDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgy
ODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEw
MjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhh
c2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAg
ICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAx
MjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVl
NDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBAQCBDYWNoZWRUZXh0VHJh
Y2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6
OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9k
YXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVu
dD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0
NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjExZmQz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0
OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRh
LT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAo
ZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0
ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
QEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNw
b25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmls
ZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lv
bklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNl
KENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJl
c3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNo
ZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpp
bmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRm
MDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0Miwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25k
cyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZv
cmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVN
b25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25p
dG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRS
ZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1h
cHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBE
aXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tD
YWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxl
QmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VC
ZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlz
a0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlD
YWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBt
X3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2Zj
Y2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDViYjdhZjkwZWJkYTQ3ZWYwMDJlYjg4N2Jj
ZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3Mg
TGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVu
dCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFByZXZp
ZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vh
a1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNo
ZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9j
ZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhk
ZDAwOTdlZjJhNTczNC4uNTJmZmQ1MzdiZmQ2MmZmNjdkZWNkNDY0YjY1ZmI2YzkwNTcwNjJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSk7Ci0gICAgbV9vcmln
aW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEtPnJlc2V0KCk7CiAgICAgcmVz
b3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92
ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jl
c3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBj
CiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3
Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAg
Y29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdM
b2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3
IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0
OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29u
dmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAg
ICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxl
TmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0
YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtl
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRl
ciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBs
b2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5n
UXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4
IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmEzNjNiN2IwMmNiM2M5
NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9N
UGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZy
YW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVk
aXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRD
aGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjli
YjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIz
ZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29u
c3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQg
c2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCBy
ZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVu
dDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxs
b3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHls
ZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVT
aGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAxYTEyMTBm
YTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5kNzUwY2ZmOTY0MjMwMDUyZjc5OTVh
MjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1l
KEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9
IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCks
IFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2Vz
LmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5z
dWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVu
Y29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwog
ICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDogbm9k
ZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNw
ZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgVGV4dEVuY29k
aW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAg
ICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMu
YXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNv
ZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJf
cywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3Nz
VGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAg
ICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgyLDcg
QEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSog
aW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwg
V1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9y
ZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdi
OGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3Vy
Y2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihW
ZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMw
NmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUy
NzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcg
QEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmls
ZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURh
dGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApp
bmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1
MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNo
YXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7
Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcx
LDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQg
bG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3Bl
bmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwog
ICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmls
ZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChX
VEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAo
bV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5z
aXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBp
ZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFu
ZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIz
NTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1
NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVj
b2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXks
IGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFhMTZmMzQyYzE3
NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2ExM2Q3MzkzNGFhMDQzNmVlN2Y3
OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2MSw3
IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
IGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1
Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJk
V2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21h
cnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRh
dGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2Ugewog
ICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2Vu
ZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgog
I2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxT
dHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xp
ZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGll
bnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXpl
IGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiBy
ZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3Ry
aW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJl
YWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5
ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1c3Rv
bURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQgY3Vy
cmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5LDcg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8IHNh
bWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMo
KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5j
b2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVj
b2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQs
NyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBh
c3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZl
ci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMw
My4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2ICszNCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewpA
QCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYg
b3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIm
Jik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3
MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5hNzg4ZmI3MzBlZGMxYzNlZmFk
ZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0
ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0
aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFs
bFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFz
dGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1
MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0
ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJB
cmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9y
bWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8
U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUwMDI0M2JiNDZmZjU5
ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
NDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUlu
Zm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1Ymxp
YzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1Q
YXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5n
JiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0
cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29u
c3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3Jp
dGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0
Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGVi
NTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9y
JiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFyZWRC
dWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgp
OwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0y
MjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2
aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJE
aWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0Vt
cHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBj
bGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0
YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhh
c0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBi
YTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgs
NyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07
CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9w
cmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjky
YzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3
NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2Vk
QXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBz
dHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
I2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLmJiZTM5
MjNhMjA3YTBlOTM2MTE3MzA3NGY5NzYwN2ZhZDA1ODdkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAg
ICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsK
IH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYg
cHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHBy
b3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0K
IAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiAjaWYgVVNF
KEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1h
cHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7CkBAIC03MywyNiArNzgsMTAgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVk
QnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkK
IHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVk
QnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmls
ZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5n
ID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2Vz
czsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmls
ZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBw
aW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19
Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArOTIsMTYgQEAgc3Rh
dGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lk
IFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsK
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRv
IHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJl
bW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1
c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8g
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29u
dGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAo
IW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50
LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRh
KG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRh
KSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6
OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJU
KGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21l
bnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE4MSw2ICsxNTYsMjEgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZl
cjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91czsKK30KKwogUmVmUHRyPEFycmF5QnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBh
dXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpAQCAtMjAyLDEwICsxOTIsOSBAQCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25z
dAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIG1f
c2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21l
bnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21l
bnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1l
bnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBl
bmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6
ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDIsMjYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2
ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwogdm9pZCBTaGFyZWRCdWZm
ZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpAQCAtMjQzLDE3ICsyMzUsMTIgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9z
aXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1f
c2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxl
bWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAg
IGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlv
biwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRz
ID0gbV9zZWdtZW50czsKQEAgLTM1NSw4ICszNDIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0
byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7
CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5B
QkxFRApAQCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNv
bnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdt
ZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQp
IH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3Vz
QnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkg
fHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3Vz
QnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQo
KSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3Nl
Z21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7
Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVyKFdURk1v
dmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcp
Cit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
IHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBw
aW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQ
YXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgp
IGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisK
K2NvbnN0IGNoYXIqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25z
dAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOwor
fQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0
byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwK
QEAgLTM5MSw3ICs0MjcsNyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0
YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Rmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CkBAIC00MDIsNyAr
NDM4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29u
c3QKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6
ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAgIHJldHVybiB7eyByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CkBAIC00NTYsNyArNDky
LDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBv
dGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29u
c3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUo
KTsgfSwKQEAgLTQ3NSw3ICs1MTEsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFi
bGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6
ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAq
c2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDk5
LDE2ICs1MzUsMjEgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEo
KSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5T
ZWdtZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50Owot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdt
ZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1
cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4g
c2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAg
fSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRv
IGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNTc1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRm
OEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5r
KHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4
IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLmRhM2QyMmYyMDNkY2Jj
NTVjYzc2NjgzNDVkZGUwYjJlYmMyZTI3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAgY2xhc3MgRGVjb2RlcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERh
dGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBp
dCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNv
bWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNl
Z21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZp
bGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9v
bCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmls
ZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cisg
ICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5
KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7
Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFS
ZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRl
cygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdC
eXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9
CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21l
bnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5
LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGlu
c3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rp
b24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0K
LSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhf
dD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQog
Ci0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2ls
bCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVy
IGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwotCi0g
ICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVy
J3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBz
ZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwot
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVj
dG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVjdCBQcm92aWRl
ciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1
bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkg
YSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVy
ZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUg
ZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNo
cmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBib29sIGNvbnRhaW5zTWFwcGVkRmls
ZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotCi0gICAgICAgIHN0cnVjdCBQ
cm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwot
ICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQot
Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OworICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNlbmRpZgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0gICAg
ICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxW
ZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNp
ZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBE
YXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYK
LSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAg
IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAg
ICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAg
ICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsK
ICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAg
ICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNv
cHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRv
IGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5z
dGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICAvLyBDcmVhdGVz
IGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0
byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZm
ZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5
KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICB2b2lk
IGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdl
YkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hl
biB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1
ICsxOTcsMTgxIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3Rv
cjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29u
c3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0K
ICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8g
YmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4K
LSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRh
KHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAg
IHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIp
OyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0Owot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVk
OgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNl
Z21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYp
OwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRl
cyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsK
ICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXpl
IHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYg
VVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICop
OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENG
RGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50
byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hh
cmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBW
ZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1
ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAg
ICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6
ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNp
emVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21l
bnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29t
YmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIg
aXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250
ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9m
Li4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8
RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2FsbCBhcHBlbmQg
b24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdoZW4gY2FsbGVk
IGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxldGU7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAg
ZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VG
aWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikK
KyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOworfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVs
dDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJl
ZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJl
IGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmICghYnVmZmVy
IHx8IGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVu
ZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50
IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVm
ZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAg
ICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBw
ZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7CisgICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAg
ICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lk
IGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOwor
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051
bGwoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNF
bXB0eSgpIDogdHJ1ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1
ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0
KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkK
KyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2OCwyMSArMzgxLDIx
IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAg
ICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwg
c2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1Np
emUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBz
aXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0Owor
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0Rh
dGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9z
ZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBj
b25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZl
cihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5
NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWlu
Z0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQo
KSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJ
bmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1Bs
YXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1
dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
aW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0Fy
dHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5m
by5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIz
YzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2Nk
OTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29k
ZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgp
CiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8g
ZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92
MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4u
ZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1Ymxp
YzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAg
ICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNp
emVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29s
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi5hMTJhNzQx
YTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBh
bGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBm
dW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24u
CiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5z
aXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFp
blB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEp
KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAg
bV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZj
MDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4
M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2Fy
ZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJk
Ojp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykK
LXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYg
dGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJ
RkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIu
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFn
ZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6
QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYK
IApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBl
c1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4
YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpA
QCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAog
QGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6
KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihj
b25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0
IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9z
aXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9p
ZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2Vi
Q29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nh
c3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRh
dGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZE
YXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAg
ICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+
Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291
cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJh
eT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAK
LVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0
YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFs
bG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIy
Yjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05P
YmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcg
dGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkg
fTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAg
IGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZk
ZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMy
NGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4
LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlz
RW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xOTYs
NyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERh
dGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQs
OSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVjayBpZiBp
bml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50IHx8
ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50
YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29u
dGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBk
YXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAg
ICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAg
ICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAog
ICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBp
ZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAg
cmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
QEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhl
IGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJz
OgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVu
dCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2Vx
dWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNo
U3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEu
c2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkp
KTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7
CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwot
ICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwot
ICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpz
b25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFj
dG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0
YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEz
OSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBt
X2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTky
MDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2
YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3
YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFy
cmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewog
ICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1
aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRl
cl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192
YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
X2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
X2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
aW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZj
NGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAog
ICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJl
ZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4
Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2
ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMq
IGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOwog
fQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAor
R1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNv
bnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVm
KGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBk
YXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0s
IGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJu
IGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2Mu
LmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZjxGb250
PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmln
aW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURh
dGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNr
LCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAotUmVmPEZvbnQ+
IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3Jp
Z2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQorUmVmPEZv
bnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2Fs
RGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwg
d3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDlm
YzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVhMjY0MWUzOGM4
Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpYmlsaXR5ID0g
VmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFs
bGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBz
dGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJ
bnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmlsaXR5ID0gVmlz
aWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJh
Y2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6
Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRT
aXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUq
ID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4s
IGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGlj
LCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIxOS4uZTIz
ODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzQsNyAr
NzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFRoaXMg
Y2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBpbnN0YW5j
ZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3Qg
Q3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwor
ICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFJl
ZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYz
NWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitS
ZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsK
IH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlw
ZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRh
KSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZN
b3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAw
NjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0YzJh
MGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBj
cmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVy
PiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9t
aW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2Rl
ciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5Myw3
IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlm
ICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlw
ZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBX
VEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJm
YzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUz
NTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29u
c3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJl
YWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwg
dWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVm
ZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFs
dWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYg
dmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
KTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03
NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVj
dG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1
cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2
LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1Nm
bnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZl
cnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAt
MjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFs
U2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJv
b2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZl
cnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9u
dCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAx
MDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQw
MmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4K
LWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBp
bnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAv
LyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1
ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09G
RlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29s
IGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1
aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUg
YW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgog
Ly8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBi
dWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIg
d2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4
IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVk
MDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJp
bmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6
VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi42
MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+
IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwg
cmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsK
IH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRhVHlw
ZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAgIGlu
aXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgaW5p
dGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmlu
ZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRvcHRO
UyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7
CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2UgaWYg
KGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAg
IGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRhKCks
IGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+
c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6YXRp
b24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmluZyB9
IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAj
ZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAg
ICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMs
IFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAg
ICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGly
ZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0
b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAg
ICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVl
c3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAg
ICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50
S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWlu
Z0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAg
ICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29u
dGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3Bv
bnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVl
c3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BB
TDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhG
YWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRh
cjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25j
ZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05
MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9y
IChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6
YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsK
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkg
PSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7
CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZD
b250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhB
cHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0
b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5
UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byog
Y2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlm
IChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0
YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFty
ZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRp
Zmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRp
b25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDcg
KzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNl
LT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcgUmVxdWVzdHNE
YXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5T
RGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5Niw3ICsxMTk2
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0
RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNv
bmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRv
U3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5
LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNl
dFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0
ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVz
aE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyArMTIxMiw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlE
cyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAgICAg
ICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVu
dEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZp
ZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6
W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5
SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAo
KSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZD
b24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8q
IGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAg
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5
SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVu
dEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZp
ZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSBy
ZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVu
dEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRi
Zi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDksNyArMzA5LDcg
QEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMoW1tXZWJD
b3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJl
bnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRh
dGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xvYWRlciB1cGRh
dGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxl
dGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVsZWdhdGU6
bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9R
VUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVlc0FzeW5j
aHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
IGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFttX2xv
YWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0
YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKICAg
ICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4u
NGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMs
NyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNl
Z21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2Vn
bWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXIt
PmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0
IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJz
ZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBh
cnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJm
NmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZk
YzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRG
YWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0g
ICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAg
dm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAK
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBS
ZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmlu
ZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmI2ZTIzN2I1ZGY1
ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9
OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJj
ZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVy
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5u
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3Mg
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
QEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1
dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJM
RGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0g
UmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQp
OwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0
LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpAQCAtMzg4LDcgKzM4NSw3
IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0
b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRh
U3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBk
YXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVx
dWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4Mjkx
YjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNm
MDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3
IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFj
ZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRi
YmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1
OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9w
ZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFy
ZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZf
dCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1No
YXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXpl
KCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAg
ICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhp
bnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAog
ICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291
cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURl
Y29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBi
ZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVk
Z2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYg
aW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBp
cwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0
YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRh
KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dE
YXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7Cisg
ICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250
aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3Np
dGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2Ug
U2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24g
dGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gK
ICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2Fs
bGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFj
a3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVm
ZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXpl
KCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250
aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAg
IENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBk
YXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3
N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAK
QEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVk
RGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkK
IHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCku
Z2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRD
RihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTlj
NDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQx
ZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBA
QCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90
aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFl
NGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9p
ZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1
ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBi
dWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlh
Li5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRh
Q29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJl
dGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hl
Y2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewog
ICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFi
bGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0
dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZh
Mjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIz
MzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJl
ZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0
aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4
ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDks
NyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QK
ICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19h
cHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9z
Y2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNl
TG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAg
ICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9N
QVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEw
NzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNi
NGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBA
IFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAg
ICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0
TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1l
clBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5o
CmluZGV4IGYxNjA3MTViZGE3NzU5ODkwMTMzNmI2M2M5NTY3YzAzMjUwYmQyNTcuLjk0NGM3MWU3
MDczZTU2OTFhY2Y1ODcyMjA0N2E5MWJjNzNkMDgxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlu
b3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
dW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdz
dEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
CmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAx
ZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkg
Y29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9
IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAg
ICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigp
OwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZmE3MDlmZWE1MTZmMzU4NWZjMjIxNzJi
NWRiMGZlYmU5YWRiNzY4MS4uYzA3ZmI1Njk4NThlMDQ4Y2JhMzgwODM4YmMxZTMxMzkxZGIyMjk4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTM2NzMsNyArMzY3Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpp
bml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAg
R1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2
ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCku
ZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAg
ICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9w
bGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250
YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5j
cHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBl
ZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJv
b2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNz
aDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRp
YyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2No
YXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1
c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1
cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0
TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRM
ZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJE
YXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOworICAgICAg
ICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBt
YXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0
YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFy
a3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9y
IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAg
aWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2Fk
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFm
Zjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi42NmUyOTc5ZTNlY2YyZWQ2OTYy
YWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3
ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAgICBJbml0RGF0
YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAg
IEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGFu
IGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5LgogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEpCkBAIC01MCwx
MyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0
X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZF
TF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVt
SWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZElu
aXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBh
eWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRC
dWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0
ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVt
SWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RG
TW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+
bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJz
ZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9p
ZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAg
ICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5
bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBw
ZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQo
KTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3Rl
bUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBA
IC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CiAK
IGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUx
ZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAg
ICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMs
IG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5n
TW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
KQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRl
Q0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2
NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5
Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0
YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXgg
ODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYw
ZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4
LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQ
REZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9y
Q3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4Y2Q3NzY4
OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMx
Zjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVy
YWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAg
T3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUg
YXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0g
ICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25D
b3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlv
bltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFn
ZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAg
IGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0YWxp
Y3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zm
c2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNl
IHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQg
Z2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5U
eXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9p
ZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
VmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyAr
MTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBo
VmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFy
aWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQgZ2V0
U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlw
aFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhH
bHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9
IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2
b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAg
IHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9m
ZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlk
YXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAs
NyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBt
YXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlw
aENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291
bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29u
c3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0aEds
eXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291
bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAt
MjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5U
eXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1h
dGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFu
dHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENvbnN0
YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zm
c2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRI
VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNl
dCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBt
YXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlh
bnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmlu
ZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2ZDMxMTgy
ZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgK
QEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRm
b3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAK
ICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21h
dGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZl
cjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0
aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIxYWUzNzYz
MDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFk
ODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUlu
dDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUco
Y2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQz
Ml90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90
KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0
ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9
IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUo
Y29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3Vu
dCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkg
KiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCog
cG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAg
aWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1
ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
UHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAg
ICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQq
Pihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRbMV0p
KQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBA
IHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShPUEVO
VFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHByb3Rl
Y3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3Qm
IGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJh
Z2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNhc2Ug
MTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmlu
ZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNjYTcyN2FhZmJk
MmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1No
b3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwg
YW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyBy
ZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChj
b25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0
b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBW
ZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5h
bERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpA
QCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZv
bnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAKIC8vIFJlbmFt
ZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0K
LVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQorUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZl
Y3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9u
dERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi4yMmJl
MjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3Qg
RU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90LCA1MTI+IG1f
YnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4g
cmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhk
NThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3Qg
U3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYg
c3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKIAotICAg
IGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNv
dmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KIH07CiAKIHN0
cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7
CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6
VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUg
bGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAotICAgIGJvb2wg
Z2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0gc3ViVGFibGVD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tj
b3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1cExpc3QgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3VwVGFibGUqIGxv
b2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBA
QCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdEluZGV4WzFdOwog
Ci0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3Vw
cywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3Qq
IGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwTGlz
dEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDog
VGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zmc2V0OwogICAg
IH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2
X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9w
ZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAg
ICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2Nv
dW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
aW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFn
IHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsgKytpKSB7CiAg
ICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVy
ZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RydWN0IExhbmdT
eXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0
IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhbY291bnRdKSkK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJhc2UgewogICAg
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jk
c1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0yOTgsNyArMjk4
LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6
T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBjb25zdCBTY3Jp
cHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcg
dGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVj
dCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8fCAhaXNWYWxp
ZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RydWN0
IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwogICAgIH0KIAot
ICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7
CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3Qg
R1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0
T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsKIAotICAgIGNv
bnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlz
dE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVM
aXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3Qq
IGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KKyAg
ICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVm
ZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJl
TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsg
fQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0
PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0TGlzdCogc2Ny
aXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4
LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAgICBjb25zdCBG
ZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUo
T3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUqIGxhbmdTeXMg
PSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVh
dHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBH
U1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVyZTsKICAgICB9CiAK
LSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEds
eXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdl
dFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVhdHVyZShPcGVu
VHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVydGljYWxGZWF0
dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxl
KiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0
MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewog
ICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMg
dGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAg
IGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFU
YWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNh
bERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkK
IAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRp
b25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlw
ZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1
YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7
CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRp
b25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5
ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24p
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlx
dWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVG
b250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYx
MGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVjNzg4YjliZTk5
OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
NiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZv
bnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVt
b3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNw
ZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNl
dHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRp
bmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5j
cHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3
YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVh
dGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5k
ZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2Jj
MDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWly
b1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYm
IG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVU
YWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkz
YmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1
YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4
IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBm
b250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2Vs
ZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEo
aGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUg
IT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAg
ICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0
YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09
IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggY2YyYjUx
ZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4
YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Vs
ZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblNt
YXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNh
blNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0K
LSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURh
dGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAg
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1
c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25zdCB7IHJldHVy
biAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkgeyBtX2N1c3Rv
bURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAg
Ym9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2N1
c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4z
YzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5j
b2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hh
cmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2Ug
dGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigp
LT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNE
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEt
PmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5z
ZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdT
aXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRh
UmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4
NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uYTQyZTViYzRhY2NmMzcyMmE1YWY5Yzkw
NTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0y
MjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1z
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNz
X3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFy
a2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICgh
aXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsy
MzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdf
ZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hl
YWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAg
ICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJr
ZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYg
KGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci50
YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcgKzcyNiw3IEBA
IHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURlY29kZXI6OnNl
dElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFn
ZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBj
YjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0g
ICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAg
ICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsK
ICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4
ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlk
NTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVj
dG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChOU0Rh
dGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNTRVJUKGNvbnRl
bnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRl
bnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAogICAgIGlmIChj
b250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3ZWJBcmNoaXZl
RGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBA
IC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
fQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewotICAg
ICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRV
bmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6
TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0
ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQorICAg
ICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRV
bmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6
TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0
ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVy
cm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
UmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNTAxLDcg
KzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgUGFzdGVi
b2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihjb250
ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOworICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0ZXJJdGVtVG9Q
YXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5n
ZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYg
ZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0eXBlcy5zaXpl
KCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMu
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1d
OworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwog
CiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0aU9yTUlNRVR5
cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYgKCFpc0Rl
Y2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVU
SUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9
IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5
cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdn
ZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwog
I2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFN
X0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVi
b2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSku
Z2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3Rv
bURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAg
ICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUsNyArNjM1LDcg
QEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4g
Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25T
dHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8
ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVk
U2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkp
IHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAg
ICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVz
IGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgog
ICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5v
dCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQog
ICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQg
d2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApA
QCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
ICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVd
OworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilj
b2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJu
IHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKChOU0lu
dGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1i
ZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRd
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0p
OwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1
NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMyZDY1ZmU2M2Vm
MGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAg
OiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZp
ZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1f
b3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92aWRl
ciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0NvbnZl
cnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkx
MjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4
ZTlmMWNjMzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
Q29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3Qg
UGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVm
ZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1h
Z2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1
cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBT
dHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwg
c3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwg
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVn
eSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQp
OwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAg
aWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7
CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgo
bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAg
ICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAg
ICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUz
ZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFh
NGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0
cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRU
eXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVu
dC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSku
Z2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+
Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdl
dCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAg
ICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3Ry
aW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVz
c0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdl
dCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBk
OWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThl
ZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQog
ICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9y
VHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5
XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRv
cHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpu
dW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwog
ICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRh
Rm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAg
IGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1
dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAg
ICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
cGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVy
KS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERh
dGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChz
aG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3Rv
bURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAg
ICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bh
c3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2
LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVk
QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2Fy
ZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlk
V3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBk
aWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9h
cmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3
ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBs
YXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAog
ewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAg
aWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAog
ICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAg
ICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2Fy
ZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0
Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAg
ICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmlu
ZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBi
OWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJp
dmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2Nr
IG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RG
X0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zv
cm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYz
NmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0K
QEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQog
Ci0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcg
YW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0
YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFtt
X3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywx
OCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0
Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
ZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBt
X2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0
byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBt
X2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVz
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4
IDM3MzFhMWFkODU0YTZjODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUxZDZhYmMz
ZjBjY2EzNTA2YjY1ZmMzZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRfdCBGb3Jt
RGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAg
ICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1l
bnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxv
YlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgK
aW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMz
YzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBG
aWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjks
NyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBl
bGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFy
ZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1
cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5
c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgx
ODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAt
MzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50
KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRS
ZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQw
Ni4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNw
b25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJl
c291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZm
ZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhf
dCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENv
bXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRo
ZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tE
YXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAg
ZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9
IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAg
LTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFz
ayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJh
bmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBE
YXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZm
ZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsK
IAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdl
IHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3Vj
aCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhh
cyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0
aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5z
aXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJu
OwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRv
KiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNr
ID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0
YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0
ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0
YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0
YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAg
ICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5k
ZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisg
ICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRh
KGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJ
bmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEo
Y29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0
dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBl
eHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byog
ZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAo
IWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmlu
aXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4
IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYx
MmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAg
LTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAg
IFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5Q
dHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRh
ID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCku
Y291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNl
c3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVs
ZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtk
YXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFU
YXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEz
ZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmVi
NmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3
ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAg
ICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2
ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQog
fQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2Vl
bXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAg
ICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZm
ZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEz
ICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAK
ICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFs
TWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERp
ZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFy
dGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRp
YWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQ
YXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlh
bE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBs
YXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCks
IGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3Rh
cnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRC
b3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4
NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFU
b0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9
CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3du
bG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVl
c3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVk
ZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNo
YXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hh
bmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkp
OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRs
ZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIp
LCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6
OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJp
Y3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5k
ZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRk
YTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBD
b3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
IGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxV
bmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBT
aGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAg
ICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFM
U0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNj
ZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAg
ICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAg
ICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVT
dWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0
NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDcz
OGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZl
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBi
eXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RF
cnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwog
ICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxl
LCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1Jl
YWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMs
IEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVy
cm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3
MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICgh
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkK
KyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJh
eSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXku
Y29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNh
dGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAK
ICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmll
dywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBA
IHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCBy
ZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
VmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3Bv
bnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFp
bnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNl
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6
OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0
OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJi
YWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZm
ZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRm
OC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5
KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgp
CiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0K
IAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
eworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
ewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgp
LCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBj
b25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdt
ZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21l
bnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1f
YnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVy
LmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZi
NzFhMDQzMTM0YzY2NDYuLmQxYTc3YjU4YjY0NGE5MGI5MDRlZmRjMWZlYmM2YzA2NzQ0ZjkyMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgU2hhcmVk
QnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQog
Ci0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1
ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDog
bnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIu
Y29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29k
ZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNv
bnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBk
MDRkNGJkNDUuLmU1ZjM0OWI0ODI3NDZmOWVkYjljNWY2MzFiZmFkNGI0MTk5OGJhMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0
OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNl
IGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAg
LCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAs
IG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAg
LTc4LDkgKzc5LDEzIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGlu
ZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAg
ICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAg
ICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAg
ICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgq
Y29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsK
ICAgICAgICAgfQpAQCAtMTE3LDkgKzEyMiw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAg
ICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0
YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fZGF0
YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJk
ZWViYzVjNmUwNGExZTg2M2M3Li5hNjhjY2M2ZGZhOTU1OWRkOWJiNTEwMjZmNTgzYTA5YjE4NDdh
NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5o
IgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQot
ICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYm
ICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9k
YXRhLT5pc051bGwoKTsgfQogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0xvYWRpbmc7IH0KICAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2YXRlOgog
ICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxs
cHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAKaW5kZXggNGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1MWFmMjc4OS4u
MWMwYjU3OGEwYTA0MTE5ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3Bv
bnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMK
ICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRj
aE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50
LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0s
IFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAg
IH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1
ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2Mjhk
NTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4
IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdl
IG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZp
bmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNo
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNl
RmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5n
KCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6
WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAg
ICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0
MWNjNWUyOWNlOTZiNC4uZmNjYzJhOWVkMjBkNzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAg
WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFk
eVN0YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAg
ICwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpKQogICAgICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3Rp
bWVvdXRUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsK
QEAgLTIwNyw4ICsyMDgsOCBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYigpCiAKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9t
IE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmlj
aWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT5pc051bGwoKSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT50YWtlKCktPmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50
VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFs
TUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1s
IHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7
CiB9CkBAIC0yMTgsOCArMjE5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgp
ID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVy
cm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVm
ZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBu
dWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051
bGwoKSA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJl
c3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAg
bV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxs
cHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+cmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0g
ZmFsc2U7CiB9CiAKQEAgLTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVz
cG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBl
bHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+YXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCmluZGV4IDcyODk0YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNh
OTVhZWI3NTQ0ODliZDZjZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRw
UmVxdWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFz
cyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwog
Y2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAz
NjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBA
IHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAg
ICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxs
b3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hl
ZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3Qo
dXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThj
M2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMx
ZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBA
IHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAm
Z2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmVi
ZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApA
QCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJl
ZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVy
LT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byog
cG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1
ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRp
bWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5
MWRiMWU1YWJkODQxODRjNjMzNmM4Li41NGRjMjBhOWExOTVkNTllODhhZDQ0ZGI1NDA1ZTkyOTMz
MTM4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25v
dXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1
ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFw
cGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
CiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxO
ZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDEx
IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZN
b3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAg
ICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRp
YWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5n
VGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxl
ZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAg
IGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1l
ID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYg
KGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJh
bWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlm
ICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAg
ICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZElu
Zm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVt
QnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdU
aW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJp
bmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91
cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmICht
X3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAg
ICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0
aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0
IE5vdCBNb2RpZmllZApAQCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXAKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ug
b2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUu
CiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+
Y2FwYWNpdHkoKSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXpl
KCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQogICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKICAgICB9CiAgICAgaWYg
KGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6
IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNv
dXJjZSBoYW5kbGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVy
LT5zaXplKCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhLT5pc051bGwoKSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5j
b2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwpA
QCAtOTA5LDExICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdv
cmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLT5nZXQoKS5nZXQoKSwgbmV0d29y
a0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYm
ICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVl
IG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNl
bmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCpt
X2J1ZmZlcmVkRGF0YS0+Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2Fk
TWV0cmljcykpOwogICAgIH0KQEAgLTEyNTQsMTUgKzEyNTYsMTUgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQobV9i
dWZmZXJlZERhdGEpOworICAgIEFTU0VSVCghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKTsKICAg
ICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEtPmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI3OSw3ICsxMjgxLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3Jpbmcg
Y2FjaGUgZW50cnkgYmVjYXVzZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICBMT0FERVJfUkVM
RUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBi
ZWNhdXNlIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTI4NywxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2go
KSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1By
b2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJl
ZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9y
ZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9u
c2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Np
b24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtl
KCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sg
Y2FjaGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVy
ID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNo
ZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0
byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkK
ICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkp
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUw
Yzc3MzcwYTlmMTU5NTk3Zjk3Li4zNDVjMmZiYTc5OGM2ZGI2YWRiNzcyMTEzMGJlMDRmMGRmNDQx
NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQ2LDYgKzQ3LDggQEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9y
bURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIyNSw3ICsyMjgsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291
bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9z
eW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6
OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlk
YXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2Fj
aGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggMzNhOWQ0YjZkZmI4ODEwZDJmNDI3ZTBm
ODc2Yjg4MWYwNDBlYzJlNi4uYTA3NjE3YjlhODllYjZkNWYyYjI5NmYzZWRhYjNiMzk5ZWIyNDk5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92
ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2Fs
bGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5k
ZXggMGFmY2IwNzA3ZGFlZDY3ZjBhMjc3OTY3ZDVlYzQ3MmRjMGZlMGM5Ny4uOTE2ZGM4NjFkZTA4
MjBhZjc5MDIwMmJiMGNmYjEyMjU1ZThkZGYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAg
dm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5
KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIz
ZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0
MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9
CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAg
ICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZm
NDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUy
Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0
b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNv
cmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihy
ZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwg
WyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
ICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAg
fSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcg
QEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVj
b3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBy
ZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3Rv
cmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdl
LmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmlu
ZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZh
MzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEs
OCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3Jk
KCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBi
b2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1f
YnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAg
IH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0g
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5
YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5mZTc1OWNlZGEyZDdiZDJlYWU4Nzg5OTc4
M2VmZjMzOTkyYTczYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBA
IC00Niw3ICs0Niw2IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBj
YWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgOiBtX2NhY2hlKGNh
Y2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hlRW50cnkoV1RG
TW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50
cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMDksNyArMTA4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNw
b25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZh
bGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjYsMTAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkg
ewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcg
ZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAq
IDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgp
ICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzgsMTEgKzEzNywxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKQogewogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkp
IHsgfSk7CisgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
aXNOdWxsKCkpIHsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmln
aW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtd
KGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBj
YWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkg
JiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9v
cmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNo
ZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3Jp
Z2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7
CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMw
ZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUg
eyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhm
MGI3ODA3ZDc0MTcxYWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMx
Y2E5ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERl
Y29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVl
KCkpOwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3Vs
dC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygp
OwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25l
d19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3
YmMxN2MzMjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
c3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwor
ICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdl
MGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQx
NThmNDEzMWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hh
cmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RG
TW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVm
ZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBt
X2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAg
bV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0K
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZm
ZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1
ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2Fh
ZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEw
ICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6
ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1l
bW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBB
U1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAo
KSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1
ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAg
Y2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3
IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMu
CiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNp
emVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2
ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNj
OTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNv
dXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRh
dGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkg
Q0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWlu
KGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBh
Yjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNh
N2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpG
b250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0
YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGls
ZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZv
bnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VE
YXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIg
Pj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0
Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUs
ICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBk
aXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBD
RkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4
IDBjMGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQuLjJjMTYxMWM5ZTcwZjhm
OWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDQ5ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxl
KQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgVVNFKENGKQotc3RhdGljIHZvaWQgc2hhcmVh
YmxlUmVzb3VyY2VEZWFsbG9jYXRlKHZvaWQgKnB0ciwgdm9pZCAqaW5mbykKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVy
KCkKIHsKLSAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGluZm8pLT5kZXJlZigp
OyAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2Nh
dG9yKCkKLX0KLSAgICAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZVNo
YXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJlc291cmNlKQot
ewotICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLAotICAgICAgICByZXNvdXJj
ZSwKLSAgICAgICAgTlVMTCwgLy8gcmV0YWluCi0gICAgICAgIE5VTEwsIC8vIHJlbGVhc2UKLSAg
ICAgICAgTlVMTCwgLy8gY29weURlc2NyaXB0aW9uCi0gICAgICAgIE5VTEwsIC8vIGFsbG9jYXRl
Ci0gICAgICAgIE5VTEwsIC8vIHJlYWxsb2NhdGUKLSAgICAgICAgc2hhcmVhYmxlUmVzb3VyY2VE
ZWFsbG9jYXRlLAotICAgICAgICBOVUxMLCAvLyBwcmVmZXJyZWRTaXplCi0gICAgfTsKLQotICAg
IHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZj
b250ZXh0KSk7Ci19Ci0jZW5kaWYKLQotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVz
b3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCi17Ci0gICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5
IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgotCi0jaWYgVVNFKENGKQot
ICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9y
KHRoaXMpOwotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNO
b0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4Pihz
aXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjZkRhdGEuZ2V0KCkpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgR1JlZlB0cjxHQnl0ZXM+
IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6
ZSgpLCBbXSh2b2lkKiBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291
cmNlKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgdGhpcykpOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShieXRlcy5nZXQoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgICAgICBbc2Vs
ZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAorICAgICAgICBb
c2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CisgICAgfSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxl
UmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpAQCAtMTM4LDkgKzEw
NCw3IEBAIFNoYXJlYWJsZVJlc291cmNlOjpTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVt
b3J5PiYmIHNoYXJlZE1lbW9yeSwgdW5zaWduZWQKIHsKIH0KIAotU2hhcmVhYmxlUmVzb3VyY2U6
On5TaGFyZWFibGVSZXNvdXJjZSgpCi17Ci19CitTaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJs
ZVJlc291cmNlKCkgPSBkZWZhdWx0OwogCiBib29sIFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGVI
YW5kbGUoSGFuZGxlJiBoYW5kbGUpCiB7CkBAIC0xNjIsNyArMTI2LDcgQEAgdW5zaWduZWQgU2hh
cmVhYmxlUmVzb3VyY2U6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX3NpemU7CiB9Ci0g
ICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4
IDdiNDdmNWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3YzZjYjcuLmEwZWQwODU3MzRiNzc1
NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNsYXNz
IFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+
IHsKK2NsYXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlYWJsZVJlc291cmNlPiB7CiBwdWJsaWM6CiAKICAgICBjbGFzcyBIYW5kbGUgewpAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3Vy
Y2U7CkBAIC04MCwxMiArODAsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFy
ZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJl
ZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3
cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVt
b3J5OwogCi0gICAgdW5zaWduZWQgbV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9zaXplOyAgICAK
KyAgICBjb25zdCB1bnNpZ25lZCBtX29mZnNldDsKKyAgICBjb25zdCB1bnNpZ25lZCBtX3NpemU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGMwYjZlZjNmYTNhMmUxMjA0YzY3N2VjZjg2
YWVjYmQxOWJiNjRkN2IuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApA
QCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgh
YnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBS
ZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAg
ICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTIzNCwxMyArMjM0LDEzIEBAIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PFNoYXJlCiAgICAgaWYgKHNoYXJlZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpIDwgYnVmZmVyU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgp
KSwgYnVmZmVyU2l6ZSk7CisgICAgYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVT
aGFyZWRCdWZmZXIoYnVmZmVyU2l6ZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBk
YXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBz
dGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRh
dGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAg
QVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkg
PSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7
CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVy
IDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQu
cmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9k
eSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRj
aE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9u
YWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFz
U2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgz
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsK
KyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUu
cmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1v
dmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RG
TW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3
ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7
CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0
ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFh
MzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzEx
NCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBj
bGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVj
b2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDli
ZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBz
dGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46
OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9t
RGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURh
dGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAg
ICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7Cisg
ICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3Bw
CmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUw
MWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJl
ZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpD
cmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXND
cmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZh
Y2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkw
ZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VE
YXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcm
KQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmlu
ZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3
ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmls
ZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBA
IC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJv
b2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2lu
Z0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBj
b25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250
ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6
OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcuLjdiOGRmNDZh
YzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTQw
LDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29y
a0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShm
dW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+
JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1
aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlh
MzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUy
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6
aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFw
cGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZp
bGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNv
bnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEp
OworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVw
cmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNo
bWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggYmFkNDdjMDc2ZWNkYzVhOGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0NS4uNmZhNDFm
MzQ0Y2U2OWIyYzZjODIxMjlhNjAxMzhhMWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1OTUsNyBAQCAt
ICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0Jilo
aWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGln
aHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tB
cHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdr
SGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdo
bGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3
R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJW
aWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpo
aWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVk
SW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZh
YTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEs
NyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBH
dGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAg
ICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dp
dGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAg
ICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAg
IG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIx
ZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpA
QCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5h
dmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlk
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkp
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsK
KyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmll
dyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KaW5kZXggMTc0NzBjNjJjNzIwZGRlODJiNzkxNWI3YjNiNTgyMDIzZWI1MWVjNy4u
YmJlZjY2NzM1MWEwYTJiZjU4ZGZhZjVhNzIxMDAwNmEzMThlYWY0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVi
b2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgICAgICBh
dXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNo
YXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigw
KTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihpcGNIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBz
aGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUp
OwogICAgICAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUp
OwogICAgICAgICBkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2FyZChjb25uZWN0aW9uLCBwYXN0
ZWJvYXJkTmFtZSwgcHJldmlvdXNDaGFuZ2VDb3VudCwgbmV3Q2hhbmdlQ291bnQpOwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYz
OTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3YjRl
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBA
IC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAo
W1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3Bh
Z2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2Fj
eVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAg
ICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9
CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAg
ICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlz
aWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAg
ICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3Rl
Ym9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilr
VVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAg
LTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVi
b2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1f
cHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19i
cmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQog
CkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21p
c2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFp
blB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAg
IGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UK
ICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdy
YXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRoUmVz
dWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwog
CiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRh
Rm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwot
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAg
ICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQYXN0ZWJv
YXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li41
NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJw
cmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZl
bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVt
ZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShX
ZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYjJmNTY1ZmYwNTQzZDYyMTNjNjM4ZDhhYzM0Mjk1YWRhZTk5MzVmMC4uZTBm
ZTk0NGVkNzE3MzIzY2M0ZjQ1M2IwODUyYTgwODBlMGE2MzNmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzgsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rv
a2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRl
cigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRm
NTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjU4NTQ3ZDg0ODgxZGM4MzBm
Njk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6Oldl
YlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5
JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwg
bV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJh
bWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShz
eW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZl
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2Rh
dGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5j
RGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOwor
ICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1
dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAg
aWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBp
ZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwg
bV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRh
LT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50
YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmND
b21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwot
ICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2Vi
UGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRl
eCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGEx
NWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2su
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJh
bWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVy
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
bV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5j
RGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5j
RGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNh
bGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZm
NmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0x
ODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92
ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlv
bkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42
NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3
LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRp
b25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRh
ID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1Nh
dmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggMWE4MWNjZTQ0NTVlYjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYS4uMGM2
MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdhYWZhMzRjZjdjMzQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihT
RUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1
c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5k
aWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmRE
YXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmln
aW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlF
UzsKICAgICAgICAgfQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVi
b2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25z
dAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZp
ZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAsNyArNzU3MCw3IEBAIC0gKHZv
aWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3Rh
bnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVS
TCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFn
ZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdl
IHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZp
bGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50
YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2Vu
dGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEg
aW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJW
aWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ2NzlkN2IwOTgxYWE3ZDNmY2Q5
YmRlOTBlZDZmZjJhYzIzMmVlMTUuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJk
MTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTg4
LDcgKzU4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3Qg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlCiAgICAgaWYgKCFzaGFyZWRNZW1v
cnlCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIo
aW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogICAgIHBhZ2VDbGllbnQoKS5zYXZlSW1hZ2VUb0xpYnJh
cnkoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmQzMzM4NjllNGUwMDEyZDI3ZDNmZTg1ZDg1ZTUz
YTRlZDk2OTYwYS4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0y
MjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDAsNyArMjQwLDcgQEAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHIKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFw
KGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwog
ICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAq
PihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAg
cmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5k
YXRhU2l6ZSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTI3NSwxNSArMjc1LDE0IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAgICAgYXV0byBzaGFyZWRNZW1vcnlJbWFnZSA9IFNo
YXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlJbWFnZSkKICAgICAgICAgcmV0
dXJuOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hh
cmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVk
TWVtb3J5SW1hZ2UtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0
YVNpemUpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwotCiAgICAg
aWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJl
ZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVk
TWVtb3J5QXJjaGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXJjaGl2ZUJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFy
ZWRNZW1vcnlBcmNoaXZlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGFyY2hpdmVIYW5k
bGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUFyY2hp
dmUtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihhcmNoaXZlSGFuZGxlLmRhdGFTaXplKTsKICAgICB9CiAg
ICAgcGFnZUNsaWVudCgpLnNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBX
VEZNb3ZlKGltYWdlQnVmZmVyKSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2Vz
dGVkRmlsZW5hbWUoZmlsZW5hbWUpLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkws
IFdURk1vdmUoYXJjaGl2ZUJ1ZmZlciksIG9yaWdpbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRk
ZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkw
MzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwog
fQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6
V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0
OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNp
bXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZj
N2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3Nl
dEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4p
ZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFu
ZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2
b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVs
ZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29u
dHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFw
cGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9y
IChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVi
b2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5h
cHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwor
ICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMz
OTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2Fy
ZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3Rl
Ym9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
K3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVu
dC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMg
PSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAg
ICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAg
ICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRh
PigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0
ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkp
OwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4
ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25z
dCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJm
b3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25z
dCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYx
NDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNo
YXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAg
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVy
ZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1
bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChX
ZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAg
ICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAg
ICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25l
ZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVh
c2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91
c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRD
b3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNv
bnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1
ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0
b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlN
RVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVh
Y2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1t
CmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4
OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVs
U291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmls
ZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291
cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAg
ICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5k
ZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZj
NTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENh
Y2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVz
b3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVh
dGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJj
ZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5
NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJO
ZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVk
IHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxl
ci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9s
bGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFM
ZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
IH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4
Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkxZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAg
LTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50
JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdl
KHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJh
bWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwg
bV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkK
IHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0
LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewog
ICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6
SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQot
ICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
LQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICgh
bV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxT
dHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJv
cjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51
YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05Mjks
OCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21h
bnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0
ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAg
ICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNo
ZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQg
UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVj
ZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0
aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVh
bFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxT
dHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1
ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50
LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0
MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5NmQzZGYwZGIz
Y2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUu
CiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMg
dXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmlu
ZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50
aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4
IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLmRlZDFkZTE5YzE5MjVk
MzdiOGQzOTNlODVmNjVmNWI3M2EyYzI5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25z
ZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJC
dWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRl
cj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24o
bV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1f
ZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICB9LCBbdGhpc10oU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Cisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlci50YWtlKCkpOwogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1E
YXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRl
eCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5
MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9i
TG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZv
cm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0
YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNl
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZl
ZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1
ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAg
bV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMy
OGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVu
ZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
OwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZp
bmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3
NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQy
MzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzEx
ODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNv
dXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBt
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAg
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFp
blJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVk
RmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNWQwNWMwZWFiNzZiNjJiNGY4MzZjODU4MjIxZmVhNDQ3
MmUwNTU2ZS4uNmYzZjU2NmM1MmYxZTM5ZGVmMDBiNWYzMTlmZWJhZTY2NzhhMTljMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0
KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVw
bHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZl
Y3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJy
aWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0
ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRl
QnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3Mg
Zm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgaXBjSGFuZGxlOwpAQCAtMTQ1LDcgKzE0NSw5IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
CiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJl
ZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRh
dGFTaXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVy
KGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpAQCAtMzIyLDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJp
bmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRh
OwpAQCAtNDA0LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJu
IGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0
ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBs
eShpcGNIYW5kbGUpLCAwKTsKQEAgLTQxMiw3ICs0MTQsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1
ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9y
eUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9y
eUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIFVS
TCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmlu
ZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgwOGUx
ZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5n
c0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
QEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBv
dmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNs
ZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2Vu
ZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4u
NzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91
dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5LDEyIEBAIHZvaWQg
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXIt
PmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmll
d0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAg
bV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
UmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0
OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFlMDUwYTk5MjNlYTdlZjk1
NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNTQsNyArNTks
NyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0
cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
LSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNj
Njk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2Ni
YmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEo
KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBz
aXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVk
TWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBA
IC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFn
SW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAg
ICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFy
Y2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5T
RGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAg
ICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5
YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcy
YzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1l
Ojpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURh
dGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJl
c291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVy
LT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJj
ZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1h
aW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0
YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29u
c3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDc3Zjg0ZGNlN2ZhYWE0OTJhYTU1ZmVhMDI1YmI2MDZlMGZkMDZjNWEuLjEwYjRhYTQ0MDJmOGUx
NTBhYWRkNmYyYmE0YzQwN2FiNDU4ZmIwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzM4LDcgKzc3MzgsNyBAQCB2b2lkIFdlYlBhZ2U6
OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVk
TWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSks
IGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6
Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5k
U2Nyb2xsVG9BcHBIaWdobGlnaHQoc2hhcmVkTWVtb3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBj
SGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBT
Y3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBk
NDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjlj
MTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3Rl
Ym9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQog
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVi
b2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6
Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThk
NzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRk
NzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9Q
QVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVS
TkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0
c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXgg
ZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1
NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNE
YXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRh
dGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdl
LT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYw
ZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThl
OGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
KSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7
Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVl
c3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpE
T01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3
ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpA
QCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGlt
cGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBO
b3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjku
LjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRp
ZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVj
dG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBm
YzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2
YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGlu
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4
IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4
ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0Rh
dGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1
cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJl
cHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4
OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZl
QXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtz
ZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFy
ZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1
bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFy
Y2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNl
ZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1
dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJi
NTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEs
NyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51
SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1h
Z2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRl
bXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5n
ZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQog
CiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIx
OThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVk
NWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENv
ZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUt
PmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNT
dHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0g
bmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYg
KHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0
YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAg
ICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2Rp
bmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291
cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRh
IGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpk
YXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtl
bmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVu
Y29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAg
ICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5T
VVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUK
ICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBT
aGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5k
ZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+
ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAg
IHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29y
ZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNv
cmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQy
ZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3Ry
ZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQog
Ci1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEy
OTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMx
MjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1
LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVt
b3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0
cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVh
bSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9
OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2
MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQg
V2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAg
aWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZE
YXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZE
YXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4
Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4
YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmlu
YWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3
MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4
ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAK
QEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRw
dHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJl
dHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0
YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAg
ICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJF
U1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJE
b2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjZkYzRh
NDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIg
dAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBf
SW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIg
dXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3Rh
dDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkp
KSB7CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5f
b3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogICAgICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRl
ciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3Ig
YWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVE
KGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVm
ZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkp
KTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5j
b2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtl
KCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVy
biBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXgg
OTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4
Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkK
ICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJl
c291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5
U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjlj
OWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2Nh
MzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICsz
Niw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGJlNDg0NzE3ZDRhYjQzN2JlZTY4NjdmMzM4MDg3NGE3YjdjYWZlNzQuLjBh
YjQ1MGE0ZDQ3ZmU1ODZiM2IzMzgzOWI2MDEyYzJiN2UzMjFjMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVm
ZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAg
ICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTEtMzAgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIEV4dGVuc2lvblRhYkFjdGl2YXRp
b24gZGlhZ25vc3RpYyBldmVudApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMy
N2IyMTJjN2NhNDY4Li4yMjBhMzgwMDc4MjMxYTVkYjUzNGU3NDMwZGNkOGU3N2NkMGYwNzdkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQzLDQ1IEBAIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3Rf
ZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3Rf
ZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
PT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgp
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5
KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUp
OwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAg
RVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xl
YXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVF
KCFidWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEo
KSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RS
VUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAx
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRl
ci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBF
Q1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDEwICs4OSwxMCBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0
YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hh
ciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0
YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0
YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0
YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVy
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0
RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIs
IHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVj
dGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEo
c3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1
ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTExLDEw
ICsxMDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
TGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3Iw
KSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJU
X0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAw
MDsgKytpKSB7CkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5j
IHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxl
Y3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFz
c2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4o
dGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
YnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50
U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICog
NCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25l
ID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25l
LT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+YXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEobGVu
Z3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1aWxkZXIyLmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVpbGRlcjIu
c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsKKyAgICBFWFBFQ1Rf
RVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVt
cHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0
ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0
ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1
dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRh
a2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVy
LnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VR
KGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50
aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVp
bGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkp
OworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVs
bCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMg
dm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5n
dGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc1LDYwICsyMDQsNzAgQEAgc3RhdGljIHZv
aWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3Ro
LCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsK
LSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2Qn
IH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEp
KTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAg
ICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wg
PSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVE
YXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1
dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wg
PSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNv
bWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURh
dGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tC
dWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVy
KGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgp
LCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCks
ICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIp
OwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVj
a0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Cisg
ICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tC
dWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIEVYUEVD
VF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgp
LCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRh
dGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0Vx
dWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhf
dD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZv
ciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
dGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5n
ZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywg
J2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3sn
YScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQ
RUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2Mn
fX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgp
LCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0
KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsK
KyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcg
fSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBF
Q1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5n
ZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdl
dCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
dDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVm
ZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAg
ICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1
aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsK
IH0KIApAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQp
CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVU
ZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
MSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRl
ci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0g
MikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAg
IEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAg
ICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4
dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIx
MTAuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1
YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAg
ICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBi
dWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0Rh
dGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsK
LSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVs
bG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5n
ZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3Js
ZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAg
IGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2Jy
aWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpo
ZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0
YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVy
LT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJh
eSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNV
SW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0
aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAo
YXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50
IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdt
ZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291
bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENv
dW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVu
dENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsK
LSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShw
b3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7Cisg
ICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVE
YXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEu
Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50Kytd
XSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAg
ICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3Vu
dCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0
ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRT
b21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRl
LmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNB
U0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5z
aXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445549</attachid>
            <date>2021-12-01 04:08:07 -0800</date>
            <delta_ts>2021-12-01 04:36:06 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211201230802.patch</filename>
            <type>text/plain</type>
            <size>518294</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgzMDRiN2VkMTRkZWQz
OWExMjE3OGY5ZWIwMTY2YzZlY2QxMGQyMC4uMDRmNTQ3OGQ3YzAwMDMyMTQ3M2UwMWE3MzViNTA3
MjAzNWQwYjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBi
ZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZl
cmVkRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJl
bGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERh
dGFCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFk
ZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3Vy
Y2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJl
c291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
c3RpdHV0ZVJlc291cmNlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRl
bGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4
dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAg
KiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3
Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyOjplbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6cGF5bG9hZCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2Ny
aXB0QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRT
ZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToK
KyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpp
c0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRM
b2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAg
ICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlp
bmcgZGF0YSB3YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3
aGlsZSBiZWluZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2
aW91ci4KKyAgICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2gg
Z3VhcmFudGVlIHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3Vz
IGRhdGEuCisgICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hh
cmVkQnVmZmVyIHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250
aWd1b3VzU2hhcmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3
ZXJlIGFsd2F5cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBj
b252ZXJ0ZWQgdG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5
LCBhIFNoYXJlZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVl
ZGVkIHRvIGJlCisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJl
IGFjY2Vzc2VkOyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24g
aXMgbm93IGV4cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgor
ICAgICAgICBUaGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJl
aW5nIGNvbnZlcnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIuCisgICAgICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFy
ZWQgYnkgcG90ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2Fy
eSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAg
ICAgICBvbiBkZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxh
dHRlbmluZyBjb3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9p
bnRzIHdlcmUKKyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUg
YnVmZmVyIGNvbnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBt
b3JlIFNoYXJlZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAg
ICB3b3VsZCBoYXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEg
cG90ZW50aWFsIGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAg
ICAgICAgU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJh
Y2tpbmcgaXQuCisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUg
Y292ZXJhZ2Ugb2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNo
IG1ha2VzIHVuZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVn
IDIzMzQ0MiwgYSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAg
Q292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6
CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVh
ZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRC
dWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29t
cHV0ZVJlYWxCb2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmtleUlkc01hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVy
YXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJl
c3BvbnNlOjpzZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURh
dGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6YWRkRXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRI
YXNJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
bGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRDb3VudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6
YmluZEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1
cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9T
ZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRl
VG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
Lmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5o
OgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hp
dmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpn
ZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpk
YXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6Cisg
ICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1l
bnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
dGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFk
UlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVE
b2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJz
ZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyOjpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExv
YWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQ
cm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFj
dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291
cmNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9u
aXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmls
ZUJhY2tlZCk6CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3Qp
OgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VT
ZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdl
L1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6
OlNoYXJlRGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFp
bnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50
OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpT
aGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
U2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5v
d1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtX
ZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6
XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0Rh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVu
dDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJz
ZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlv
bkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21D
ZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hh
cmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2Rl
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vZGVsOjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9kZWw6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJD
b3JlOjpyZWFkVUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09G
RlRvU2ZudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VK
U09OVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpj
cmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGlj
Q29ycmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBo
SW5mbzo6bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFy
aWFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlw
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdl
YkNvcmU6OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vi
c3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxp
c3Q6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVM
aXN0OjpmaW5kRmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFu
Z1N5c1RhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpT
Y3JpcHRUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OlNjcmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlw
aFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0
Q3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRh
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
aWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVt
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZm
ZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9h
cmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFy
ZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVz
cG9uc2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAg
ICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
b2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEtMzAgIHVq
d2FsIGtvbmVydSAgPHVqd2FsLmtvbmVydUBzb255LmNvbT4KIAogICAgICAgICBGaXggUGxheXN0
YXRpb24gYnVpbGQgYWZ0ZXIgcjI4NjE3MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MDZkNDk3NDkzMjE0ZjY0ZjIy
MWE0NDI2NjczNTZhYmU1NGI4MDVmLi5hOTA5NDFkNDMxN2RiZjYxNzRkYmRiNDZiODBkMTI4ZmU3
Zjc5YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MyBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNr
OjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRD
b21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpt
YW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpt
YW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNv
dXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJN
YW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
RmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAg
ICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5j
b2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFV
UkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpT
aGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVy
KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hh
cmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToK
KyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAq
IFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAg
ICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBl
c0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Vs
ZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46
OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRh
Y2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
dG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJv
dmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5h
bWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRv
TGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZp
ZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNo
T3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpz
aGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVu
ZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
TWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5IGNvbnN0KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5
IGZyb20gYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84
NTYzNzcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIGNhbiBkaXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIg
dXNpbmcKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4K
KyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90
YWwgbWVtb3J5IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZv
ciBudWxsIHdoZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAg
ICAgIGluIGEgY291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6IFJlZmFjdG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBz
cGVjaWZpYyBjb2RlIGFuZCB1c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6
ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFn
ZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZSk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFi
aWxpdHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBu
dWxsYWJpbGl0eS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9J
bmRleCk6CisKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVk
TWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0
bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAg
IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNo
YW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXpl
IHJlZHVjdGlvbi4KKworICAgICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1h
cHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBs
ZSBvZiBzcG90cy4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtl
IFNoYXJlYWJsZVJlc291cmNlIHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBT
aGFyZWFibGVSZXNvdXJjZSBvbmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVk
TWVtb3J5IG9iamVjdAorICAgICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcu
IERlbGV0aW5nIHRoZSBvYmplY3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMg
c2FmZS4KKyAgICAgICAgTWFrZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBs
YXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3Rl
YWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAg
IChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
YXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9y
IG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2lu
ZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNj
cm9sbFRvSW5kZXgpOgorCiAyMDIxLTExLTMwICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBFeHRlbnNpb25UYWJBY3RpdmF0aW9uIGRpYWdu
b3N0aWMgZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MDFkNTAxYWIzODAx
N2YxZDhmOWU4MWM5YmVmZGMyZDdmNmYxNmZlLi5mMzUyOWRlYjcyZjFlZjVkZDdlMTg0ODliMDRh
YmRhZTRlNDM2OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBk
YXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1M
UmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENv
ZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJl
c291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUgdG8gY2hl
Y2sgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IGNhZDYxYTc3YTAxMGNkZDg3MGYwYTVjNjdkMjEzOTY5NjZiYjYw
YWMuLjc4YzM4NTZjMTllYzRlZDkwY2Y4YzRmM2FjNTg0NTdmOTNlY2QwNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAg
ICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1l
bW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToKKyAg
ICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAg
ICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEp
OgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVh
dGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMS0xOCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFVz
ZSBPYmplY3RJZGVudGlmaWVyIGZvciBBWElECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJl
ZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0y
NjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlw
Ym9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1h
cmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2Fu
aXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVs
c2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAg
ICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4
NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZk
MDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikg
ewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5j
ZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdp
dGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdl
LmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQu
Z2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMp
LCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEz
MTc4NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2UzOTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2Ug
Q0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAg
ICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVw
IGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBu
c0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJ
bWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNm
ODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRj
NTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
dWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25z
dCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdU
Rjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewog
ICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVy
LT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA5MDk4ZTA1YWY0
Yzg0MzNiM2QxM2IzOTU2NTA2NGE5YzE1NDMzODdkLi44Njc1MGRmZWVmZWM1NTVjYWY5YTFiYmY4
NTEwNjBhNTlhZmYyODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVx
dWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+
YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVs
bHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1d
IChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVC
b2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCBy
ZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBS
ZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0yOTgsMTUgKzI5OCwxNSBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJl
cXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5y
ZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlv
biwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFu
ZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtl
KCktPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAg
IH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVx
dWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJlc3Bv
bnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigp
XSgpIG11dGFibGUgewpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNo
CiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1dG8g
YnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBib2R5
ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9u
c2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJv
bWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIERP
TUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNw
b25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1
bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAg
ICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0Fj
dGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRl
cigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdU
Rk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4Miw5ICszODIsOSBA
QCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBk
YXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1
dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEudGFr
ZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCAxMzk3NTRk
MzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1
N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAg
ICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAg
dm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8
RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9u
c2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAK
ICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMg
fTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCAyNTkxNGI0
MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4
ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29s
YXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+
IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7
Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VC
b2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0sIFtdKGNvbnN0IFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAg
ICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBh
cmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qg
c3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2Fj
aGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAg
UmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEuY29w
eVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
c3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJl
ZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsK
ICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJh
MDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThhM2NhM2FhYzJlNDEy
MGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2Vw
dGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVy
eUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVy
bCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhcnlI
ZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBSZXNwb25zZUJvZHkg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNl
Qm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVf
RVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFh
NjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBT
aGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1h
dC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNp
emUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZl
ci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihq
c29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRz
QXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBr
ZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0
VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAg
ICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3Qt
PnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNv
bkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5j
cHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZi
NWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3QgU2hhcmVk
QnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0byBsZW5ndGggPSBhLnNp
emUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgp
LCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpo
YXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9w
dGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0
YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1
ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRy
PEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2
ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3
MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRj
aEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZv
cm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNv
bHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVk
QnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1l
ci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwg
c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ug
d2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBG
ZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQog
ICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAg
ICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1
cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRh
a2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsy
OTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAg
cmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFy
YW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFu
ZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0
cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJy
YXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJv
ZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRh
KCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVm
ZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwg
YXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFy
cmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgp
LmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2
NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29u
c3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBUYWtlbkRhdGEg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0
QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEx
YTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyAr
MjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNl
dCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAg
ICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Us
IGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNp
bms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVm
ZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNl
KSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtl
KCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5k
RGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1f
c2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgs
NyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBG
ZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIg
PSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0
YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0
YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9N
Rm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNl
LT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAg
ICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNl
dERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1fYnVmZmVyLnJlc2V0KCk7
CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCiBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewotICAgIHJldHVybiBXVEZN
b3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAgLTM0MSw5ICsz
NDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7
Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCktPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1
NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVy
biBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6
ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0
cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0
YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9i
dWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5n
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQsOCBAQCBTdHJp
bmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsK
LSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtl
KCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0
dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZN
b3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1
ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIg
PSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5l
bnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNl
cHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJi
YmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsOCArNTAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQp
OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
OyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZl
ciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8
U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7
CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9j
b250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1f
Y29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA1ZDQ1
MmNlMjg4Y2VkYzAyOTMyZDkzOTZmNjQ2MDA0NmU0NmJkNTM2Li5lNGU5MDhmMmJjOWEwNjgzMGU2
NGJhYzVkMzEwMGM4ODBhYjdjMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9u
c2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxs
YmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBTcGFuIGNodW5r
IHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBjb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURhdGFDYWxsYmFj
aygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRk
aW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuc2V0
QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlz
XShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlzQm9keU51bGwo
KSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuY29u
c3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGJjNTg1NGY5Yjk2NmZiNjMyOWQxNmZkZTYx
OGNjZWIxZDhjOTRjYTkuLmExNjA3NDdkZTBjZWFjZWVjYzc3OGQxZmY3YjVmYjJhZTBlYTE4M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04
NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5hbDsKICAgICB2
b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cisg
ICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFJlc3BvbnNlRGF0
YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYsIHVp
bnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4
NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2YjllNTI1ODcxZDgx
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhp
Z2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCks
IDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVy
IDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3Yjdk
YWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5
OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBAQCBjb25zdGV4cHIg
dWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8g
RmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBj
b250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGln
aHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRh
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUyZmQ1NmFmMzBi
NDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+
JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2Rlcigp
OwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRh
LmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0
YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0Li5hYWZk
YjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktl
eURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qg
c3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZiN2VlNWNjODc0
MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1
ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2
LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4
KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rp
b24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24t
Y2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAg
ICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7
CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0
b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0
IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
YwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNy
ZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9Owog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXpl
SURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2
ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFi
YXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwog
ewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5k
ZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGlu
ZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFp
bmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
aW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8g
Y2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUz
MywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4
UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwg
a2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4
S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRl
eEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5k
ZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGlu
ZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRv
IGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwor
ICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAg
ICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVl
IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNh
Y3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0
IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8g
a2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNo
ZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUo
KSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJh
bnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRo
ZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRh
YmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9y
ZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24i
X3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmpl
Y3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJf
cyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBh
dXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAg
ICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2Vy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07
CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9
IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9
IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQz
LDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdl
dEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5p
c1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXku
dHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGlu
ZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3Mg
fTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBv
dXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxs
KCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkp
OworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsK
ICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5
IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAg
YXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4
aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5
IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9y
IGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3
ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVk
ZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2
OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVt
ZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9P
SykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVu
dCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcg
QEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0
byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhT
dGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FM
SVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQg
dG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0
OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBA
QCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1f
aXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRp
bmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50
aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVm
ZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRl
bnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMu
Y2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1
NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZk
MmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAK
ICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKICAgICAgICAg
c3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAg
ICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4
dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAg
ICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApp
bmRleCBhZTdiMmUyZmNhMGQzN2FhNTM5OTlmYTYyODRhNDU5YTRlNDczMWFjLi4wMjhhOTE5ODU4
MTdmZDM2OWU3MGY0Y2FhYjk0ZTFhMTRmNWQwYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0x
MTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3Qg
VVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUgPSBmYWxzZTsKIAog
ICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBIVE1MTW9kZWxF
bGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fZGF0YS5l
bXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7CiAgICAgbV9yZXNv
dXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0g
ICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9pZCBIVE1MTW9kZWxF
bGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5l
dHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRPckNhbmNlbGVk
KCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhLnJlc2V0KCk7
CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsK
IApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAg
ICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1f
ZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJj
ZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkp
OwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmgKaW5kZXggMzYzOTNhM2I2ZjkyN2ZmMDRmYmMyNWVkNTdhZGRhZmMzOTI5ZWFm
My4uOWM0NzI2ZjI2NDJkZjAxZDMzYWJjZGY0ZTMxZWM4MmY0YzlhN2Y0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVSTDsK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFk
eVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3Nj
ZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQppbmRleCAz
ZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAzZWM0ZDI1NjhhNjZm
ODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRN
b2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNV
Ukw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAg
ICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmls
ZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEFTU0VS
VF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDUyNTEw
YzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5NjFjOTk3MzE2MzFm
MGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0aWMgSlNDOjpK
U1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSBsb2FkaW5nLgog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4
CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9u
KCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxl
bWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
KyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAg
ICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAgIH0sIFsmXShzdGQ6
Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1Y2U4OTViZGQwMzFh
Y2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFlYTg0ZjRiMDJiMWUy
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYmICghbV9jb250YWlu
c09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAgICAgICBtX2NvbnRp
Z3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRh
aW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAg
ICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX2NvbnRpZ3Vv
dXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAg
ICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAgICAgbV9zY3Jp
cHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVI
YXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKm1fY29udGFp
bnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAgICAgICAg
ICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7CkBAIC04
MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX3Nj
cmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0g
bnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBAIHByaXZhdGU6CiAg
ICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11dGFibGUgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBtdXRh
YmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2Nh
Y2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250
YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmlu
ZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQuLjRiNDM5OTU0ZjE5
YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3Vy
Y2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9p
bkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBTVkdGb250RWxl
bWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9udEZh
Y2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIG90ZkZv
bnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90
ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUo
KSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAgICAg
ICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3VtZW50
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENTU0ZvbnRGYWNl
U291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNlIGlmIChtX2lt
bWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2Ut
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3Vy
Y2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6
OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsK
ICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMxMjNiMmRkM2E1
N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEwODgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9y
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
Rm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBAIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFjZUVsZW1l
bnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBG
b250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRG
ZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxD
U1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBv
cmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+
IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRo
ZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0
ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZ2VuZXJh
dGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlh
dGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1f
aW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdhYTQuLmZhMTQ2
N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRp
dG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChlbGVt
ZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVmOThiMTFjMjI4Yjkx
Yy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1j
bGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFU
cmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFu
ZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyArNTM3LDcgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxl
Y3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdl
cygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50
Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsK
ICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJB
cmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVj
dGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhUTUxGb3Jt
YXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChF
bGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJB
cmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3Ry
aW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgogICAgIHZv
aWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMm
LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5MDA2ZjVjZjlk
YmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3
ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0
cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVudGlmaWVyOwog
ICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCBh
ODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5MzMxMDBjNjU1ZjFm
YTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVkaXRvcjo6cGxhdGZv
cm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAK
LXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3Ry
aW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhO
U0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAgaWYgKCFhdHRyaWJ1
dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9v
dE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6
bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05T
S2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5n
IHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwogfQogCiBTdHJpbmcg
RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcsNyBAQCBTdHJpbmcg
RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3Ry
aW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBv
dXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoZWxlbWVu
dFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgRWRpdG9y
OjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50
LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBh
cmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAgICAgICAgIG91dFR5
cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAgICAgICAgb3V0RGF0
YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOworICAgICAgICAgICAg
ICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEsMTIgKzE1MSwx
MiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBh
c3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFdlYkNvbnRl
bnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRv
cjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCiB7CiAgICAgYXV0
byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihtX2RvY3Vt
ZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAogLy8gRklY
TUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyIGFsd2F5
cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQgZG9l
cyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1c2VyVmlzaWJsZVN0
cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1
cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQog
ewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJh
bmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21S
YW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUlu
dGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5NmI3ODA4Zjg4MzU0
YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0
MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1l
bnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKICAgICAgICAg
aWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1cmwpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICAg
ICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9odG1sIikgewotICAg
ICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAg
ICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVy
KiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAgICAgICAgaWYgKFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2Uo
VVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLnN1Z2dl
c3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8ICFbZmlsZW5hbWUg
bGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0
aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCkpOwpAQCAtMjMy
Myw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBl
ckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIGlm
IChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1dG8qIHJlbmRlcmVy
ID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1NGU4MmI5OWIzMTk0
MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMxNzM2NzMwOTgxNjc5
ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxh
Y2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21l
bnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsKICAgICAgICAgU3Ry
aW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0gICAgICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50OwogICAgIH07CiAKQEAg
LTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNo
bWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5LT52YWx1ZTsK
LSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5p
cXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKSB9
KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQu
dW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0g
Im1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdU
Rk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVl
LT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwogICAgIH0KIAogICAg
IGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+
KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNo
Q29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZy
CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJf
czsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5h
bWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgp
LCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdU
Rk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAo
YXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00NDIsNyArNDQyLDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRN
TCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJr
dXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5k
QXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3Vy
Y2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0
YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNo
aXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9v
bChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3
IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUs
IERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1
YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4
KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250
ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBz
dWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAg
PSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBz
dWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVB
c0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVm
ZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0
cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZm
ZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1
bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFn
bWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdt
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFm
cmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2Yzg5MmYwOWI3Nzc1
M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2LDE1IEBAIHZvaWQg
RWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQo
U3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJB
cmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdl
RWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
aW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVz
ZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhpcyBmdW5jdGlvbiBp
cyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0aHJlZSBzZXBhcmF0
ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5IHVzZWQgaW4gV2Vi
S2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9ydCBPUyBYIHNlcnZp
Y2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmlu
ZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEuLjEwMTZkY2YzYzE5
OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9pZCBGVFBEaXJl
Y3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYg
aW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJp
bmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHBy
b2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0g
RlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykK
K3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBs
YXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0
cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3Rv
cnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxv
YWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZmZXItPnNpemUo
KSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW5saW5l
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNl
dHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERv
Y3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9j
dW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1w
bGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCkt
PnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5n
IHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0
aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2Us
IHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBG
VFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1
ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0
NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJl
cXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2
NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92
ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAg
bV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwog
ICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNp
Z25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQog
ICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFC
dWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/
IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXpl
KCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NF
UlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0
YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVs
c2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQog
ewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0g
bV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+
c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQg
PSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29u
dGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5k
YXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7
Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmlu
ZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNk
N2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQx
LDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAoV2Fs
bFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAgICAgIGJv
b2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAg
ICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgpOyB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNpemVf
dCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURh
dGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmlu
ZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZp
Y2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVs
bHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3
MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1NzQ2NTU5ZGE0NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJl
YXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2Rl
ciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWlt
ZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
ICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAg
ICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3ZGYxMjEwNDA1ZmVm
YmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAwM2VlNDBhODdlMDZm
MzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6
ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1l
bnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
SW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3
aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6
c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyog
cmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEo
KSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFt
ZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUs
IHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJk
ZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIz
Myw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwog
ICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVz
b3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXIt
PnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEuLmQw
OTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0x
MzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxp
Z2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVxdWVz
dCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3Qo
cmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVudCgp
LmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0UmVx
dWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlh
bHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNkODQ1MGY3MWMyYzM3
M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5MjgwNmVhZTY1NTA1Mjkx
Y2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJj
aGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NF
UlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0g
Km1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZt
YWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3Vy
Y2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFp
blJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkp
OwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJj
ZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRh
dGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2Vu
ZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFy
Y2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5z
dG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVE
YXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJz
ZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEu
Z2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXli
ZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1
cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRM
b2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgY29t
bWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VE
YXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5n
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1YzQ2MGU0
ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3MmZmYzg3NjZiZjEx
Y2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAg
LTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNzIENh
Y2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBDb250
ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21I
ZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIyOCw3ICsy
MjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVz
b3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNv
dXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJj
aGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2
ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZl
TG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBA
IC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVOQUJM
RShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBtX2Fy
Y2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKICNl
bmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3YzgzMi4uYzcwOTY0
MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1OTUs
NyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGlt
ZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVu
dCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJj
ZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFhMzYwMGNjODNkYzU4
YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5ZGJkNWQwODU3Yzk0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3Niw3ICsyNzYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5n
ZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9u
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2MTA4MzgwNTY2NGUw
MTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3NmI3OWFhN2IwMTQ2
ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTAx
LDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2Fk
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5
IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRl
bnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBv
cHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVu
dCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZl
cnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3Qu
dXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDksNyBAQCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwg
cmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwog
ICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVu
dENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9y
LCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJh
bWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExpa2VE
ZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpG
ZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYwOTM0MThkZGRiMS4u
YTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNl
OwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21l
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kg
OiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FS
Q0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcmNo
aXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVu
dENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5
LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRh
dGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQ
b2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0
ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpvcHRp
b25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9p
ZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIHN0
ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQzY2E4
NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUx
ZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
UmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBm
cmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZy
YW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1
bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVm
ZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRp
bmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsg
b3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVs
ZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9k
ZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZl
cmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBi
dWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxw
dHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzUs
MjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZm
ZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlw
ZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9
PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNl
dCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgq
YnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3Vy
Y2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgp
OworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAg
aWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAg
ICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEt
PmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIo
KSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAg
Ly8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMs
IHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxl
bmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uY2Y4
MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC01NSw2ICs1Niw4
IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdhY3lQcmV2aWV3
TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2FkZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNv
dXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBAIC05OCw3ICsx
MDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAg
ICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIHJlc291
cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIz
MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJl
c291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRi
NjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyArNTYx
LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VE
YXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRh
dGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVz
b3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRh
dGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJj
ZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNh
MmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgK
QEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEp
OyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZv
aWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVu
ZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9h
ZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9
CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2Fk
ZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCkBAIC01Miw3ICs1
NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3
MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
YXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RV
UkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAg
ICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklG
RVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZh
aWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2Fj
aGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hF
IE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNl
M2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFhMjZkYjBkODI4YzYz
MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0K
IAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2Uo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2JhYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8vIFJlbW92ZSB0
aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJl
IG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICAgICAgcmV0dXJu
IHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsK
IH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRSZXNvdXJjZUZy
b21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3OSw3ICsyNzcsNyBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7
CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0IHRvIGEgcmVz
b3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRpdmUgcG9ydGFs
KSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAgICAgLy8gb3Ig
aWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNlciBjYW5jZWxl
ZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNoZSwgdGhlIHJl
c291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1
ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3Bv
bnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVk
IGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBj
YWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9k
aWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAg
ICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAg
ICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYx
MWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3MDgzNTk0NWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xh
c3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVy
OwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsK
IAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEwNCw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJl
c291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91
c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBtYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAog
ICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi42NzEw
OTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQog
ewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVz
cG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwog
fQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBl
KSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3
ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1
MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLmM3
NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0
b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0
byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5U
TyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAg
aWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBT
dHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAg
LTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQog
ICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODcz
LDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4
ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291
cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdz
IGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBt
ZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5k
YXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJj
ZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTExMyw3
ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBpbnQgaHR0cFN0YXR1
c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAgICAgIHVuc2lnbmVk
IHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0
KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0
ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOwogICAgICAg
ICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsK
ICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIx
MmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2RmOGQ5ZGEyMDliNDBlMjNj
MDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVtcHR5LCBidXQgbXVzdCBi
ZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBhdXRvJiBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5n
ZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5jcmVhdGVDRkRhdGEo
KS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBM
ZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVs
bAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNyZWF0ZUNG
U3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAg
ICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVz
b3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc291
cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24ocmVzb3Vy
Y2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3Vy
Y2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VL
ZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1
cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlS
ZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3Jl
YXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VSZXNwb25zZVZlcnNpb24g
PSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFy
eSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9uS2V5KSk7CiAgICAgICAg
IGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJRChyZXNvdXJjZVJlc3Bv
bnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIHZlcnNpb24gaXMg
bm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAg
ICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEo
cmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKTsKICAgICB9CiAK
QEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZy
b20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZl
ID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEg
PSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgIGlmICghY2ZEYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBDRkVycm9yUmVmIGVy
cm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBs
aXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGUHJvcGVydHlMaXN0
Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUs
IDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjc2
LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAgICAgICAgIENGUmVs
ZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAg
IGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkp
IHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJv
cGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52
YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAK
KwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpl
eHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBMT0coQXJjaGl2ZXMs
ICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52
YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisK
ICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJj
aGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNlRGljdCkgewogICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFpbiByZXNvdXJjZSBp
biBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAgLTMzMyw3ICszMzMs
NyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rp
b25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFs
aWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBzdWJyZXNvdXJjZSA9
IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3Vi
cmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KQEAgLTM1
Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhdXRvIHN1YmZy
YW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZS0+
ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YmZyYW1lQXJjaGl2
ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgTGVn
YWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAg
ICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52YWxpZCBzdWJm
cmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywg
RnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7Ci0g
ICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3aXRob3V0IGEg
VVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBpZiAocmVzcG9u
c2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQog
CiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1cm4gYXJjaGl2
ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVudCBpbiBhbiBp
ZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBkb2N1bWVudCAo
d2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4gCiAgICAgU3Ry
aW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0
aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwi
IHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51
cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2Rj
YWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjczMzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2
YzMxZDQyYzUzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5ICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWlt
ZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2gg
KG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUo
Y29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWRE
YXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVk
UHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJs
ZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlN
RUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5k
YXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAv
LyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdl
IHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1
IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1
NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJh
dGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2ODIw
N2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFl
NTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwxNiBAQCBD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRh
dGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5
N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRk
MWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0
ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJM
JiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0
cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAw
MGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpz
aGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJl
dHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2Rl
ZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQg
b2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwog
fQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
KQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0
Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lk
IENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
Ly8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUg
c2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNv
ZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkK
KyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIg
dGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRl
bHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUz
ZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2
MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURl
Y29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJj
ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmlu
ZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY5YWQ3NzEzYzYw
M2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lkIENhY2hlZEZvbnQ6
OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICBzdGF0
aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0K
IAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9k
YXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJp
bmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBD
YWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBk
YXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3Vy
cmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsK
QEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07
CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVs
bHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENs
aWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVk
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNl
YmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjE1NGRiOGNiYWJmM2Q1YTM4
ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRz
TG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1v
dGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3Rv
bURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAg
IHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0
YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBp
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3Vz
dG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZv
bnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0
cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03NCw3ICs3NCw3IEBA
IHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZy
b20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5
NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDkg
KzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3Vw
ZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9
ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNv
ZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEy
ICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEo
KSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJ
bWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxz
W2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZl
cnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RT
Y3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkK
KyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQog
ICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhl
IHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFT
dGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJl
c291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAg
IG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEw
ZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLmQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3
OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRp
dmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVX
aWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lk
IHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVz
ZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkg
Y29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0
YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpA
QCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0
IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg0
MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNTYsNyArNTYs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJj
ZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0
YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1
cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0
aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1l
bnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hp
bGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5n
dGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNs
eSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5u
aW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5
ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9s
aWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRh
ID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
aW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRk
NTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0
Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1
c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBh
bGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVj
dENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2Fk
aW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDhiODNlNTMzMTkwYTc3NmJhOGY0MGMy
ODMxNThjZGI3NjFhZTk3MDIuLjE3MmNkMWFmYTNmNGU5MGFjMTc4ZWRhZjA3NTcyNWVjZTNkOTlm
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlG
aW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MDYsNyArOTA2LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29k
ZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5
UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsK
ICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5l
d0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOwor
ICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZm
ZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzgu
LjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0K
ICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9
CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3Rh
dHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRy
eVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENv
dW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQ
aW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNv
ZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uYjBmNzZhNTA5
NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAg
U3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEg
bmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQg
VXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQt
PnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
KTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmlj
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdlYWEuLmIwMTJi
YTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3
NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAg
LTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93
ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAg
ICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAg
ICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAgfQogCkBAIC05
MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250
RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RG
Rm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVk
Rm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgp
KSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAg
ICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJhZjc3
N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMzODU4
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAt
NTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxp
emVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAg
ICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBS
ZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxl
bWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0
aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4u
Yjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1
bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhh
c2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3Jp
cHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYwNzdlZWViNWNj
MzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMyYzdlNjM0MzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4
ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uNTQyNjZkZDkwODE5YzM0ZTkxNTA4NDM0ODk0
MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hl
ZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25J
RAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7Cisg
ICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJj
ZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAg
Y2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAot
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0
ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBt
ZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
aAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi5mNDYzMTc4
MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9V
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAw
Yy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAt
NjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAg
bV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVk
U2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5j
b2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwog
ICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFi
MmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1NGUy
ZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1MmNmZWJkNzYxZTU2
NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlm
NzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJv
bUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CisgICAgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKIHBy
aXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6
OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2b2lkIHJlc291cmNl
QmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1
ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1MWU4YjU1
ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBtYXhp
bXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBhIHJlc291cmNlIHRv
IGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3QuCiBzdGF0aWMgY29u
c3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdl
dEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0YSA9IF9DRkNhY2hl
ZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0
b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCkBAIC0x
MTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNlLCBi
bG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNrQ2Fj
aGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFj
a2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNr
ZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBhdXRv
KiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3Qo
bV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJlc291cmNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1
NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJiN2Fm
OTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQ
cmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29y
aWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVy
OwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUy
ZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41MmZmZDUzN2JmZDYyZmY2N2RlY2Q0
NjRiNjVmYjZjOTA1NzA2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252
ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJl
c3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0
YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJl
dmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7
IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1h
aW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09
IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIo
KSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsK
IH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1
bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZp
ZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3
TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVz
cG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2Nv
bnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0K
LSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBt
X29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAg
ICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFhNjAz
MzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRl
V2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1YzYzMmQ5ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2
YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0x
OTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29u
c3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGlu
ZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50
IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8g
bGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7
CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEuLmQ3
NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQyY2RlODA0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFs
aXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50
LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9k
ZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlN
RVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVu
ZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBm
b3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVl
dCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBh
IGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25l
LgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRz
KCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwot
ICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVu
ZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4
dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6
OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0K
IH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVz
b3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVz
cG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQx
ODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmlu
ZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxp
Y2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5
YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0Zp
bGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxl
RGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9Owog
ICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2Fm
ZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFy
ZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAg
ICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0
byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZl
clJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUg
PSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJh
eUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFy
ZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIr
KzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4o
bV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRz
LmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNo
YW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVk
Q29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4u
M2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJs
ZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29k
ZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0
cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4
IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBjZGNj
YTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAt
ODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmln
aW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3Ry
aW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0
IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgp
OwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRh
dGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9h
cmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikp
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlN
RVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVk
TmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExp
c3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7
CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAg
ICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0
IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
Rm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdh
OTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUx
ZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4m
JiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNv
bnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0g
MTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2lu
OwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNv
ZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShl
bmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZl
clNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNv
ZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJz
aXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAy
NmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1
ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRP
cmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9t
U2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1
ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMu
LmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3Rv
bURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1
YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5kaWYK
ICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1
YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90
IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3Ry
aW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRh
dGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjky
ZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQx
MjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUx
LDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRl
bnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAg
U3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3Jt
YXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEz
MTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2FiOGIz
ZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJk
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlv
bkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3Ry
dWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBh
c3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9y
bVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVk
ZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFk
VVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3
NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNv
bnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEo
KSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAq
bV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRl
TWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6
OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGll
bnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBpZiAo
IW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAg
Y2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0
YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEo
KnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5
OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgyYjk3M2U2M2YzOTU5
Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
UHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hl
ZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0Rh
dGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAg
ICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
b3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
aW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVj
MGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9u
YWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRh
OworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxE
YXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFm
ZDM5MDAzNTM1Mzg1ZC4uYmJlMzkyM2EyMDdhMGU5MzYxMTczMDc0Zjk3NjA3ZmFkMDU4N2RmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyArNTAs
MTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRh
KSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRh
U2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXpl
KCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBwZW5k
KFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKQEAg
LTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZSht
YXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBl
ZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBp
ZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAg
ICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNz
KTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsK
LX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2Vn
bWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRz
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAt
MTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0Rh
dGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21i
aW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQo
KSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNv
bnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdl
IG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRp
b25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVy
IGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2lu
Y2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1
ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1
cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+
KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9
IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRz
LmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9
PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNl
Z21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJu
IG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVp
bnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgxLDYgKzE1NiwyMSBA
QCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6Omlz
RW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJlZEJ1
ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOwor
fQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBAIC0y
MDIsMTAgKzE5Miw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRv
T25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5z
aXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3Nl
Z21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYo
KSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0K
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMjMgKzIwMiwyNiBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3Ro
OwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEu
c2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNp
emU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOwor
fQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0y
NDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBj
b25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMu
dW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5j
b3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsg
ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAg
IEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlk
ZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJv
dmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAog
ewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0Miw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50
KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5k
KCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsK
IH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zNzIsNyArMzU4LDU3IEBAIGJvb2wgU2hhcmVk
QnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0
YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQor
eworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKwor
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZm
ZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAg
IG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1
ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNv
bnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAg
bV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAg
OiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGlu
ZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5
VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwg
bWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNl
Z21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRh
KCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAg
ICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDcgKzQyNyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdt
ZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVE
YXRhKTsKIH0KQEAgLTQwMiw3ICs0MzgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9y
eU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9
fTsKIH0KQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShj
b25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1z
aXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0
YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZp
c2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90
IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBAIHNpemVfdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNp
dCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6
U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2Vn
bWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERh
dGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkp
CiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAg
ICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldp
dGhpblNlZ21lbnQpCkBAIC00OTksMTYgKzUzNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgp
ICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciog
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNl
Z21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21l
bnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0
YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9
IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsg
cmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEg
YnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qg
c2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzUsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0K
IAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5k
YXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4Mzkz
NjhhZC4uZGEzZDIyZjIwM2RjYmM1NWNjNzY2ODM0NWRkZTBiMmViYzJlMjdiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02MiwxNDYgKzYyLDEzMyBA
QCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNo
YXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJl
IGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMu
CisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNl
Z21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxE
YXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7
IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAgIGVudW0gY2xhc3MgTWF5
VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBkYXRh
LnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRh
aW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJh
eT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYK
ICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29u
c3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAg
IHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRy
PEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1
ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFw
cGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNl
cyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYg
dGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcg
YmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwg
c2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlm
IHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0
OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2
b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNh
ZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+
IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3Bp
ZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZm
ZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4K
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0K
LSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVf
dCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBh
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0K
LSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7
CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCoo
KT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAg
IC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVj
YXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1v
ZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAg
ICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2Vn
bWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNv
bnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxO
U0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJv
b2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdM
SUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRl
cz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEp
CisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCi0gICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9
Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0
IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsK
LSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJv
dmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQ
cm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHBy
b3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29u
c3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAg
IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVm
UHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShH
U1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5E
QVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBj
cmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KK307CisK
K2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRC
dWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Cisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9Cisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIm
JiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShw
cm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+
IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNF
KEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYg
VVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
KworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdp
bGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZl
ciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYpOworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJl
ZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1l
cmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVm
ZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0
c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVz
aW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAog
ICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2lu
UG9zaXRpb247CkBAIC0yMTAsNTUgKzE5NywxODEgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFT
ZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERh
dGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
c2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNP
bmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPbmVTZWdtZW50
KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRh
a2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRh
KHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
RGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmlu
ZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0
cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0
OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0KLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVy
biAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6
ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygp
IGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9j
b250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6
UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRp
ZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogCi0gICAgLy8gQ29tYmluZXMg
YWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFm
dGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VE
YXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCitwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIC8vIENvbWJpbmVzIGFsbCB0
aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBj
bGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNl
Z21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFT
ZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFi
bGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBi
b29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKKy8vIEEgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJl
Y3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9k
cy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsK
K3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2Ug
aWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6
aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHlv
dSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHku
CisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQu
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYm
Li4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7
IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7
CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNl
bmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQ
T1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERh
dGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBu
b3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNo
YXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4K
KyAgICAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAg
ICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAg
ICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVm
ZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBv
bmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAg
ICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihB
cmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAg
IHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQor
ICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQor
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7
IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxT
aGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAg
ICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQor
ICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWlu
dDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigp
KQpAQCAtMjY4LDIxICszODEsMjEgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0
YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3
U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRh
QXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3Qg
UmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25X
aXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFm
OWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1
MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyAr
MzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZv
KGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1l
LCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFy
dHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1
dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlN
RVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5v
d1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4
IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4
YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRF
bmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURh
dGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2Zi
YTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3
NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmlu
YWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVu
Y29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29u
c3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2
MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5ZmMyMjhhNmQ5YWJiYzMyMGVmN2Y2YzhiMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAv
LyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9u
IGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewog
ICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRh
ID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21l
bnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2hhcmVkQnVmZmVy
OjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZElu
dG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4
IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFh
OWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3Rv
cjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQog
CiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZG
VG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsK
LSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRX
aXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZm
QnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNE
YXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0Zp
bGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShw
bmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4g
UGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2Nv
YVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
Rm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1
cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBl
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRj
MmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVm
Y2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDog
TlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUlu
dGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVu
dCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVu
dDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsK
ICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAt
NjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAK
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERh
dGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRp
b246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCAr
OTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0
dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJy
aWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5l
SW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFT
U0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9z
ZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7
CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZG
aWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291
cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3
IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkg
Y29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdt
ZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29y
ZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRp
b246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlh
MmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJm
OTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09O
OjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRz
IGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5n
IGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAg
ICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpw
YXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRk
ZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QK
ICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsK
IAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3Vz
SW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBj
b250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBp
bml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBz
c2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlk
c01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQK
IAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAg
ICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAg
ICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5k
YXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGln
dW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAog
ICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlk
c0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZN
b3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09O
U3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNv
bkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBX
ZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1
cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNP
Tjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0
aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yg
a2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29k
aW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0g
ICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERh
dGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmlu
ZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdU
Rk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMu
dGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2lu
Z2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFm
YjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlz
aEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVy
LmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZl
clNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2
OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQy
YzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQy
NGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdi
ZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5
ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29k
aW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpm
aW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxh
c3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFu
dCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0
cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQo
KSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRj
MWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlm
YTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDli
MTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVm
ZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRl
cz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBz
aXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0
aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0
YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
dGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYg
KGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2
MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwg
c2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50
cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQw
YjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1
ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4
LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHks
IG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0
YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9u
dEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JW
ZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSog
Zm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0
byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRG
YWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZm
NC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxi
YWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2Fj
aGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAg
ICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNr
ID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFj
ZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5
ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNl
IGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFi
bGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBj
b25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBm
b250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRG
T1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVh
OWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQw
OTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBt
aW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlw
ZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6
IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBl
KSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0
ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxN
b2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
U3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5
ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVm
UHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1v
ZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9k
YXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3
ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1f
ZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6
ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3Vy
bDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVs
OjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBX
VEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5h
MGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0
NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFk
VUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZh
bHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhv
ZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAt
IG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJl
YWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYg
dmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0
aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zm
c2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwg
c2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYo
VmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3Qg
dWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29s
IGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJf
dCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAot
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
d29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2Zu
dC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4g
c2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBA
IC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVk
Rm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkp
Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVk
Rm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43
OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICsz
MCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVm
ZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlz
V09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhl
IFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBz
Zm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBP
dGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNm
bnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVp
bnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1
ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2
ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5z
IHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZh
aWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3
NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0
YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsg
PGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9Owot
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1
ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAg
IGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2
MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGlj
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZl
ciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgot
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1
ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAK
ICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2lu
Zk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAg
IGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5J
VERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNl
bmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5T
U3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBl
cnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJh
eShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVy
biBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVk
U2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFw
cElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3Vj
Y2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2Fk
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAg
ICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6Omdl
dEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25z
ZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNl
V2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVH
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNz
aW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVz
dHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAg
ICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29u
dGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3Bv
bnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9
CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxs
YmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3Vj
Y2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5z
ZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5n
ZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlB
dFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQ
bGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5
OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1
c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9u
RGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJl
ZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRp
ZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVl
c3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5
Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgp
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmll
ciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0
RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJ
ZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEs
IE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVy
cm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAK
ICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRC
dWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0
b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9y
PiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAg
ICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBh
dXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9h
ZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtl
eUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkp
OworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0
cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJp
bmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAg
ICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpA
QCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9y
IChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAg
ICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsK
ICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMu
Zmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlE
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RG
TW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0
aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3
Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1
NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJB
VkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9s
b2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNz
aW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21f
bG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107
CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJj
ZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9h
c3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0
aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpA
QCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRD
b250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURl
Y29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRh
OmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxs
RGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9p
c0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEy
MDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2
NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Ojp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5z
RGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBz
aGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmICht
X3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVp
dHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRo
RmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
LmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0
OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVz
dD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJh
NmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpA
QCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3Vy
Y2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAg
IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXIt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIu
Z2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIy
NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBt
X3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1l
ZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJl
cXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAg
ICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVx
dWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAK
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Omxv
YWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0
XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJl
NzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9G
YWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwog
Y2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4u
MjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApA
QCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlD
b3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZv
LCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hh
cmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZv
KTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUg
PSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6Oklt
YWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRh
dGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNl
R2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxw
dHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRo
RGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9p
ZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3
MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRo
ZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNo
YXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJp
bGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5z
dXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJl
ZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0
KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UK
ICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVz
ZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRl
UG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRl
IGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBp
dCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRo
ZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxi
YWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVBy
b3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGly
ZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWlu
UHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3Zp
ZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3Zp
ZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25h
dGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
ICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEz
YjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0
YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
clJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRh
dGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAg
IG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0
YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRl
eCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRm
YTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0Vx
dWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVx
dWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1
ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVl
YjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAg
LTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21l
bnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVm
ZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29u
KTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+
KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5
YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5
NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAt
MTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6
b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFs
aXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBh
ZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlv
bk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmlu
ZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTEx
YjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRp
YyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBp
ZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYz
MmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5
N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0
aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlw
ZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBj
YWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5
cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVk
VGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAm
JiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4
IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2Njky
NGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
CkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3Jl
YXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRo
aXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwog
fQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1Njdj
MDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1
aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcg
QEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93
bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1Zjgx
ZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0g
ZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUo
KV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJl
YW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVm
ZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBt
X2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmYTcw
OWZlYTUxNmYzNTg1ZmMyMjE3MmI1ZGIwZmViZTlhZGI3NjgxLi5jMDdmYjU2OTg1OGUwNDhjYmEz
ODA4MzhiYzFlMzEzOTFkYjIyOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY3Myw3ICszNjczLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRh
JiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29u
dGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0
RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFz
IiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAg
ICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQo
aW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdi
YzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRl
eHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJz
ZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0
IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcg
QEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2No
YXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bz
c2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNl
NjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgp
KQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3
MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJy
b3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFy
a3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNz
dGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6
OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxv
YWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5w
YXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEu
LjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0NWQwN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgsOCArMzgsNyBAQCBHU1RfREVC
VUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0
X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5pdERhdGEgewog
cHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBtX3BheWxvYWQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1aWRzIGZvciBiZXR0ZXIgdHlw
ZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgR3N0QnVmZmVy
KiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBHU1Rf
Q0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1
Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90
ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RD
ZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAg
ICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5p
dERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBl
bmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKICAgICBJbml0RGF0
YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQp
CiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0
cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKICAgICB7CisgICAgICAgIGlmIChw
YXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENl
bmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAgICAgICAgICAgICAgICBt
X3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGluaXREYXRhKQpAQCAtNzIs
MTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3QgdmVyeSByb2J1c3QsIHNv
IGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGluaXREYXRhLm1fc3lzdGVt
SWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7Cisg
ICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQogCi0g
ICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBt
X3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5
cGUoKSBjb25zdAogICAgIHsKQEAgLTg2LDExICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5
OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxh
dGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCks
IHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
KQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVy
RGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2
OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVh
dGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1h
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3
N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1l
bnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
Y3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5
MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25J
bmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0Nv
cnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3Jy
ZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29y
cmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0
SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEds
eXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB1aW50MTZf
dChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBN
YXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQg
ZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtl
cm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZz
ZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IEdseXBo
QXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4MDEK
ICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQ
YXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
cGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNb
Y291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9u
IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1l
bnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlh
bnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2b2lkIGdldFNpemVWYXJp
YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMp
IGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRF
bmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkKQEAgLTE1Myw3ICsx
NTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAg
ICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEds
eXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2Vt
Ymx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5
UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZz
ZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBn
bHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZz
ZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhD
b3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5cGhDb3VudDsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRo
ZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zIGFu
ZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMuCiAKLSAg
ICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29u
c3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlv
bihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29s
IGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQx
Nl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9udGFsR2x5cGhDb3VudCk7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25z
T2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAg
IE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aENv
bnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNl
dCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMTIsNyAr
MjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8o
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5m
byogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0
OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0cnVjdCBNQVRIVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBj
b25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFi
MTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0
aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVl
UHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4
IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4
MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcg
KzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwog
I2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0
KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIp
KSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Rh
dGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29u
c3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXIt
PnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcg
KzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRh
YmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHBy
b3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5k
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRp
b24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBp
bmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3Qg
VCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29u
c3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90
IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRh
dGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBv
ZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVy
LCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9
CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJs
ZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2Ug
OiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEds
eXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENv
dmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUlu
ZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3Jt
YXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2Zj
YmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVh
ZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250
IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdy
aXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdo
aWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9y
dAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0
cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29s
IHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0
IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7
CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29u
c3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+
KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rv
cjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBk
YXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYg
Zm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYg
Zm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAg
IGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTVi
N2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3Qg
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8
Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2Njhh
Y2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhi
ZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2
LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNv
dmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVy
YWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VU
YWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdl
T2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1
YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFd
OwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBj
b21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFt
aWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBo
PiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1
YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBz
dHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29r
dXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBj
b25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90
IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5k
ZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0p
KQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBs
b29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25z
dCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlv
bnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBz
dHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0
IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVy
ZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
ZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQo
YnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVh
dHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBj
b25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRG
ZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVh
dHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZl
YXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsy
NTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsx
XTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1
cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpU
YWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBj
b3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZl
YXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsK
ICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZh
dWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0Nv
dW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291
bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sx
XTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBz
Y3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0z
MTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSog
ZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBp
ZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMy
MSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlw
dE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFi
bGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRl
ZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwx
MSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBM
aXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlz
dD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBm
ZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0g
ICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29r
dXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9CisgICAgY29uc3Qg
RmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwg
ZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAg
IGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBj
b25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBp
ZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwog
ICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZl
YXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExh
bmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNv
bnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUs
NyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlv
bnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxH
bHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJl
VGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAg
ICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3Qg
R1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFu
Y2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0g
cGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0
IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVu
VHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlw
ZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lk
IE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlz
IHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVU
YWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSog
dmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZl
cik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAg
dm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVy
dGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5v
cGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRm
b3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVu
VHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6
OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVy
dGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1
NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3
YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3
IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250
TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBm
b250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2Ug
PSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVm
Li5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQq
IENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlw
dGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJp
YW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxp
bnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBG
b250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0
ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBA
QCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5h
bWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9u
dE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0g
cmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2
NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhl
cikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1
cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNw
cAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2
M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0
b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBI
R0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JE
IHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywg
dGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2Jq
ZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlv
bkRhdGEuaAppbmRleCBjZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43
ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1f
Y2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJl
cGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBz
ZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9
IFdURk1vdmUoYnVmZmVyKTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RG
TW92ZShidWZmZXIpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9t
RGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1
c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJ
bWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIy
ZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGlj
OgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6
RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7
Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVu
dHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBt
X2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAg
ICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGln
dW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNv
ZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAg
ICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0
cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5hNDJl
NWJjNGFjY2YzNzIyYTVhZjljOTA1NDYyZDA4ZWQ4ODQxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw5ICsyMjAsOSBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtl
cihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFb
MTFdID09ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0
ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5l
eHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtlcihtYXJrZXIpKQogICAgICAgICAgICAgY29u
dGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXIt
PmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6
ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXpl
KTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsK
KyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgog
CkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBv
bmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQg
SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0
N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEy
YjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247
IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXgg
MTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFjNGI2NTQ3
NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykK
ICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRU
eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3Rl
Ym9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQp
CiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGll
bnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNs
aWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlw
ZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAg
ICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0
ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3Nlczpb
TlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNv
bnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0
ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3Nlczpb
TlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNv
bnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107
CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3Rv
bURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21E
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAK
ICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5n
ZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9h
cmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAg
ICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0
YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBl
OwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAg
ICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAg
ICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291
cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5T
U3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6
ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6
cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3Rv
cjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5U
QVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1
c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNl
cmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmln
aW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3Jk
ZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBl
KTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJl
Z2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVP
cmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVk
QnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBs
aWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3
aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2Yg
aXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBh
c3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBj
dXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVu
IGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihO
U1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5n
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+
PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtw
YXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0
ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4
IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLjdhNGEyYjE2NWIyZmE3
ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwg
bV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0
TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6
KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIy
YzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVy
KiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsK
LSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJl
Z3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwog
ICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1J
TUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VN
SU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAs
NyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgo
Y29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3ku
c3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29u
c3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJv
YXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYg
dHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5
JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJu
IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xp
Y3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQ
YXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4
LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRh
Li44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsx
MjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBm
b3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRl
bnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50
LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNv
bnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJ
VW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJk
SXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNl
NzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpA
QCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFz
dGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBb
bV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBk
b21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEg
PSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEp
LmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0
b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAg
ICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3
IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSYgZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAg
IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9y
bVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQog
ICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRh
LmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAg
ICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlm
ICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVm
ZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9h
cmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpi
dWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDog
bmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBl
KE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1B
dEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JU
eXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFz
dGVib2FyZEN1c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAg
ICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07
CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+
KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgy
NTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAg
LTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBt
X3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEz
YjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdm
MTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0
ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBu
byBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xv
c2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJE
ZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9
IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
ZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJu
IGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2ZTEyNjJlN2QwMDhm
NzkwNS4uYzdkMThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGViNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMSwxMyArNDEx
LDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1
cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6
OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBG
b3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZl
Y3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAK
IFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQx
MGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBE
T01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURh
dGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsg
fQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2Jv
dW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1No
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNT
dHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3
YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3Ry
ZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0
ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+
UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNl
aXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFu
Z2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkz
NzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlh
ODJjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRh
IHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBv
cmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVz
cG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBU
YXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQs
OSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVf
dCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJl
c3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNz
aW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVz
cG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFz
aE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVf
cHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3Jp
Z2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
ZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVz
b3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNl
R2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykK
IHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBh
cnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENv
bnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6
ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUg
dG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlv
biBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdh
aXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtu
b3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFl
eHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVy
U2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJl
Z2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVm
ZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7
CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2
ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEg
PSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7
CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBi
dWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5l
cmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1
bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAg
ICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlcklu
ZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+
PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6
ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVy
Vmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBA
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENv
bnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+
c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklY
TUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hl
Y2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxS
ZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2
YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0
cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVm
ZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJl
c3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1
NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6
U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNl
ID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpb
c3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsK
LSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7
CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlk
PE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVn
YXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4u
ZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9z
ZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJv
Y2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkg
ewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhl
IHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7
CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6
OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRh
cnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkg
ewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRh
dGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZm
ZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIu
cmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVu
ZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5y
ZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgz
OTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0Yjdk
MTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3Vy
bFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxl
SGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
IH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVj
ZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkg
QEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZm
ZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRp
ZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1v
dmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29y
a0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2
Nzk0NTVhLi5jNDYwZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCAr
OTg2LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFy
ZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRh
LT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9y
eShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBA
QCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmws
IFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0
aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1w
V3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAg
ICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEt
PnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1w
RmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCks
ICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAg
ICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4
OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVm
MTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwg
MCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUz
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYg
KFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNS
ZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVz
dWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQg
Y29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lp
KCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4
Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAg
KzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
IGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBT
dHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAg
IGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0
ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmlj
YXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0
aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9
CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5n
KHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChy
ZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAg
ICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJh
Li41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZm
ZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVy
IFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBT
Y3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJv
bVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0
QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1Np
bmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZl
ci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdt
ZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjph
cHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAg
ICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0
cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
IH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0
QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDlj
MTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uZDFhNzdiNThiNjQ0YTkwYjkwNGVm
ZGMxZmViYzZjMDY3NDRmOTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4o
bV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hh
cmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50
KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBl
bmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250
YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdi
NjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uZTVmMzQ5YjQ4Mjc0NmY5ZWRiOWM1ZjYzMWJm
YWQ0YjQxOTk4YmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExv
YWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJs
KFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9t
T3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSkKIHsKIH0KIApAQCAtNzgsOSArNzksMTMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2Nj
dXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNl
c3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRh
LCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9k
YXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
Y29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAg
ICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1
b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAg
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBtX2Vy
cm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSArMTIyLDYgQEAgdm9pZCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5
ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5
YmI1MTAyNmY1ODNhMDliMTg0N2E3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1f
ZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1
cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2Fk
UmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgz
M2M5ZDVlMzRkNzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUy
Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0
aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJl
ZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9k
eSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0
YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3Zl
KGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAg
ICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVu
dC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9y
YWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4w
M2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0
cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3Jl
IGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDog
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwg
c2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRT
dG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAz
ZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2
YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQo
ZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkp
CiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBl
OjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRs
ZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRp
bWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJl
Y2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBi
YWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAg
IGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFu
Z2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAg
IGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJp
bmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJl
c3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUg
ZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9y
bWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBB
U1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAg
QVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwg
MCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2Rp
bmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVz
cG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBu
dWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVz
cG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEu
Ci0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5
MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBA
IC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZv
cm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNz
IFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7Cisg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
OwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFm
ZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2
MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0
IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAg
ICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZy
YW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzky
Li5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVy
aSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJj
ZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3
MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJl
Y29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
IHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFi
bGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxw
dHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkg
OiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0
byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRh
dGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2YzguLjU0ZGMyMGE5YTE5NWQ1
OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25z
ZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNw
b25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3
b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7
CiAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6
IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9u
IHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24u
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBtX2lzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xp
Y3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMg
fQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9zaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAtMzA2LDEwICszMDgs
MTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRl
bnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMu
bWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1w
dHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29y
a0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzAsMjAgKzcz
MiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0i
KTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlmIChtX2J1ZmZlcmVk
RGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNo
T3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVz
cG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICAgICAg
bV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1l
ZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94
LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlw
bGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAg
ICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5y
ZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewog
ICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1l
bW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBl
bnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVm
ZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNl
dCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMg
Z2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0
YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkg
eworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJp
bmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZl
cmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEt
PmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0
dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAg
ICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNv
dXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwxNSArMTI1Niwx
NSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVl
ZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQo
KQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVk
RGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmICht
X2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERh
dGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+
Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZm
ZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5l
bXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBA
IC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVB
c0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVs
aWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7
CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBz
dG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxs
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEyIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlz
Q3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9j
b25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkg
ewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTog
U3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+
cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJs
KCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkp
OworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5n
IGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29y
a0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBt
dXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIg
PSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNv
dXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQy
MzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0NWMyZmJhNzk4YzZkYjZh
ZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjI1LDcgKzIyOCw3
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwog
CiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVl
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVu
c2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5j
aHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcg
QEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAg
UmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRh
dGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVX
aWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCAzM2E5
ZDRiNmRmYjg4MTBkMmY0MjdlMGY4NzZiODgxZjA0MGVjMmU2Li5hMDc2MTdiOWE4OWViNmQ1ZjJi
Mjk2ZjNlZGFiM2IzOTllYjI0OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBt
X2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
OworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAppbmRleCAwYWZjYjA3MDdkYWVkNjdmMGEyNzc5NjdkNWVjNDcyZGMw
ZmUwYzk3Li45MTZkYzg2MWRlMDgyMGFmNzkwMjAyYmIwY2ZiMTIyNTVlOGRkZjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNr
JiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAg
ICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+Owog
ICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4
ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFi
MDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUo
KSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0
YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZm
MjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1
ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBA
IC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVj
b3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsK
ICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJD
b3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3Jt
IGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9
KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29k
ZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAg
IHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9y
YWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9u
c2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2Uu
Ym9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZj
NmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5Ojpl
bmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5i
dWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAo
bV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1w
LCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLmZlNzU5
Y2VkYTJkN2JkMmVhZTg3ODk5NzgzZWZmMzM5OTJhNzNjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVj
dWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFt
ZUkKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkK
LSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKICAg
ICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSkKIHsKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50cnktPm5lZWRzVmFsaWRhdGlvbigp
KTsKQEAgLTEwOSw3ICsxMDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVz
cG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBh
cnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1
Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3Qg
TW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBA
IC0xMjcsMTAgKzEyNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBp
biBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1
ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOCwxMSAr
MTM3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwg
W10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiAhbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5pc051bGwoKSkgeworICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8g
Q3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAg
ICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9y
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1f
Y2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2Nh
Y2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcw
YzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAg
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAg
IGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4
IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMuLmY2MzNmZmZlYTQ4ZGQw
ZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE3NjEs
NyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3Rk
OjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAgICAgbV9yZXNw
b25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJlbnRSZXF1ZXN0
LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAgIGF1dG8g
Ynl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21l
bW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsKICAgICBkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNl
Y2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJjNTkzZjk5MjZmNTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJl
ZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0
YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1v
dmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5
Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTcgKzQwLDE0
IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCiAgICAgU2hh
cmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAg
ICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVy
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
KSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQot
ICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAt
NjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXgg
ZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2
YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJl
ZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1
cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFT
aXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsK
ICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFi
Y2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhi
MWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
fQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVt
IHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUo
KTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihz
aXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJX
SU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5k
ZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4
YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCBy
ZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCog
ZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJj
aGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAK
ICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJj
ZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXgg
ODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcw
MjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1
NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0
YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiBy
ZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBz
Y3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2Fs
Rm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRh
LnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAg
IGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRp
Z3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlv
bjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEz
NzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1
OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9D
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAK
QEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJFTEVBU0Vf
TE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Yg
c2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAjZW5kaWYK
IAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9
IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2YTlkNDJlYzlmOTZiYTM4ZmJlNTEyNTU2
ZTE2NC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsNDkgKzU1LDE1IEBA
IGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBVU0UoQ0Yp
Ci1zdGF0aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUodm9pZCAqcHRyLCB2b2lk
ICppbmZvKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291
cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIGNyZWF0ZVNoYXJl
YWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQotfQotICAgIAotc3RhdGljIFJldGFpblB0cjxDRkFs
bG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVS
ZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7
IDAsCi0gICAgICAgIHJlc291cmNlLAotICAgICAgICBOVUxMLCAvLyByZXRhaW4KLSAgICAgICAg
TlVMTCwgLy8gcmVsZWFzZQotICAgICAgICBOVUxMLCAvLyBjb3B5RGVzY3JpcHRpb24KLSAgICAg
ICAgTlVMTCwgLy8gYWxsb2NhdGUKLSAgICAgICAgTlVMTCwgLy8gcmVhbGxvY2F0ZQotICAgICAg
ICBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUsCi0gICAgICAgIE5VTEwsIC8vIHByZWZlcnJl
ZFNpemUKLSAgICB9OwotCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKLX0KLSNlbmRpZgotCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKLXsKLSAgICBy
ZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFyZWRCdWZmZXIgaXMgZGVhbGxvY2F0
ZWQuCi0KLSNpZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJs
ZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhKCksIHN0
YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7Ci0jZWxpZiBVU0UoR0xJQikK
LSAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9m
cmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCB0aGlzKSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKTsKLSNlbHNlCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5k
YXRhKCk7IH0sCisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxm
LT5zaXplKCk7IH0KKyAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291
cmNlKSB7CkBAIC0xMzgsOSArMTA0LDcgQEAgU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJl
c291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5LCB1bnNpZ25lZAogewogfQog
Ci1TaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkKLXsKLX0KK1NoYXJlYWJs
ZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgU2hhcmVh
YmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKIHsKQEAgLTE2Miw3ICsx
MjYsNyBAQCB1bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJjZTo6c2l6ZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fc2l6ZTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFkOWRlMzJkMWMzYTU0NzA1MTYwYWE0Zjdj
NmNiNy4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMywxMiArMzMsMTIgQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTaGFyZWFibGVSZXNvdXJjZT4geworY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKIHB1YmxpYzoKIAogICAg
IGNsYXNzIEhhbmRsZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJsaWM6CiAgICAg
CiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJl
ZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1bnNpZ25lZCBtX29mZnNldDsKLSAgICB1
bnNpZ25lZCBtX3NpemU7ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG1fb2Zmc2V0OworICAgIGNv
bnN0IHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYzBiNmVm
M2ZhM2EyZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRj
NjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2Rl
U2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFy
ZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
K3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBA
IC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNo
YXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsy
MjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVy
KERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjM0LDEzICsyMzQsMTMg
QEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNv
ZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoc2hhcmVkTWVtb3J5QnVmZmVyLT5z
aXplKCkgPCBidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVk
TWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBidWZmZXJTaXplKTsKKyAgICBidWZmZXIgPSBzaGFyZWRN
ZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZmZXJTaXplKTsKICNlbmRpZgogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NF
UlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpA
QCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkK
K3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVy
LCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAog
ICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAg
ICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hP
bihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwg
dHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7
CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyAr
NDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZm
ZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1
c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVl
KSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxh
dGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92
ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIK
IAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30K
Kworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUs
NyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNv
ZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlm
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5
ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5
M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2Miwx
NiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0
QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2
Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAg
LTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRD
b2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRC
dWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNt
YXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4Mjcz
NTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVy
c1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURh
dGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAg
IEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsK
IAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFk
M2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBA
IC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJi
ZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3
IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2lu
Z0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBB
dHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2
N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIK
IHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRh
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChT
cGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rp
b248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9u
KHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0
NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNm
MGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcg
QEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdy
YXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZp
bGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICgh
bV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4
MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJD
b3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAg
ICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxp
Z2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6
aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdl
Om5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0
IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAg
ICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3Rv
cmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAg
ICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdo
dC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGln
aHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBk
YjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKElu
dFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAg
IGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0
aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlm
IChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRh
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3
ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRj
NDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmll
dyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAxNzQ3MGM2MmM3MjBkZGU4MmI3OTE1
YjdiM2I1ODIwMjNlYjUxZWM3Li5iYmVmNjY3MzUxYTBhMmJmNThkZmFmNWE3MjEwMDA2YTMxOGVh
ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sCiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKDApOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVy
LT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlwY0hhbmRsZS5kYXRhU2l6ZSkpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVy
KGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiAgICAgICAgIGF1dG8gbmV3Q2hhbmdlQ291bnQgPSBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLnB0
cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgICAgIGRpZE1vZGlmeUNvbnRlbnRzT2ZQYXN0ZWJv
YXJkKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lLCBwcmV2aW91c0NoYW5nZUNvdW50LCBuZXdD
aGFuZ2VDb3VudCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5
ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVh
YWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6
OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNB
cnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZv
clR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
bV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDpp
XSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0
QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJ
bmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2Us
IE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5z
aW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNo
aXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJp
bmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNl
ZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0
YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFz
dGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9y
VHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZp
ZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpk
cm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21p
c2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5n
ZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRV
UkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBA
IC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nl
c3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURP
TVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6
RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdl
bmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmln
aW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0
ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24o
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYy
NjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ks
IGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNV
SUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1
cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiMmY1NjVmZjA1NDNkNjIxM2M2MzhkOGFj
MzQyOTVhZGFlOTkzNWYwLi5lMGZlOTQ0ZWQ3MTczMjNjYzRmNDUzYjA4NTJhODA4MGUwYTYzM2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OCw3ICsxMTc4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZv
aWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFr
ZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJk
MS4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3NjcwMzU0ZmVhZDAwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAg
V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBo
YW5kbGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRl
cnMucmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdU
Rk1vdmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNE
YXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBF
eGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7
Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEg
PSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAg
LTIxNywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVk
ID0gdHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsg
bV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBzaXpl
X3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXpl
IH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJv
ciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0K
IAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0Rp
ZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9h
ZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMw
ODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVmZGFhYjdhNWExYmU2YWRmNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNw
YWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBAIC00NCw2ICs0NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdi
MDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMx
YTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vs
ZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xp
YnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
YXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlk
ZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNo
YXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFE
ZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2
N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQw
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFtt
X2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
VUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwg
TlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYTgxY2NlNDQ1NWViMWE3MmIxMGU4ZjI0
NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNmYmQ5ODQ5Yjg0YjZlN2FhZmEzNGNmN2MzNDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9y
bUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAg
ICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRh
Rm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4g
YWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAg
ICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAg
ICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk5LDcgKzY1OTksNyBAQCBz
dGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9h
cmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2lu
KCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU3
MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVl
dEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpT
aGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJ
X1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRl
ZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFy
ZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmls
ZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dT
aGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdS
ZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
NDY3OWQ3YjA5ODFhYTdkM2ZjZDliZGU5MGVkNmZmMmFjMjMyZWUxNS4uYmE5OTVmYjllMDZiZjhk
ZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBh
Z2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJ
bWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUK
ICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdl
SGFuZGxlLmRhdGFTaXplKSk7CisgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXIt
PmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgcGFnZUNsaWVu
dCgpLnNhdmVJbWFnZVRvTGlicmFyeShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2ZDMzMzg2OWU0
ZTAwMTJkMjdkM2ZlODVkODVlNTNhNGVkOTY5NjBhLi5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFm
NzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5Ojpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0MCw3ICsyNDAs
NyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cgogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFu
ZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFy
ZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpA
QCAtMjc1LDE1ICsyNzUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICBhdXRvIHNo
YXJlZE1lbW9yeUltYWdlID0gU2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUuaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9y
eUltYWdlKQogICAgICAgICByZXR1cm47CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1l
bW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFy
Y2hpdmVCdWZmZXI7Ci0KICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7
CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFy
Y2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
ICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUFyY2hpdmUtPmRhdGEoKSksIHN0YXRpY19jYXN0
PHNpemVfdD4oYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhcmNoaXZlQnVmZmVy
ID0gc2hhcmVkTWVtb3J5QXJjaGl2ZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGFyY2hpdmVIYW5kbGUu
ZGF0YVNpemUpOwogICAgIH0KICAgICBwYWdlQ2xpZW50KCkuc2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UocGFzdGVib2FyZE5hbWUsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSksIGV4dGVuc2lvbiwgdGl0
bGUsIHVybCwgdmlzaWJsZVVSTCwgV1RGTW92ZShhcmNoaXZlQnVmZmVyKSwgb3JpZ2luSWRlbnRp
Zmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMx
MzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNs
YXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBz
dHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bh
c3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZv
cm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50
JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4
NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEw
NzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyAr
NjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1
Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xs
ZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBw
ZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2Rz
LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJv
Y2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRv
IGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJv
YXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgp
KV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAg
ICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAg
ICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5k
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVd
KSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4
Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xp
ZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRs
ZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShX
ZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
CiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAg
ICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlw
ZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVt
ZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5
dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVj
NzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02
NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0
IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxl
Y3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAg
ICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBm
aW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9j
dW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwg
Ym9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFl
MzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODljNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJM
UmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFy
ZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFs
YW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBz
aGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
CkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3
aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8
QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVk
QnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENv
cHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRC
dWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6
RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3Vv
dXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVk
QnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53
aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRh
dGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1w
bCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNl
ckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1
ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2
LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShX
ZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRk
MDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJj
ZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4
NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5
MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2lu
Z05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1
bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFko
bV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAg
ICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICht
X2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcw
OTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li41OGMxYzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0
NjE1ODUyYTAyMDg3Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZp
ZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2lu
LCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAg
ICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0
c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlz
KTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICgh
bV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09
IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFt
X21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5k
KGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxT
dHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51
YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxs
cHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjcsOCBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRh
Y2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4p
IHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRl
ID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21h
bnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVh
bFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVh
bURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIs
MTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQog
ICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7
CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEp
IHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0
YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNp
emUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4
IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjM0YmVmYjc1Mzk5MGY2
ZmE5YmQ0NzQ1ZDk2ZDNkZjBkYjNjZDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hv
dWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAg
Ly8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhl
IHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2
MjhiZi4uOWZhMGY2NTAwZWNjMTY2NWFlZjU0NDBlNmVhZDIwYTRlYzdjM2QxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0g
ICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEp
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAg
IG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6Omdl
dDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90
JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsK
LSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRS
ZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRC
dWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmdl
dCgpLm5vdE51bGwoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRp
ZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBl
MjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1
ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsK
ICAgICBib29sIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6
OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNl
RGF0YTsKICAgICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4u
MTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAg
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9h
cmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwg
cGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUx
ODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcs
NyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAg
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdp
c3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3Rl
clJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZi
Li45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1h
aW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWlu
UmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJl
c291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFBy
b3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJl
bmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRl
eCA1ZDA1YzBlYWI3NmI2MmI0ZjgzNmM4NTgyMjFmZWE0NDcyZTA1NTZlLi42ZjNmNTY2YzUyZjFl
MzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFz
dGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8v
IEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRl
QnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJk
T3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
VHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZh
bGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQg
Y29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0xNDUs
NyArMTQ1LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoaXBjSGFuZGxlLmhh
bmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxl
LmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVk
TWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hh
cmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hh
cmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsK
IH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVj
dG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCkBAIC0zMjIsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00MDQsNyArNDA2LDcgQEAg
c3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpS
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJk
TmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpAQCAt
NDEyLDcgKzQxNCw5IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5k
bGUuZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRC
dWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3
ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2ZmMzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVh
Y2ZmNGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBA
QCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVz
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5n
IHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZp
bGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3Jp
dGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0
aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBp
bnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdl
MGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi43NmM2MDI4ODgxMzUyMjA3MWEyMjc2
OWQ3M2YyZDNlODA4YmFjM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJl
dmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6
IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3Bh
Z2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkg
fQorICAgICwgbV9idWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogewogfQogCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdl
LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+
dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWls
KCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0K
IAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0
ZmJjMjZjMDdjYjUzZGE4Ny4uYWUwNTBhOTkyM2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5
LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRi
ZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRy
YWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVz
cG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFn
ZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lk
IFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5k
bGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAg
ICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNE
YXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAg
ICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29w
eUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVk
TWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZj
MWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlm
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
QEAgLTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1h
aW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBy
ZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJp
bmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzdmODRkY2U3ZmFhYTQ5MmFhNTVm
ZWEwMjViYjYwNmUwZmQwNmM1YS4uMTBiNGFhNDQwMmY4ZTE1MGFhZGQ2ZjJiYTRjNDA3YWI0NThm
YjA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTc3MzgsNyArNzczOCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNB
bmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAgIGlm
ICghc2hhcmVkTWVtb3J5KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9jdW1l
bnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJlZE1l
bW9yeS0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRv
SGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVu
dC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChz
aGFyZWRNZW1vcnktPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09
IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7
CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0Yjgy
NjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFk
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAg
ICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJh
bWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3Io
KS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8g
c2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMz
Y2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUo
QVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2Rl
ID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwot
I2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBi
b29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRi
eSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VC
S0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVl
OwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZl
ZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhk
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRp
b246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNh
Y2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0
Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmco
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0
IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6
OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMz
ZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5
YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5
IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQs
IG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5
NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIy
MzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1
LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxT
dHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3
ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJv
YXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5
OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZj
YzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2
YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VE
YXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhk
N2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0K
QEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3Ry
aW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFy
Y2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2
ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJj
aGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUt
PmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFy
Y2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmls
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAx
MTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1h
Z2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVy
LT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtp
dGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1
bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFj
YzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0K
QEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0Nv
ZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVy
CiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwot
ICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRh
dGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWws
ICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAg
ZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRh
dGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3Vy
Y2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5j
b2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAg
ICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAg
ICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0
YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJl
c291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2Vi
UmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JL
ZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRl
eHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIw
Miw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVy
biBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICsz
NjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdp
bmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEg
PSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEo
KSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29y
ZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29k
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6
ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIx
NzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9y
eVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVt
b3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQs
NyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3
IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1
M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVt
b3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Q09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8v
IElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsK
QEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRl
OgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
OwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3Vu
dCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNo
aXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAx
ODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQw
NWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01f
T3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Q0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdl
dCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Q0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdl
dCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3Zl
KGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0
MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
MjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2Rk
ZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01
NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAg
ICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5k
VXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
YXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYw
MzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhS
RVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJl
YW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAot
ICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1
b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJl
cHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24q
KiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZl
ZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3
YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1
LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6
OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0lu
XyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQo
ZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDEx
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9J
bl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBk
b2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0
aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNv
bWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkK
LSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNo
YXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0
YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1v
dmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0
cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNv
ZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2Ez
MGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2Fl
YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpj
cmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJl
c291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAz
Li45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVz
b3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
V2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVz
b3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5r
bm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmU0ODQ3MTdk
NGFiNDM3YmVlNjg2N2YzMzgwODc0YTdiN2NhZmU3NC4uMGFiNDUwYTRkNDdmZTU4NmIzYjMzODM5
YjYwMTJjMmI3ZTMyMWMyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KwogMjAyMS0xMS0zMCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBhZGQgRXh0ZW5zaW9uVGFiQWN0aXZhdGlvbiBkaWFnbm9zdGljIGV2ZW50CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLjIyMGEzODAw
NzgyMzFhNWRiNTM0ZTc0MzBkY2Q4ZTc3Y2QwZjA3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC00Myw1MiArNDMsNDUgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmls
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAg
IEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3Ry
aW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0
cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7
CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0
aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJU
X05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVF
KCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVm
ZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAo
c3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9U
UlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCks
IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgn
YScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0p
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgq
YnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAx
KSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5
QnVmZmVyKQpAQCAtOTYsMTAgKzg5LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBj
aGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2Ri
eWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRh
MSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwor
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAi
SGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRl
bmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihl
eHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNCwxMCBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIp
KTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUg
KyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24g
PSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTE1MSwxNyAr
MTQ0LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGln
bmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0
IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJv
aW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1
cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERh
dGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAg
IGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIg
bXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hl
Y2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUo
KSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHko
KTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGgg
KiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0g
YnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXpl
KCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIu
YXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXIt
PnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBV
LCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3RE
YXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29w
eSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkp
OworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRp
ZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdl
dCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVu
ZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAg
IGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHko
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0
ZWQpCkBAIC0xNzUsNjAgKzIwNCw3MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4g
czEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2Un
LCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdr
JywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0
byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwor
ICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZm
ZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
OCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJj
ZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBn
aGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJj
ZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCks
ICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwog
ICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZl
cihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wu
ZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwg
YnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0
YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBn
aGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5z
aXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRh
QXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1h
a2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29u
dGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAg
ICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
Y29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBh
dXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1
dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAg
IEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEt
PmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2En
LCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydh
J30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdj
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZl
Y3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpi
dWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0g
fSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdl
dCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRv
SGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9
OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAg
ICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAg
ICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQ
RUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI4OCwx
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7
CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkg
JiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAg
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMz
MzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkz
ZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0
IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAq
ZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7Cisg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciop
aGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJp
ZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERh
dGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZE
YXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBo
ZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9
IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVn
ZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVy
LmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlz
RXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUlu
dGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3
aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNy
ZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hp
bGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFs
VG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0
aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxh
c3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAg
YXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAt
IDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVh
bFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7
CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="470772"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445556</attachid>
            <date>2021-12-01 04:33:17 -0800</date>
            <delta_ts>2021-12-02 04:14:25 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211201233314.patch</filename>
            <type>text/plain</type>
            <size>417778</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgzMDRiN2VkMTRkZWQz
OWExMjE3OGY5ZWIwMTY2YzZlY2QxMGQyMC4uNDM4M2RhNDY0MzA2Y2MyM2RjNTJkMmUyYzZmNGIz
NjcxMGFhMTY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZl
cjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5k
IHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRl
c2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUK
KyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdv
dWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUK
KyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVh
IHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNl
Z21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZs
YXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRo
ZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisg
ICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2Fs
bCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3Ag
aWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAg
YSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBT
aGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAg
IHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9u
cyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3ku
CisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hh
cmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBp
ZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIElu
IHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRp
b25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5n
ZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVt
b3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNs
YXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFu
Z2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0
aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlr
ZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFk
ZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2
YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcg
QVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6
c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFs
bCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgor
ICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlk
cyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29s
dmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpr
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRH
ZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1l
bnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06Cisg
ICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVz
cG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3Jt
YXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0
YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAg
ICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVu
dFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJj
aGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZU
UERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VD
b250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZm
ZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAg
KiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAg
ICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNl
TmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRv
VXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6Cisg
ICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJG
cm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25p
dG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6
CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVE
YXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250
aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZU
b1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdp
dGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRh
U2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJH
ZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29k
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRV
SW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3Jl
Ojppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERG
RG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRy
YWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6
OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2Vt
Ymx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENv
bnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3Ry
dWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1h
dGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJs
ZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFU
SFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3Zl
cmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVu
YW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpj
b3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6
OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxv
b2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVh
dHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5n
U3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlw
dExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVh
dHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxl
OjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NV
QlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VC
VGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNh
bERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxE
YXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0
SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAg
ICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6
XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJs
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
OjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0
YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUlu
c3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1
ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0
b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1
bmMpOgorCiAyMDIxLTExLTMwICB1andhbCBrb25lcnUgIDx1andhbC5rb25lcnVAc29ueS5jb20+
CiAKICAgICAgICAgRml4IFBsYXlzdGF0aW9uIGJ1aWxkIGFmdGVyIHIyODYxNzEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNDA2ZDQ5NzQ5MzIxNGY2NGYyMjFhNDQyNjY3MzU2YWJlNTRiODA1Zi4uOTdjMTU3Y2I1Zjlh
ZGM1ZGU2YmE5MzYzYjYzNWJjMGQ5NDM3MWZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTAgQEAK
KzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3Vz
IG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgor
ICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJB
cmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRy
eVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5
cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVu
dHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAo
QVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgor
ICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQ
STo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNE
cm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1
ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6
ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgor
ICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFn
ZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0Ojpy
ZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVz
b3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNo
ZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29uc3Qp
OgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9y
eSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjovLzg1NjM3NzIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2FuIGRpcmVjdGx5IHdy
YXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlciB1c2luZworICAgICAgICBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFkLgorICAgICAgICBObyBjaGFuZ2Ug
aW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0b3RhbCBtZW1vcnkgc2l6ZSByZWR1
Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sgZm9yIG51bGwgd2hlbiBtYXBwaW5n
IGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAgICAgICAgaW4gYSBjb3VwbGUgb2Yg
c3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0
b3IgbWV0aG9kLCByZW1vdmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVz
aW5nIERhdGFTZWdtZW50OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAg
ICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKworMjAyMS0xMS0y
MSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGFs
bG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJl
ZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSB3cmFwIGEgU2hhcmVkTWVt
b3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVh
dGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUg
YmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5IHNpemUgcmVkdWN0aW9uLgorCisgICAg
ICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdoZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9y
eSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEgY291cGxlIG9mIHNwb3RzLgorCisgICAg
ICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6IE1ha2UgU2hhcmVhYmxlUmVzb3VyY2Ug
dXNlIHRocmVhZC1zYWZlIHJlZmNvdW50LgorICAgICAgICBBIFNoYXJlYWJsZVJlc291cmNlIG9u
Y2UgY3JlYXRlZCBpcyBpbW11dGFibGUgYW5kIHRoZSBTaGFyZWRNZW1vcnkgb2JqZWN0CisgICAg
ICAgIGl0c2VsZiBoYXMgdGhyZWFkLXNhZmUgcmVmb3VudGluZy4gRGVsZXRpbmcgdGhlIG9iamVj
dCBvdXRzaWRlIHRoZSBtYWluIHRocmVhZAorICAgICAgICBpcyBzYWZlLgorICAgICAgICBNYWtl
IG1lbWJlcnMgY29uc3QuCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6
IFJlZmFjdG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBjb2Rl
IGFuZCB1c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2Fy
ZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisKIDIw
MjEtMTEtMzAgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogYWRkIEV4dGVuc2lvblRhYkFjdGl2YXRpb24gZGlhZ25vc3RpYyBldmVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDUwMWQ1MDFhYjM4MDE3ZjFkOGY5ZTgxYzliZWZkYzJk
N2Y2ZjE2ZmUuLmYzNTI5ZGViNzJmMWVmNWRkN2UxODQ4OWIwNGFiZGFlNGU0MzY4Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1
bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
IChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6CisKIDIwMjEtMTEtMjQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb21waWxlciBzaG91bGQgYmUgYWJsZSB0byBjaGVjayBsb2NhbGl6ZWQgZm9ybWF0
IHN0cmluZ3MgZm9yIGNvbnNpc3RlbmN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
Y2FkNjFhNzdhMDEwY2RkODcwZjBhNWM2N2QyMTM5Njk2NmJiNjBhYy4uNTI5NDkzMTk4MjhlNGUx
NTYzODJiOTM3YWY5YmMyY2E1ZWJlNDFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9y
eVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAg
KFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgor
ICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJ
bnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMS0xOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFVzZSBP
YmplY3RJZGVudGlmaWVyIGZvciBBWElECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0
YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcs
NyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1hcmt1
cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRp
emUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAg
bWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZElt
YWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
aW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFl
NmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3
YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgp
IGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdl
dCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0
KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBu
c0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4
NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2UzOTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05T
SW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJ
bWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAg
ICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0Rh
dGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFn
ZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQw
NzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3
MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWlu
dDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBE
T01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6
c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAg
ICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5z
aXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA5MDk4ZTA1YWY0Yzg0
MzNiM2QxM2IzOTU2NTA2NGE5YzE1NDMzODdkLi42YjkxM2U0NzAzZjAxM2MxM2NlN2E2MjBiYTA4
ZWFjOWM1MzYxMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cApAQCAtMzAwLDEzICszMDAsMTMgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1
ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFk
ZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOwor
ICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBv
c2l0aW9uLCByZXNwb25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9u
c2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVl
c3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9k
eSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9k
eS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9p
ZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkg
Ym9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZh
bHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAg
Ym9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihy
ZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhj
ZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzg0
LDcgKzM4NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICBpZiAoYXV0
byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5h
cHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3
NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJk
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNw
b25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYs
IFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
Jik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9u
T3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3Mg
U2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJl
Y29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9y
PERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4
OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5
KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihi
b2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsK
ICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25z
dCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICBy
ZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZm
ZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5k
IGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9u
c2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29w
eVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwg
W10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAg
ICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10o
Y29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
RE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVh
ZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApA
QCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2Fj
aGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hl
UXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlT
dGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENh
Y2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcg
UmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VC
b2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJj
NjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRk
YXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAog
ICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICgh
dmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFy
cmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVl
KCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5w
dXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0
ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVh
MTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEs
NyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICgh
bGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAg
cmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCks
IGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJT
b3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQ
YWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlT
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVz
ZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFp
ci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3Vy
Y2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdU
Rk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5
MDZjMmJmODJlM2IxLi5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyAr
MjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25l
ciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
Rm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNT
aGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBt
X2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
Zm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9i
cy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFz
Rm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAm
Y29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0
YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1
dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJv
ZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFC
b2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5k
bGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5k
bGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFy
Y2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5j
b2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVy
Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdC
b2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9k
eSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
IAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4u
MDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5n
IFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxG
b3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNj
MjE2YTAxY2RmNjk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMTI2YjUzODQ4YTk5MDlkYzcy
NDA5NzFiNDQ3NmRlMGJlMGUwYjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwg
Y29uc3QgU3RyaW5nJiBjbwogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJl
dHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29s
dmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwogICAgICAg
ICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyAr
MzA2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVm
ZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9y
bURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9y
bURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNl
PERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0
ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgYXV0
byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwogICAgIG1fYnVmZmVyID0g
bnVsbHB0cjsKICAgICByZXR1cm4gdGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2
NDYwMDQ2ZTQ2YmQ1MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFiN2MxZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0
MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9y
bURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4uYTE2MDc0
N2RlMGNlYWNlZWNjNzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAK
LSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAg
dm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFk
ZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEz
N2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
aGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhp
Z2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4u
ODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29k
ZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAg
ICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMx
MmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
S2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0
byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEz
IEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9u
KTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQs
IElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3
ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAx
MTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
SURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRj
MDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBv
YmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxp
dGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7Cisg
ICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0
ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcs
NyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyAr
MTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5k
ZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFs
c2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3Jk
IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RT
dG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBp
biB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBk
YXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBp
ZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBp
biBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBv
YmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9k
ZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcg
KzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVj
dCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwog
ICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93
ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6
bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAg
ICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXko
aW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgp
ICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpL
ZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwx
NCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1
dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmlt
dW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBj
b3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2Uu
dXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThj
ZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJD
dXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1
cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1f
Y3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRC
aW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3Vy
cmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkp
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5jYzVh
ODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsK
IAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1Jhdywg
bWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3
LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1f
aXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgw
M2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2Fn
ZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5n
ZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2IyZTJmY2EwZDM3YWE1
Mzk5OWZhNjI4NGE0NTlhNGU0NzMxYWMuLmJlZjRkMmQ3YWM3ZWVjZDkxN2MxZjY0M2E1MjdlNWQ2
Nzc2MjQ4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAg
ICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwg
cmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2Rl
bDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91cygpLmdldCgp
LCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRl
UmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVk
N2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQs
NyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUo
V2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7
CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0g
ICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUs
IG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7
CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5k
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVD
b3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRh
MWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApA
QCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VP
blN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwo
Z2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBb
Jl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
LmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYz
MTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01
MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFt
X2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5z
T25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNP
bmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0g
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09u
bHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCks
IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2Ny
aXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAg
IHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAg
cmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9j
YWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0g
bV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVy
OworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIg
bV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNo
IHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4Y2Zh
N2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2Zk
YTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcs
NyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25j
YXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Zm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYg
KG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVu
dEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Mg
PSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAt
MTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJh
c2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1t
ZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVm
ZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0
YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgy
NjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4
NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
Rm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRT
ZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVk
ZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcg
KzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2Vs
ZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBm
b3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTVi
OWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5
YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1
LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudElu
Zm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxT
dHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRk
aXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1
ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBl
NjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNz
IENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0
dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21w
b3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFj
ZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29s
IGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5m
byBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4
LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBh
ZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7
CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwog
ICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5
YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMz
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3
YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEs
MTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5m
b250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBh
cmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmli
dXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNL
ZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcg
cmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0
YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllF
UyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZv
cm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZv
cm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6
Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwg
VmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBv
dXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVt
ZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgp
LT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRh
KTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYg
KGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRh
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9h
cmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNl
bGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAg
cGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9u
SW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFh
cmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJl
c2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBz
ZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQg
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3
IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAg
IHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3Ro
KSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0
aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVu
Z3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1
ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAg
Qk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFT
b3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0g
cmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8
IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAg
ICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQ
cmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVU
eXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlF
UzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4g
ZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBp
ZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVu
YW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAg
ICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAg
IGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgp
LCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVt
ZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFk
YTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0y
ODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNo
bWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0
cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAg
ICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50
PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiBy
ZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0
YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291
cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAg
ICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAt
MzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAg
ICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291
cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyAr
MzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudElu
c2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxN
YXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZy
b21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5v
bk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRG
OChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNo
aXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQs
IE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlz
dFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93
TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9j
dW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJm
cmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAg
ICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgo
c3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1
YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1l
TWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkg
fTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hp
dmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1
aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZy
YWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0g
Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAg
aWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBA
IGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhm
cmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5
YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIy
NzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBh
c3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBj
bGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1h
Z2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJ
bldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICgh
YXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXBy
ZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTog
VGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkg
YmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3
cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0
aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlz
IG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVm
NDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMx
ZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
QEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJz
ZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50
cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3Vs
dC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3Vs
dC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVu
dERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkp
OworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRl
IG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpA
QCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZU
UERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAg
c3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3Rh
dGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwog
ICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1v
cmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhl
CiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhl
biAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJh
OWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsxMDMs
MTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0
RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250
ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3
NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBT
dHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0
KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCks
IHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpi
YXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1
bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1
ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250
ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVu
Y29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1
ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkK
IHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhC
YXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQp
OwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZh
OGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2
b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NF
UlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJl
c291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250
ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNv
dXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6
ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApp
bmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdi
N2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEz
OSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1
bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxp
Z2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3Qs
IGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgp
LT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENs
aWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRj
aE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNj
Y2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwOCwx
MSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQog
ICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJj
aGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hp
dmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291
cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEo
KS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJj
ZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBj
b21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgp
LnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1h
aW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpA
QCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVz
b3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwog
fQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNv
bnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2
ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwog
fQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hM
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBs
YWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNv
dXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQo
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdi
MjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhk
ZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3
NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdS
ZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmll
bGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhB
cmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVm
PEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JT
dWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkg
Y29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVz
b3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAyLDcg
KzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FS
Q0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdhYTA1
NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAog
ICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90
IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAg
ICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJlN2Zm
MmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmlu
YWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYxMWZm
YzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3NDY0
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAx
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAg
ICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFk
ZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBv
dXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAg
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9u
c2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5l
d1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdS
ZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRp
b24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0
aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVz
dGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3Zjkx
YzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNz
IENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhf
dDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8
fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8
QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0
YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9
IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxs
QXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdl
TG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdh
ODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkxMGZl
NGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTcx
LDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0
aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFw
cGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBs
b2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENh
bGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nh
c3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3Rp
ZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0
YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2
NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291
cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJj
ZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2Iw
ZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4Yzll
N2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNw
b25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFy
c2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291
cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgp
KTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMg
d3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSBy
ZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFy
c2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5Mjcx
Y2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUz
LDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNv
bnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJl
c291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0g
ICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVu
c3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNl
LnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNv
dXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1
b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5
bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwog
ICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwg
cmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyBy
ZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChp
bmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNv
ZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3Jz
IChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVh
ZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5
CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
RmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0
aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAg
ICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJl
IFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4
IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUz
ZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBA
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUw
LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9z
dCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNr
Rm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBi
b29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQg
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsK
KyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zvcndh
cmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYz
MDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMx
MWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxp
dmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2Fk
ZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8g
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
MWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIx
MDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUs
NyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVu
dC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNl
LT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwg
cmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigx
LCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAK
ICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMsNyAr
MTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXND
b2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0
eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgy
KSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAg
CiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAg
ICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJm
NmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0
MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50
YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUg
cmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291
cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0
KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCku
Z2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVn
YWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwK
ICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0
cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAg
Ly8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291
cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJj
ZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNl
LT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5
TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNl
UmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5
LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVm
IGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBS
ZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0
ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBp
ZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25z
ZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5v
dCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJl
c291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBA
IC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9t
IHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9
IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBk
YXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0g
ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJv
ciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlz
dCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENy
ZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAw
LCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3Niwx
MiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVh
c2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBp
ZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7
CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3Bl
cnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFs
aWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0
cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFs
aWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAg
ICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rp
b25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hp
dmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4g
YXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcg
QEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBT
dWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBj
cmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJl
c291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMs
NyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJl
ZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9y
dGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFt
ZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4
dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUo
V1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJh
bWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZy
CiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAg
IAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVS
TCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNl
VVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAog
ICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7
Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZy
YW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdo
aWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmlu
ZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9
XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBz
cmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJs
KCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2Fj
OTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMz
MWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVI
ZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250
aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoICht
aW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFk
ZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0
YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1Io
IkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFk
ZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFBy
aW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5k
YXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVE
ZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVI
ZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250
ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0
YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8g
RklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBz
aG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3
YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcj
c2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRl
IG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdm
YzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0NDRi
YjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAgQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0
YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNm
MDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6
OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAg
cmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNv
ZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJp
dCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
PmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7
CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2Rh
dGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsK
LSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVw
IHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRh
KQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhl
IGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3Rp
ZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAg
ICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBD
bGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1l
ZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYy
NWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEy
NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02
Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEt
PnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxj
dWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5n
KCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBA
IGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRh
KQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBw
aW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVy
ID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcg
KzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtl
cihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxr
ZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1
Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2Zjgx
MTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3Vy
ZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMg
Rm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxh
dGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxp
YywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9u
dD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0
IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENy
ZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1J
bkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIu
LjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlu
bGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9
ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNv
ZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEy
ICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEo
KSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJ
bWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxz
W2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZl
cnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRS
ZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAg
ICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAh
VVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3Jl
YXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8v
IExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3Rl
bSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVjMzZm
OTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRE
ZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVm
ZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVu
Y29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAg
ICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJm
Li44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7Cisg
ICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0Rh
dGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91
c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9
IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9
IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5j
cmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGlu
Y3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUzMzE5MGE3
NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUxOWI3NTVhOWNhYzU3
NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxs
YmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12
b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBu
ZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAg
ICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5
UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9k
YXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigp
OwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3
QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAy
ODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFh
ODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
ZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVz
b3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYp
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNl
bmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0
YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7
IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2Fj
aGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291
cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgog
ICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2Rh
dGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGlt
ZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4
NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3
YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZH
RG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9k
b2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45
Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJv
b2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYg
cmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVB
c3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFs
U1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1l
bnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9
IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBib29s
IENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0
Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJuYWxT
VkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAg
bV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdG
b250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2
Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJp
dmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250
RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxl
bWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50
PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxT
VkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDQ3
YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFiOGY5
ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3
MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBAQCBD
YWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRh
dGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRS
ZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3
OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVk
ODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNoZWRY
U0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVl
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgp
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3No
ZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNp
emUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNo
ZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFl
ODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNk
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZD
YWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENh
Y2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRlOgog
ICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9u
SUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNr
ZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJk
Li45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KQEAg
LTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBudW1i
ZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBkaXNr
IGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJs
ZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBE
aXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2Fj
aGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFj
a2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNw
b25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
IH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0
aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzEx
Myw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VT
ZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1
biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRv
cjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZl
cikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVzb3Vy
Y2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3Vy
Y2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYw
MzMzY2YuLmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFhOGVh
NmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNv
bnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRp
bmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVu
dCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8v
IGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgp
OworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcAppbmRleCAxYTEyMTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5k
NzUwY2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05v
ZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1J
TUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwg
VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAg
Zm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIg
YSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9u
ZS4KICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50
cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsK
LSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9
CiB9CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jl
c291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJk
MTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJp
bmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBs
aWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRk
OWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdG
aWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmls
ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsK
ICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdh
ZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hh
cmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQog
ICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1
dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZm
ZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1l
ID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJy
YXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hh
cmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFy
Kys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+
KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fk
cy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhj
aGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXll
ZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYu
LjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3Vi
bGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNv
ZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBT
dHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRl
eCA3ZDI0N2RjZDFhMTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2Rj
Y2ExM2Q3MzkzNGFhMDQzNmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAg
LTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNP
UkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3Jp
Z2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1h
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0
cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVj
dCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2Uo
KTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBk
YXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJv
YXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4p
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1J
TUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShM
aXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUp
OwogICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwog
ICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25z
dCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3
YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1
MWQwMGQ2ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+
JiYgZGF0YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBj
b25zdGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9
IDE7CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdp
bjsKICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5j
b2RlciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZm
ZXJTaXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVj
b2RlcikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVi
b2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkw
MjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3Yzhj
NWZiZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFz
dGVib2FyZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJv
bVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRC
dWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJj
Li5hNzg4ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0
b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlm
CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0
cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25E
YXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5
MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0
MTIxZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1
MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250
ZW50T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAg
IFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9y
bWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJh
MzEwMDc0MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhi
M2Y2ZjBiY2E1NDM2NGFmYzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2Fy
ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rp
b25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0
cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQ
YXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZv
cm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1
ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJv
YXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVh
ZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIx
NTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRB
dHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcg
KzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4
ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLjVlMjVhZTNlNDgxMTZhZjQ4NDM5
YzNmZjIzOGVlYmQ0MDVlNWFjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxl
RGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAg
OiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9
CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCkBA
IC02NCw2ICs2NCwxMSBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAorU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorewor
ICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiAjaWYgVVNFKEdTVFJFQU1FUikKIFJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVy
JiBtYXBwZWRCdWZmZXIpCiB7CkBAIC03MywyNiArNzgsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRC
dWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVy
KSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNl
RmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZp
bGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0
b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArOTIsMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6
Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRy
dWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFu
Y2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxs
IE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAg
ICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29u
c3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAg
ICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1f
c2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHsw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NF
UlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0
ZW50KCkpOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAot
ewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWRE
YXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29u
c3QKQEAgLTE4MSw2ICsxNTYsMjEgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmco
KSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVf
dCBTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisK
K2Jvb2wgU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUo
KTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY29udGlndW91czsKK30KKwogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIDEpOwpAQCAtMjAyLDEwICsxOTIsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVy
PiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkg
KyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
e21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRz
LnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsK
ICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBB
U1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMjMgKzIwMywyOCBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQog
ewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNT
RVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVj
dG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7
CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAg
IEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7
Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAg
ICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisKIHZv
aWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKQEAgLTI0MywxNyAr
MjM4LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAg
ICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYo
KX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50
LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJU
KGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikp
KTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAg
YXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTUsOCArMzQ1LDcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25z
dAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiAr
K2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQogCiAj
aWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3Miw3ICszNjEsNTcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6
OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxF
RAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQorewor
ICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAg
bV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RG
TW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFz
T25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXpl
ID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5o
YXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91
c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRp
Z3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVz
ZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRG
aWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RG
TW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFk
aW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+
ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXND
aGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25z
dAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0
YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyArNDMwLDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwog
fQpAQCAtNDAyLDcgKzQ0MSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBT
aGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4ge3sg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQpA
QCAtNDU2LDcgKzQ5NSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigK
ICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1
cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTE0LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkK
K1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21l
bnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAs
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1f
c2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2Vn
bWVudCkKQEAgLTQ5OSwxNiArNTM4LDIxIEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9
IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2Vn
bWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0
YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgp
XSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4g
c2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIg
YmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3Qg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU3OCw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAg
YnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi41
OWYwY2EyYzQ2YzAzMjIwOGI2Nzg4MzFjMjQ2MWNmMWNiMDJjMGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjIsMTQ2ICs2MiwxNDYgQEAgY2xhc3MgRGVjb2Rl
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsK
Ky8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVj
YXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3Mg
RGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1h
cHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KG1hcHBlZEZpbGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5n
IDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5
VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6
ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0
YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0Rh
dGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQot
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChD
RkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0
ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVm
UHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRh
IHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBh
bHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVu
ZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMg
ZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAg
ICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8
dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBh
bmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVk
QnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgp
OwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVk
QnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVy
Z2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBhcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVjdCBQ
cm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAg
ICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAvLyBEYXRhIHdyYXBw
ZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJl
IHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmlu
ZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0YVNl
Z21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBVU0Uo
Rk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBk
YXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBib29sIGNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVu
dChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFw
cGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotCi0gICAgICAgIHN0
cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBk
YXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlk
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikp
KTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KICNlbmRpZgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92
aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQog
Ci0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFy
aWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5k
aWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYg
ZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQor
ICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
ICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRl
ciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92
aWRlcikpIHsgfQorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAg
UHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVy
OworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorI2VuZGlmCit9OwogCi0gICAgICAgIHN0ZDo6
dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KKworI2lmIFVTRShGT1VOREFU
SU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIp
Ci0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0g
ICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xh
c3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICAv
LyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2Ug
dGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90
IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBD
cmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250
ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRl
ZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c0VtcHR5KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygp
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICB2b2lkIGZvckVhY2hTZWdt
ZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNv
bnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVzaW5nIERhdGFT
ZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0
aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVj
dCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247
CkBAIC0yMTAsNTUgKzIxMCwxMDIgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVj
dG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMu
YmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7
CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9n
KE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBw
b3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcg
Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0
cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNv
bnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0KLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwogICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0
b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9
IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0Owor
Citwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CisK
KyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250aWd1b3Vz
IHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigp
ID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXIm
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNp
emVfdCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNv
bnN0OwotCitwcml2YXRlOgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBh
IFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVk
QnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRW
ZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25z
dDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9Owot
ICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQg
eyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRp
ZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRo
YXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBh
bmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1Ymxp
YyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigp
KTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAg
ICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4p
KQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gRW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNz
LCBpdCB3aWxsIGFzc2VydC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2
b2lkIGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOworCisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIq
IGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmls
ZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VG
aWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYg
VVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNG
RGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQg
R1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6
CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1No
YXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKIGlubGluZSBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhh
c09uZVJlZigpKQpAQCAtMjY4LDIxICszMTUsMjEgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBT
aGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRo
aW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBz
aXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAg
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRl
OgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7Cisg
ICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1f
cG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4
OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5
MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBA
IC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1Bs
YXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0Vs
YXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlp
bmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0g
ICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRh
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5m
by5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9B
cnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6
bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2Vj
YTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZv
aWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFz
dCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5j
b2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpm
aW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlz
dENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwg
a0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJm
MzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJl
ZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29k
ZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFj
ZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5ZmMyMjhhNmQ5YWJiYzMyMGVmN2Y2
YzhiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVm
IGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmlj
aWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhp
cyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBj
b25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGlmIChh
dXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRz
WzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
aWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2Fy
ZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBm
MDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDEx
IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGlu
Z3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNv
bnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1
ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhE
YXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJp
dG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJl
dHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZl
ciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9y
VHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBj
MGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3Njkz
OTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZm
ZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRp
b246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50Jilk
YXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2Vy
KXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7
Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9k
YXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRh
U2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXpl
OwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNV
SW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21l
bnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBA
IC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEp
CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxO
U0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0Rh
dGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0
YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0
YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAg
ICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQog
ICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkp
OwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdl
X2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2
LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0
YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+
IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5T
KFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRo
aXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNi
NDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5
MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046
OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVk
MmVkLi4zODI5OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERh
dGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtl
eUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBj
b250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8q
IGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0
YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVu
c2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBr
ZXlJZHM7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29u
dGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBk
YXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTI0NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQog
ICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dp
bmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBF
YWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhl
IG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCks
IGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERh
dGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJ
ZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygp
LnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFm
YjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlz
aEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVy
LmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZl
clNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2
OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQy
YzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQy
NGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdi
ZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5
ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29k
aW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpm
aW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxh
c3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFu
dCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0
cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQo
KSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRj
MWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlm
YTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDli
MTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVm
ZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRl
cz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBz
aXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0
aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0
YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
dGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYg
KGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2
MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwg
c2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50
cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQw
YjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1
ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4
LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHks
IG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0
YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9u
dEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JW
ZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSog
Zm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0
byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRG
YWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZm
NC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxi
YWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2Fj
aGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAg
ICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNr
ID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFj
ZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5
ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNl
IGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFi
bGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBj
b25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBm
b250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRG
T1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVh
OWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQw
OTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBt
aW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlw
ZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6
IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBl
KSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0
ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxN
b2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
U3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5
ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVm
UHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1v
ZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9k
YXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3
ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1f
ZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6
ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3Vy
bDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVs
OjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBX
VEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5h
MGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0
NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFk
VUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZh
bHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhv
ZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAt
IG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJl
YWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYg
dmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0
aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zm
c2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwg
c2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYo
VmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3Qg
dWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29s
IGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJf
dCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAot
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
d29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2Zu
dC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4g
c2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBA
IC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVk
Rm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkp
Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVk
Rm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43
OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICsz
MCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVm
ZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlz
V09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhl
IFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBz
Zm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBP
dGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNm
bnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVp
bnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1
ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2
ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5z
IHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZh
aWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3
NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0
YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsg
PGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9Owot
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1
ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAg
IGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2
MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGlj
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZl
ciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgot
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1
ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAK
ICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2lu
Zk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAg
IGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5J
VERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNl
bmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5T
U3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBl
cnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJh
eShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVy
biBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVk
U2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFw
cElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3Vj
Y2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2Fk
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAg
ICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6Omdl
dEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25z
ZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNl
V2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVH
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNz
aW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVz
dHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAg
ICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29u
dGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3Bv
bnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9
CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxs
YmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3Vj
Y2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5z
ZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5n
ZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlB
dFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQ
bGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5
OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1
c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9u
RGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJl
ZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRp
ZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVl
c3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5
Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgp
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmll
ciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0
RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJ
ZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEs
IE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVy
cm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAK
ICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRC
dWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0
b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9y
PiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAg
ICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBh
dXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9h
ZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtl
eUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkp
OworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0
cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJp
bmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAg
ICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpA
QCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9y
IChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAg
ICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsK
ICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMu
Zmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlE
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RG
TW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0
aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3
Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1
NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJB
VkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9s
b2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNz
aW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21f
bG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107
CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJj
ZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9h
c3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0
aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpA
QCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRD
b250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURl
Y29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRh
OmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxs
RGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9p
c0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEy
MDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2
NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Ojp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5z
RGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBz
aGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmICht
X3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVp
dHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRo
RmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYy
YjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2
LDcgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9i
dWZmZXIpOwogfQogCkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2Ug
bV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyAr
MjM4LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9
IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1v
ZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVz
cG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwor
ICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2Zl
NzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAg
RlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlv
bjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBj
MDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5z
aXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFU
Rk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCog
aW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAg
IFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
aW5mbyk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VT
aXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNp
emUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlm
IChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNv
dXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBu
dWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBl
V2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0
IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1
ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lk
ZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRo
ZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidz
IGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMs
IGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAg
IENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNl
bHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBX
ZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0
Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJv
dmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRo
YXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2lu
ZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RD
YWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5
dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZw
cm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIo
bV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZl
ZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJl
YjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4
N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJS
ZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJv
dmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
Q0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsK
ICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVy
KGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
aW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYz
YWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3Jt
SXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4g
Q0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVk
YjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4
NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFT
ZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8q
IGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJl
ZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21l
bnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZv
cm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4
MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTVi
NTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAK
QEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURh
dGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JF
cXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRh
ID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVP
cHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIw
ZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBz
dGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAg
ICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3
OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkw
ODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0Nv
bXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJl
ZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2Nr
ZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZy
ZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBl
Y3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVa
WikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApp
bmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRl
NjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6
OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlz
KTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGYxNjA3MTViZGE3NzU5ODkwMTMzNmI2M2M5
NTY3YzAzMjUwYmQyNTcuLjk0NGM3MWU3MDczZTU2OTFhY2Y1ODcyMjA0N2E5MWJjNzNkMDgxMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lv
bihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTgyLDcgKzE4
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBw
ZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2
NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4
LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2Vv
cyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2Rl
ckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5z
aXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJH
U3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9
IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAg
ICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
ZmE3MDlmZWE1MTZmMzU4NWZjMjIxNzJiNWRiMGZlYmU5YWRiNzY4MS4uYzA3ZmI1Njk4NThlMDQ4
Y2JhMzgwODM4YmMxZTMxMzkxZGIyMjk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2NzMsNyArMzY3Myw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0
RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9h
ZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwg
aW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBk
YXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkp
OwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJj
MmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VD
b250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3Vw
UGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBj
b25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1
Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0
IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNp
bmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0g
YmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFs
dWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEs
OSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0Kiwg
R0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7
IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3Vw
UGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQ
YXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9h
ZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3Zl
KHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkp
CiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdk
MmYxLi43YmIyNzQzYTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMyYzUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAg
ICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCisg
ICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQt
Pm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAg
ICAgewogICAgIH0KIApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAi
Y2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0
NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZv
cm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNp
emUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0
aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0
YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5k
ZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIw
MDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlv
bkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5
Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQg
PSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxv
Y1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3Bw
CmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNl
NmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJl
Y3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0
aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVj
dGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRh
bGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBo
IGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChp
dGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRo
R2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0
ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5J
bmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0
YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25J
bmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7
CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IEdseXBoQXNz
ZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAg
ICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0
cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYg
YXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gcGFy
dENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNbY291
bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDog
VGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7
CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRD
b3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2b2lkIGdldFNpemVWYXJpYW50
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNv
bnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkKQEAgLTE1Myw3ICsxNTMs
NyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAg
ICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBo
OwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5
UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFy
dD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQg
PSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlw
aEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQp
OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3Zl
cmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5cGhDb3VudDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJl
IGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zIGFuZCBo
b3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMuCiAKLSAgICBj
b25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QK
KyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlz
VmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90
KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9udGFsR2x5cGhDb3VudCk7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zm
c2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxl
QmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aENvbnN0
YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9
IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMTIsNyArMjEy
LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyog
bWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0Owog
ICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0cnVjdCBNQVRIVGFibGUg
OiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25z
dCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgw
MzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMz
LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRy
PGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4
NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4
ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzcz
LDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2Rl
ZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkg
PDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8
PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGlj
IGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
ciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3Qg
VCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNp
emUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgy
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxl
KGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3Rl
Y3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24p
CiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJl
dHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNs
dWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMg
Y29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZv
aWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCog
dmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2
b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
cmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3Qg
VCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9m
ZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVP
ZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZz
ZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBA
IC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7
CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBU
YWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBo
IGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVy
YWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3Zl
cmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4
KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQp
IHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5
MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVy
OjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRh
YmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0
ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNo
IGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAot
Ym9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmlu
ZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJl
bmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0
cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAg
ICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qg
c2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZv
bnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1
aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRh
IGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0
aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlm
ICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3
NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9u
dE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRN
ZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2Mw
MDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQy
ODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcg
KzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVy
YWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdl
VGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJs
ZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zm
c2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0
aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUg
OiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwog
ICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21l
cyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNh
bGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiog
bWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0
aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3Vi
VGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
c3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1
Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBD
b3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25z
dCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGlu
ZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXgg
Pj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpA
QCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29r
dXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBM
b29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMo
Y29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1
Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZl
YXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1
aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVh
dHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVy
ZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0
dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVy
ZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1
cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUs
NyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsK
IAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVU
YWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcg
ZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1
cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAg
ICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRd
KSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsK
IAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3Jp
cHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAs
NyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVm
YXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAo
IWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3
ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9m
ZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1
bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSAr
MzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0
T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4o
YnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0
dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAg
Y29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBM
aXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVh
dHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVh
dHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNv
bnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25z
dCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAo
IXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAg
IH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1
cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1
cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdT
eXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0
IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyAr
MzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBm
ZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMo
SGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlw
aCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFi
bGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAg
aWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NV
QlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VX
aWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxh
dGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9w
ZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlw
ZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZl
cnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9w
ZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJl
cXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlw
ZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhl
YSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7
CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9p
ZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGlj
YWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRh
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVu
VHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlw
ZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdT
VUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGlj
YWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4
NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4
M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBA
IHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFt
ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250
TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5m
YzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENH
Rm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlv
bjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50
U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+
IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250
UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMz
MDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBAQCBz
dGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5h
bWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVu
YW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5
M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNh
aXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0
Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikg
Y29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4g
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApp
bmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4
NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3Bw
CkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShH
RElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3Jl
REMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJ
T0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNp
emUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFi
bGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0
KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRh
dGEuaAppbmRleCBjZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNi
MzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2Fu
U21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxh
Y2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRD
dXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92
ZShidWZmZXIpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3Rv
bURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFn
ZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3
NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJy
b3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0g
ICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMg
aW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2Rh
dGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAg
IGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlm
IChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91
c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVk
RGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAg
ICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlE
ZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5lNTY0NzEy
MDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihq
cGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFd
ID09ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmls
ZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZv
KQogewogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3Ig
KGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2Vy
OyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCog
aW5mbykKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29k
ZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lm
IFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9m
aWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRl
eCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNj
YmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
aApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBz
ZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRp
b24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1By
b2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmls
ZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1
Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAg
LTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3Rl
Ym9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVi
b2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2
Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUo
KSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtp
XS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsK
KyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVu
dERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNo
aXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJ
bldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50
LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVk
T2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5j
bGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVk
T2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5j
bGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDph
dHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3Rv
bURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsK
LSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0
ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1h
Z2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdl
LnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVU
eXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JN
SU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEu
Z2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJv
YXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
c2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDks
NyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJE
X1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNE
YXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9h
cmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAg
YXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAg
ICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRv
JiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJl
Z2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2Vu
dGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAg
aWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRv
IHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2gg
dGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZv
ciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNl
IHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRv
IGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRh
aW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVt
IHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1
dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsK
IAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAo
TlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBv
YmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
aW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJj
MmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIq
IGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewot
ICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlN
RVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1J
TUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3
ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChj
b25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5z
dHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25z
dCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9h
cmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0
eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3km
IHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGlj
eSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgs
IHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBz
dHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
V3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEu
Ljg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEy
OCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVu
dC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQt
PmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEg
Y3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29u
dGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElV
bmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
KS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJ
dGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3
My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBA
IC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0
ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFtt
X3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBs
YXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRv
bVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9
IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSku
Z2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3Rv
bURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAg
ICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0
b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAg
W21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3Jt
VHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxT
dHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAg
ICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChh
dXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0
YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkp
CiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEu
Z2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAg
IH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYg
KCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZm
ZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2Fy
ZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBu
aWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3
IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUo
TlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0
SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5
cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0
ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAg
IFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4o
c3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcAppbmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3OTA1Li5j
N2QxOGJlMWQ2YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0MTEsMTMgQEAg
dWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9s
ZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFy
ZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRh
Ojphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9l
bGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVp
bnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZv
cm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYx
MDguLjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1E
YXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1l
bnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURh
dGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAg
Y29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJl
YW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3
MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJj
ZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRh
KGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0
ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNv
dXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRp
b246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEp
XSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6
ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9
IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5k
ZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZk
YTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMg
Y2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUg
KHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpF
bmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9m
IHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEu
Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJv
dW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91
bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFs
bCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVm
ZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChv
ciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEu
Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZm
ZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzVi
MGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2Yx
NGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lk
IEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUg
IT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2Fk
RmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0
M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNk
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0
OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50
bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0
b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUo
YnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24o
KS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBX
VEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5l
dHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2
MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2
LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQo
U2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAo
ZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlN
ZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4
LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYg
dXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEg
dG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wg
dGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0g
ICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChk
YXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUo
dGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsK
ICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5k
ZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYw
M2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5k
bGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3
ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAg
IGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5
dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVz
dWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSBy
ZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5h
c2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNk
MTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEz
LDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VD
b250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRh
KCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3Bv
bnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5
ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAK
ICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJf
cykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1v
Y2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQp
OwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0
cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBp
ZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7
CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4
ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uYTRlMGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFj
MWY5ZmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0
Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2Vy
Rm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikK
IHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVk
ICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KG1fZGF0YSk7CiAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAoIW1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQg
PSB0cnVlOworICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRp
Z3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2Rh
dGEgPSBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewor
ICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5k
ZXggNGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1MWFmMjc4OS4uMWMwYjU3OGEwYTA0
MTE5ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGll
bnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJv
ZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsm
XSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZl
Rm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3Rk
OjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1
YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4
ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1
ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlz
YWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkg
ZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6
TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6
Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMz
ODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcs
NyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIq
IHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29s
IHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYg
Z2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCku
Y2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIz
OWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQs
NyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAg
ICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFm
ODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZv
aWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAg
ICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRl
ciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdk
N2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2YzguLmI3Nzg5MzJmMjgxYjcxMmUwMGZmN2Fm
MjY2YWEzOWJkZDIwMWMzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGlj
IHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsK
ICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZl
ci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9u
c2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1l
dHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmlu
ZGV4IDMzYTlkNGI2ZGZiODgxMGQyZjQyN2UwZjg3NmI4ODFmMDQwZWMyZTYuLmEwNzYxN2I5YTg5
ZWI2ZDVmMmIyOTZmM2VkYWIzYjM5OWViMjQ5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBA
IHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0g
ICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDBhZmNiMDcwN2RhZWQ2N2YwYTI3Nzk2N2Q1
ZWM0NzJkYzBmZTBjOTcuLjkxNmRjODYxZGUwODIwYWY3OTAyMDJiYjBjZmIxMjI1NWU4ZGRmMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNl
Q2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKT47CiAgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4
MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZv
aWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZl
ci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVm
ZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+
ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAK
aW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1
OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShj
b25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0
YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3Qg
UmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0
b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
ewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNo
ZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29y
ZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29y
ZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4g
cmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5
OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2Ux
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQg
RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihl
bmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5Owot
ICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9i
dWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9
IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRh
KCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90
aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXgg
YjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgwN2Q3NDE3MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBm
M2YyYzVmYWY5ZjkxNDU5MWQzMWNhOWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3
ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6
Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3Qu
dXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBi
eXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVt
b3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2Vj
ZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdjMzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVk
QnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRh
LnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92
ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlm
Li5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQxMzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyArNDAsMTQg
QEAgcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkp
IHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBi
dWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAg
ICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0g
ICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02
MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBk
MjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZh
NjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVy
biBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNp
emUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwog
ICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJj
ZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIx
Zjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9
CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0g
cGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgp
OwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNp
emVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJ
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRl
eCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThh
OWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJl
bGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBk
YXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCku
Y3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNo
aXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAog
ICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNl
RGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4
N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAy
NmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2
OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRh
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJl
Y2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNj
cmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxG
b250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEu
dmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAg
YXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGln
dW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9u
OwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3
NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5
YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApA
QCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9M
T0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBz
aXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgog
Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVy
Q29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAg
ICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0g
fTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcAppbmRleCAwYzBmMDhmYmRlNTZhOWQ0MmVjOWY5NmJhMzhmYmU1MTI1NTZl
MTY0Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSw0OSArNTUsMTUgQEAg
Ym9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFVTRShDRikK
LXN0YXRpYyB2b2lkIHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQg
KmluZm8pCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3Vy
Y2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVh
YmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCi19Ci0gICAgCi1zdGF0aWMgUmV0YWluUHRyPENGQWxs
b2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJl
c291cmNlKiByZXNvdXJjZSkKLXsKLSAgICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsg
MCwKLSAgICAgICAgcmVzb3VyY2UsCi0gICAgICAgIE5VTEwsIC8vIHJldGFpbgotICAgICAgICBO
VUxMLCAvLyByZWxlYXNlCi0gICAgICAgIE5VTEwsIC8vIGNvcHlEZXNjcmlwdGlvbgotICAgICAg
ICBOVUxMLCAvLyBhbGxvY2F0ZQotICAgICAgICBOVUxMLCAvLyByZWFsbG9jYXRlCi0gICAgICAg
IHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSwKLSAgICAgICAgTlVMTCwgLy8gcHJlZmVycmVk
U2l6ZQotICAgIH07Ci0KLSAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCkpOwotfQotI2VuZGlmCi0KLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQotewotICAgIHJl
ZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiB3aGVuIFNoYXJlZEJ1ZmZlciBpcyBkZWFsbG9jYXRl
ZC4KLQotI2lmIFVTRShDRikKLSAgICBhdXRvIGRlYWxsb2NhdG9yID0gY3JlYXRlU2hhcmVhYmxl
UmVzb3VyY2VEZWFsbG9jYXRvcih0aGlzKTsKLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEoKSwgc3Rh
dGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdldCgpKTsKLSNlbGlmIFVTRShHTElCKQot
ICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2Zy
ZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10odm9pZCogZGF0YSkgewotICAgICAgICBzdGF0aWNf
Y2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIHRoaXMpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpOwotI2Vsc2UKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgorICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRh
dGEoKTsgfSwKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYt
PnNpemUoKTsgfQorICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiBy
ZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3Vy
Y2UpIHsKQEAgLTEzOCw5ICsxMDQsNyBAQCBTaGFyZWFibGVSZXNvdXJjZTo6U2hhcmVhYmxlUmVz
b3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkCiB7CiB9CiAK
LVNoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKQotewotfQorU2hhcmVhYmxl
UmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJjZSgpID0gZGVmYXVsdDsKIAogYm9vbCBTaGFyZWFi
bGVSZXNvdXJjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQogewpAQCAtMTYyLDcgKzEy
Niw3IEBAIHVuc2lnbmVkIFNoYXJlYWJsZVJlc291cmNlOjpzaXplKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9zaXplOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuaAppbmRleCA3YjQ3ZjVkNjg1MWQ5ZGUzMmQxYzNhNTQ3MDUxNjBhYTRmN2M2
Y2I3Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDEyICszMywxMiBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAgICAgCi1jbGFzcyBTaGFyZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFNoYXJlYWJsZVJlc291cmNlPiB7CitjbGFzcyBTaGFyZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJjZT4gewogcHVibGljOgogCiAgICAg
Y2xhc3MgSGFuZGxlIHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICAK
IHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVk
TWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIAotICAgIHVuc2lnbmVkIG1fb2Zmc2V0OwotICAgIHVu
c2lnbmVkIG1fc2l6ZTsgICAgCisgICAgY29uc3QgdW5zaWduZWQgbV9vZmZzZXQ7CisgICAgY29u
c3QgdW5zaWduZWQgbV9zaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjMGI2ZWYz
ZmEzYTJlMTIwNGM2NzdlY2Y4NmFlY2JkMTliYjY0ZDdiLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2
MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVT
aGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIp
CiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAg
LTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIy
MSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIo
RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZp
eGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yMzQsMTMgKzIzNCwxMyBA
QCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmIChzaGFyZWRNZW1vcnlCdWZmZXItPnNp
emUoKSA8IGJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIGJ1ZmZlclNpemUpOworICAgIGJ1ZmZlciA9IHNoYXJlZE1l
bW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZlclNpemUpOwogI2VuZGlmCiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0
YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VS
VCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBA
IC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQor
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVy
JiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIs
IFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAg
ICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0K
IAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAg
IGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9u
KHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0
cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsK
ICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0
MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29k
ZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZl
cikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUp
IHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0
Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3Zl
KGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1v
dmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgog
CiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQor
CitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3
ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29k
ZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlm
MDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkz
YWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
IGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3
ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAt
MTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENv
ZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21h
cnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFy
Z3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1
MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJz
V2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0
YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAg
Rm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwog
CiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQz
ZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAg
LTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJm
ZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcg
QEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRI
YXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5n
SW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0
dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVBy
b3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3
ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2ZjhjNzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ygog
ewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNw
YW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlv
bjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24o
eyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2
MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2Yw
ZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBA
QCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3Jh
cHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmls
ZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJhZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzExNzgx
NWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNlNjliMmM2YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MTU5NSw3ICsxNTk1LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNv
cmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAg
ICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGln
aHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpo
aWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6
bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQg
YWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9y
ZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAg
ICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0
LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdo
dC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmln
aW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRi
MGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMu
Y3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50
UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAg
aW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rp
b25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYg
KGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5n
dGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdk
YzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0
NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdh
dGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVh
dGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5MTVi
N2IzYjU4MjAyM2ViNTFlYzcuLmJiZWY2NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4ZWFm
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6
Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoMCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXIt
PmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIo
aXBjSGFuZGxlLmRhdGFTaXplKTsKICAgICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRy
KCksIHBhc3RlYm9hcmRUeXBlKTsKICAgICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9h
cmQoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5ld0No
YW5nZUNvdW50KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDll
ODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFh
ZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6
d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0Fy
cmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2Vi
Q29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVi
b2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9y
VHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBt
X3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4Omld
KTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RB
dEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdElu
ZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwg
TlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNp
b24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hp
dmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpw
cm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmlu
ZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2Vk
SW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRh
KCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JU
eXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmll
d0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRy
b3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlz
ZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdl
dCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVS
TF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAg
LTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vz
cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9N
UGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpE
ZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2Vu
ZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdp
bklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3Rl
Ym9hcmREYXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihX
ZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2
NzE2OWQ2OTJhODI0MDkyOC4uNTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwg
Y29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJ
Rm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVy
aW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIyZjU2NWZmMDU0M2Q2MjEzYzYzOGQ4YWMz
NDI5NWFkYWU5OTM1ZjAuLmUwZmU5NDRlZDcxNzMyM2NjNGY0NTNiMDg1MmE4MDgwZTBhNjMzZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9p
ZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtl
Rmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQx
Li5mOTRkZTkzM2ZkMGNkNDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBA
IGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAg
ZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAg
ICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9z
eW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9z
eW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5
ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAg
IGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJv
b2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRp
ZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVt
ZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRl
eCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMy
YjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlv
bkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZm
ZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxi
dW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
MWE4MWNjZTQ0NTVlYjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYS4uMGM2MjVjMzBkMzAzZmJk
OTg0OWI4NGI2ZTdhYWZhMzRjZjdjMzQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4
MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdp
dGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9h
cmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAg
ICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1
c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAg
fQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1Pcmln
aW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBp
ZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAg
ICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAsNyArNzU3MCw3IEBAIC0gKHZvaWQpYWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVt
ZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7
CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
QC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0
IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhw
bGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2Up
KSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdl
KSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtz
ZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBs
ZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ2NzlkN2IwOTgxYWE3ZDNmY2Q5YmRlOTBlZDZmZjJh
YzIzMmVlMTUuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4
LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTg4LDcgKzU4OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlCiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgIGF1dG8gYnVm
ZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUu
ZGF0YVNpemUpOwogICAgIHBhZ2VDbGllbnQoKS5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92ZShi
dWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KaW5kZXggNmQzMzM4NjllNGUwMDEyZDI3ZDNmZTg1ZDg1ZTUzYTRlZDk2OTYwYS4u
YTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcg
QEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQ
YWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNDAsNyArMjQwLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAg
ICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5o
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hh
cmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1v
cnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgcmV0dXJuIHNoYXJl
ZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9
CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTI3NSwxNSArMjc1LDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTCiAgICAgYXV0byBzaGFyZWRNZW1vcnlJbWFnZSA9IFNoYXJlZE1lbW9yeTo6
bWFwKGltYWdlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlJbWFnZSkKICAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlt
YWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1hZ2Ut
PmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwotCiAgICAgaWYgKCFhcmNoaXZl
SGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hp
dmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2
ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlBcmNo
aXZlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGFyY2hpdmVIYW5kbGUuZGF0YVNpemUp
KTsKKyAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUFyY2hpdmUtPmNyZWF0ZVNo
YXJlZEJ1ZmZlcihhcmNoaXZlSGFuZGxlLmRhdGFTaXplKTsKICAgICB9CiAgICAgcGFnZUNsaWVu
dCgpLnNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBXVEZNb3ZlKGltYWdl
QnVmZmVyKSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUo
ZmlsZW5hbWUpLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1vdmUoYXJj
aGl2ZUJ1ZmZlciksIG9yaWdpbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQz
OGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMx
ZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VT
ZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwg
V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwg
Ym9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4
MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxl
Z2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVn
CiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3Jp
dGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5n
ZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAg
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0
aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRp
bmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2Vk
aXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6
Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAq
dHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFw
cGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAgICAg
ICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4
IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5
NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBw
YWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEko
JnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpA
QCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBw
YXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1
dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCks
IGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAg
ICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXgg
MzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4
MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFs
OwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5v
dGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFs
OwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERy
b3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpT
aW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUy
NWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2N2Y2
YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVz
CiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2
b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0
PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBz
dGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0
YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdl
LCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVk
QnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBB
UEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFy
ZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZm
ZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVm
KCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25z
dCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7
CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSks
IHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgp
KSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0
cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRk
OGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRh
NjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAg
IGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRh
KCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0
aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3
ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdhMjliYzJhNjBj
MWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2Uo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVm
ZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4u
ODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApA
QCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nl
c3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25z
ZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2Vw
dGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1f
Y29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRp
ZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWRE
YXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4
NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNm
ODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAg
ICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1
YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikg
ZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBl
MDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkx
ZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyAr
MTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1
bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVu
Y2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIs
IG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEg
PyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBt
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAg
ICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRp
bmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0
ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA1ZDA1YzBlYWI3NmI2MmI0ZjgzNmM4NTgyMjFmZWE0
NDcyZTA1NTZlLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpS
ZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBh
c3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJp
ZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2Vz
cyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBpcGNIYW5kbGU7CkBAIC0xNDUsNyArMTQ1LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYKICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUu
ZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZm
ZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCkBAIC0zMjIsNyArMzI0LDcgQEAgVmVjdG9yPFN0
cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRh
dGE7CkBAIC00MDQsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1
cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBh
c3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJl
cGx5KGlwY0hhbmRsZSksIDApOwpAQCAtNDEyLDcgKzQxNCw5IEBAIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5
QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVt
b3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVt
b3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAog
VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
aW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2ZmMzU1ODA4
ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4
dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5k
ZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3
ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2Uo
KTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5p
bWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5k
YXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAg
ICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1h
Z2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAg
ICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2
ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAg
ICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIu
Z2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5
YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0
cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGlu
ZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1h
aW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNB
c1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA3N2Y4NGRjZTdmYWFhNDkyYWE1NWZlYTAyNWJiNjA2ZTBmZDA2YzVhLi4x
MGI0YWE0NDAyZjhlMTUwYWFkZDZmMmJhNGM0MDdhYjQ1OGZiMDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzczOCw3ICs3NzM4LDcgQEAg
dm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3Qg
VmVjdG9yPFNoYXJlZE1lbW9yeTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBpcGNIYW5k
bGUuZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9s
bFRvSGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdl
KCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hh
cmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hs
aWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgaSsrOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQw
M2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1
NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24o
KS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBT
aGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUx
OGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5
ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIy
OCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3Jl
ZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lU
X1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVl
OwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIz
OSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3Jl
ZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4
dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNp
b25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYz
NTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4
OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEK
ICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVm
ZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3
YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1
ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1
cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRj
ZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgog
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
CiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2
MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5n
IHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEw
OWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3
ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0
eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5j
NTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYz
LDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNv
dXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxl
YXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJl
c2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2
NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNl
MGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0g
KEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQog
ewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAK
LSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0
YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBh
dXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRM
b2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNo
aXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0
NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVj
OTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNy
ZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAg
aWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAg
ICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVy
LT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5T
KFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0
KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0Vt
cHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFi
Mjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lk
KWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJj
ZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRh
ID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0g
bmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwg
KmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAg
ICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNl
LT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAg
ICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFt
ZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBl
S2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJS
ZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0
YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICop
X3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7
CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1
cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRh
ID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXpl
KCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6
IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2Ni
MWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRk
MjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3Bw
CkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlT
dHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVh
bTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlT
dHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJ
bnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJl
YW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUo
YnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJi
YTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjEx
OWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0
cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJs
aWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBj
cmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0
aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9P
dXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgp
OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVf
dCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZl
MWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQs
NyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiog
c3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0
YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0
YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBN
ZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0
cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNj
MmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIz
ZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
PiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5
OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1
MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5h
bDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9u
Q2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0
MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFl
ZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpk
YXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVy
KQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVh
bTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRv
KHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVh
bSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRw
dHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRh
YjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJ
bnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNl
OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAg
ICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFi
MzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2Ug
ZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVz
b3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2Uq
IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmU0ODQ3MTdkNGFiNDM3
YmVlNjg2N2YzMzgwODc0YTdiN2NhZmU3NC4uM2FhN2Q0MmFiN2U0YmQ5YTMzNjhmMzBkNzI4YjY5
ZTU1NzQ3YzM4YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAg
ICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0zMCAgQkogQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgRXh0ZW5zaW9uVGFiQWN0aXZhdGlv
biBkaWFnbm9zdGljIGV2ZW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3
YjIxMmM3Y2E0NjguLjFiNzM2M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZhNDU0YTY3NjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC00MywzOCArNDMsMzggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VS
VF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NF
UlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBz
dHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0
cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0
eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNv
cHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1Qo
YnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBj
b3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNv
cHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVhcigpOwog
ICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MywxMiArODMsMTMgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhp
c3RpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVy
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZm
ZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCks
IFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVD
VF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC0xNTksNyArMTYwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+
Y29weSgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBB
U1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBj
bG9uZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2xvbmUtPnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAg
ICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAtMTc1LDMwICsx
NzYsMzMgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAn
YycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0
b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50
OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwog
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHMzKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0g
ICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7
CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0g
YnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXIt
PmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAg
YXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBn
aDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFi
Y2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAg
Y2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZm
ZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgp
LCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNp
emUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUo
KSwgImFiY2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWpr
bC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6
ZSgpLCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAg
Y2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7
CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCkBAIC0yMTAs
MTUgKzIxNCwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgICAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAgICAgIHJldHVybiBi
dWZmZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2In
LCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdl
dCgpKTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAn
YycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBF
Q1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1h
a2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQo
KSk7CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsg
J2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9
KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0
KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdi
JywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwg
eyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44NzI5MDM0
NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTYy
LDcgKzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdp
dGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445636</attachid>
            <date>2021-12-01 16:57:52 -0800</date>
            <delta_ts>2021-12-02 04:14:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211202115750.patch</filename>
            <type>text/plain</type>
            <size>129366</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM4M2RhNDY0MzA2Y2My
M2RjNTJkMmUyYzZmNGIzNjcxMGFhMTY4YS4uMzJhM2EwNzc2YzgzN2M1ZTkyZjRlYjdiYTA2Njg5
ZDY5ZmViZTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVu
dExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk3YzE1N2NiNWY5
YWRjNWRlNmJhOTM2M2I2MzViYzBkOTQzNzFmYmQuLmE5MDk0MWQ0MzE3ZGJmNjE3NGRiZGI0NmI4
MGQxMjhmZTdmNzliNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMTEtMjggIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojps
aXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVk
ZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZhaWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTI5NDkzMTk4MjhlNGUxNTYzODJiOTM3
YWY5YmMyY2E1ZWJlNDFjYy4uNzhjMzg1NmMxOWVjNGVkOTBjZjhjNGYzYWM1ODQ1N2Y5M2VjZDA2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEy
LTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3Vz
IFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0
YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA2
YjkxM2U0NzAzZjAxM2MxM2NlN2E2MjBiYTA4ZWFjOWM1MzYxMTA4Li44Njc1MGRmZWVmZWM1NTVj
YWY5YTFiYmY4NTEwNjBhNTlhZmYyODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChW
ZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNr
SGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNw
b25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2Vp
dmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9z
aXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJl
c3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNl
LmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hh
bmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVz
cG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yOTgsOSArMjk4LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZl
Y3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSBy
ZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3Jk
UG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVz
cG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKICAgICB9CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAg
ICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9u
c2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODIsOSArMzgyLDkgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNo
dW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CisgICAgICAgICAgICAgICAg
dGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsg
ZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUw
ZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThhYTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApA
QCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9i
dWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2lu
aykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAg
ICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAg
ICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1v
dmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwg
Y29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAg
ICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9z
b3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBw
ZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1f
YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1
ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIHJl
dHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Js
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBS
ZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6
Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVu
dFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRh
KCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2Nv
bnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRh
a2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0
ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXIt
PnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9i
dWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNv
dXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291
cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3Nv
dXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAg
IG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBt
X3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkp
OwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2Vw
dGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2
NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUw
LDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZm
ZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
IHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNl
dERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0
YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZl
cigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAg
U3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQ
cm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291
cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGJlZjRkMmQ3YWM3ZWVjZDkxN2MxZjY0M2E1Mjdl
NWQ2Nzc2MjQ4NGIuLjAyOGE5MTk4NTgxN2ZkMzY5ZTcwZjRjYWFiOTRlMWExNGY1ZDBjMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJs
OwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3Vy
Y2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDgg
KzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsx
OTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3Vy
Y2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5k
bGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBt
X21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdl
dCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlk
YXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRl
eCAzNjM5M2EzYjZmOTI3ZmYwNGZiYzI1ZWQ1N2FkZGFmYzM5MjllYWYzLi45YzQ3MjZmMjY0MmRm
MDFkMzNhYmNkZjRlMzFlYzgyZjRjOWE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEyOSw3ICsx
MjksNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBS
ZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFk
eVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBi
YTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVmNGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0
YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEw
MDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNl
RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAg
ICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisg
ICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQog
ewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAg
ICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIt
PnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRh
QnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgx
LDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4g
bV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZm
ZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRh
dGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29k
ZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNp
emVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIg
PSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAg
ICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
ZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
YmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3Ro
KTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRh
KCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0K
ICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4
IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2Vl
NGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYg
KzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3Bv
bnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRp
bWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wg
aGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAg
IGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFC
dWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFU
b0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBt
X3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0
ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0
ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOTA2ZDY0
ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0ZjU2MC4uNWViMDY1MzYwYjEwZGY4MWI1NmJl
Njk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5U
SUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZy
YW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1l
IHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3Rp
dmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlv
bnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVy
c0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRp
b25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBt
X3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAg
ICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcg
KzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0
YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxy
ZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9
IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0
ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXls
b2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZl
cikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxl
bmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2Fk
VHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRh
LT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFw
cGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgp
LmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7
Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIo
KTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0
ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4Njdk
NDc4M2VjYWExMzZiNTc4MzkyYzI4MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihS
ZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwg
cHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0g
ICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNl
RGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29u
c3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0
ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0
IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5
ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQot
ICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAq
bV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNs
ZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jl
c3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVz
cG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2
YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1f
YXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRi
ZWMzNTI0M2VkZGZjY2FjMGZlNzkuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2Qx
ZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVz
b3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkg
VkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJj
ZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2Us
IHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50
LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ug
c3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAg
ICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFs
bHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNF
bXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291
cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NjFhOTlhZTU3NmEyYjkw
OGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmLi45MGQxYzZhMmJhOGM0YTQyZTFmZWJkODAxZTUyODc4
MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVmZmI2OTdjMzdjNzg1
NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0ZDFkNTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlv
bmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBw
cml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
Y29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKaW5kZXggNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcyNzI3NjdlNTNmYTJmOGM1
MC4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAt
OTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNo
ZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1Nzli
OGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2MGNjYWU0NjlmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCBmNjQzMzNmMDQzMzZiMzZj
NjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjLi5mOWFkNzcxM2M2MDNhNmEwYTU2YmNhMjc5Y2U4MjUw
NjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGll
bnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYg
KGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDBiN2VkOWJmMWM2MDk5ZjU3
NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQuLjE1NGRiOGNiYWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNm
ZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAt
NzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA3MmMxOWY2NTdiZDQ3N2Mx
M2E5OGQwMWRiODBlZmMwNTcwYWRjODllLi43YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1
ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFn
ZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUo
bV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDcgKzUyMyw3IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNo
b3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRl
SW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJl
ZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNo
ZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkg
Y29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTU1
LDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURh
dGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2OSw3ICs1NjksNyBA
QCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgp
OwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
ZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1
Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdl
ICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxh
dGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRp
dmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVu
dW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEp
IGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVw
ZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShi
b29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0
Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0g
ICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVw
ZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRS
ZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggODczMWViODJj
YjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYy4uODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVk
NjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7
CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVk
IGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZmZXIgaW4g
ZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkKQEAgLTk2
LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURh
dGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYg
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJl
IHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUg
ZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5OTUzYWU2YmZmNjU1
NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNiYWM0NTE0ZjM2Zjc1ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQo
KSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJl
Y3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0
cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4gbV9kZWxheWVkRmlu
aXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcAppbmRleCBhMTA1ZTJiNGM3ZDc1NGUxOWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2
Li4xNzJjZDFhZmEzZjRlOTBhYzE3OGVkYWYwNzU3MjVlY2UzZDk5ZmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTMzNCw3ICszMzQs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQoKnRoaXMsIG1l
dHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNr
Tm90aWZ5KG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3Li4y
MThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkgKzExMiw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQog
ICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1
cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBkZTU3ZjQwNDAzNzI0YzUzNmJhOTdiMmI2
YTA2MmVjYWY2NzQ2MTllLi5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFjYTgyMjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAK
LXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3Vt
ZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVu
dCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5MWFjOGIz
NGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMzNjNiMGNiZTEzMDM0
NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3Vt
ZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4
IGVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEuLmI4N2EzZGIwNmYwMTE0
N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2lnbmVkIENhY2hlZFNj
cmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAotdm9pZCBD
YWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmlu
ZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjc1YmU0ZGI3MTU3
OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcAppbmRleCBhYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJh
MzJhLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsNyAr
NDAsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0
VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAg
ICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0K
IAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1Vw
ZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi5mNDYz
MTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQg
ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjEx
ZmQzMC4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApA
QCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lk
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJm
N2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEyNTRlMmQ3
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7
CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQdHI8VGV4
dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJl
NjU4M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdh
Y3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0Nv
bnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRy
PFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExv
YWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5
N2VmMmE1NzM0Li41MmZmZDUzN2JmZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1NzA2MmQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFs
RGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJj
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1f
Y29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9u
c2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZv
aWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRl
cjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAg
TGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0
ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBt
X2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1l
KCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsg
bG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRl
ci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlj
a0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4
Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1f
cHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpy
ZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50
LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFt
X3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEu
Z2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0
aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTlj
ZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5
NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
c3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRD
b252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRh
OworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAg
IFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29y
aWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNWUyNWFlM2U0ODEx
NmFmNDg0MzljM2ZmMjM4ZWViZDQwNWU1YWM4Zi4uYmJlMzkyM2EyMDdhMGU5MzYxMTczMDc0Zjk3
NjA3ZmFkMDU4N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0xOTIsNyArMTkyLDYgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwog
ICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5t
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5t
X3NlZ21lbnRzKSB7CiAgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXpl
LCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwpAQCAtMjAzLDcgKzIwMiw2IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7
Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7
CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CkBAIC0y
MTMsNyArMjExLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8g
ZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0
YVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDU5ZjBjYTJj
NDZjMDMyMjA4YjY3ODgzMWMyNDYxY2YxY2IwMmMwZGYuLmRhM2QyMmYyMDNkY2JjNTVjYzc2Njgz
NDVkZGUwYjJlYmMyZTI3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtMTgxLDE5ICsxODEsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotI2lmIFVTRShGT1VOREFUSU9OKQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgotI2lmIFVTRShD
RikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwotI2VuZGlmCi0K
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGVuZ3RoKSBjb25zdDsKQEAgLTI0OCw3ICsyMzUsMjEgQEAgcHJvdGVjdGVkOgogI2Vu
ZGlmCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0Uo
Q0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOworCiBwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2Vn
bWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmlu
ZyB0aGUgU2hhcmVkQnVmZmVyLgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0
YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRG
b3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CkBAIC0zMDYsNiArMzA3LDcxIEBA
IHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
CiB9OwogCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0Owor
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJl
bmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpi
dWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8g
dGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIg
c2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlm
IChidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQo
V1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAg
OiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBw
ZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAg
ICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgp
OyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5
KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVy
ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAg
IHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigp
CisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IuLjJh
ZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtl
eUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgog
ICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7Cisg
ICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3VzSW5pdERh
dGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBjb250aWd1
b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5
SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtl
eUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0
YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsK
KyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogCiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5
SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xl
YXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2
YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRj
MTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAog
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJl
dGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5k
ZXggZGY2MmIzZDczNjNlZWU2OWVlZTI3MjJhNGNkMDZhMmRhNDlhNjBlOC4uYjZlMjM3YjVkZjVk
ZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07
CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
Ojpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkp
OwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZv
aWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
QVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVx
dWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5ZWRk
NzkzM2YzN2M0NTFmMzJjNTAuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0NWQw
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgs
OCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25f
ZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBtX3Bh
eWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1
bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1
aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5
cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAi
Y2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1f
cGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAg
ICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAg
ICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFr
ZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7
CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXls
b2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAg
ICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGlu
aXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3Qg
dmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGlu
aXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRh
LnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQo
KSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBj
b25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXls
b2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5
bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTkwLDcgKzkzLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07
CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NC4u
YTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NN
YXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0
KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2Vy
X3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXIt
Pm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtlcihtYXJrZXIpKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZgog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6
ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXIt
PmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBp
Y2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSks
IG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5t
YWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBh
NTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZlNjNl
ZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdD
b252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdD
b252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAg
IDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9wcmV2
aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlk
ZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252
ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjEx
Zjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUy
MzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRh
TG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsK
IAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNm
NS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3
LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAv
LyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0
YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhv
dXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVy
RGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUs
MTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEo
KQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9j
ayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+
YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0
YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEg
PSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50
YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNm
MmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAg
ICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5h
bFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2Up
CiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0
YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBz
dHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0
Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNl
U3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBT
ZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VT
dGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxS
ZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRh
c2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxS
ZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJv
b2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+
IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJl
cXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRM
ZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVz
dCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vz
bid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50
aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhl
IGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdl
dCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAg
aWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVz
VG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFr
UHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAg
ICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIs
IGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3Ig
PSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAg
IGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4Owog
ICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZm
ZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5z
aXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRM
ZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgp
OworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVy
ZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7
CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNl
VG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3
NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAK
IFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBT
Y3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZl
ciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVy
Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAg
IH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAg
U3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZl
cjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2lu
KCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZm
ZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+
YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNj
cmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9i
dWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBh
dXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRh
KCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRm
OC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmQxYTc3YjU4
YjY0NGE5MGI5MDRlZmRjMWZlYmM2YzA2NzQ0ZjkyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxT
aGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRC
dWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVy
ID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0K
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVy
LT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5p
c0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxl
TWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlu
cyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4
IGE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcuLmU1ZjM0OWI0ODI3NDZm
OWVkYjljNWY2MzFiZmFkNGI0MTk5OGJhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3Qo
VVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2Up
CiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3Vy
Y2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc4LDE1ICs3OSwxNSBAQCB2b2lkIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFs
U2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgaWYgKG1fZGF0
YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3Vv
dXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAgICBtX2RhdGEg
PSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewotICAg
ICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50
b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNE
YXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNE
YXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGln
dW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7
CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCku
dG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkK
KyAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0xMjEsOSArMTIyLDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmICht
X2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAg
ICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2
ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5YmI1MTAyNmY1ODNhMDliMTg0N2E3MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAt
MzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9v
bCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJy
b3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlz
TnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
TG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9u
dExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsK
IAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0
Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVz
dDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAs
IG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAg
LCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0
aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIw
OCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAog
ICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nl
c3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAg
ICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxw
dHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlz
TnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+
ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6
bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVz
KSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJl
IGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4
ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VU
eXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0g
ICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShu
dWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAg
YXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5
QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
NzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJz
KCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1
bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApA
QCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAg
ICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0
YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4
OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJk
NmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5o
IgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4
dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFy
Y2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1
bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNl
QnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGI3Nzg5MzJmMjgxYjcxMmUwMGZmN2FmMjY2YWEz
OWJkZDIwMWMzMmQuLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQK
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBs
eSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9j
b25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGNv
bm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRl
bnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3Jl
ZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9z
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElE
IHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAtMzA2
LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xv
YWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNh
bmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3Bh
cmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQogCiAg
ICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03
MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlmICht
X2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAm
JiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVU
eXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsK
ICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3Ry
YXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11
bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxs
ZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFu
ZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFy
dCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRh
dGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAgKzg2
OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Cisg
ICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQ
cmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQg
c2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3
ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBl
bmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZl
cmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAg
IG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3Rh
cnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAg
ICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRh
LCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2Vu
ZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZm
ZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2Ugewot
ICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEg
c2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0x
KTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwog
ICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRG
aW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwx
NSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdU
aW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1Rp
bWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFt
X2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAog
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9i
dWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZl
cmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0g
ICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVy
ZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAw
OwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0
b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3Qg
aXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlz
TnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEy
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAg
ICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2Fj
aGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAg
c2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1
ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFG
b3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1f
bmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSks
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5
OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBw
ZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJy
ZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCks
IFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNp
ZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0NWMyZmJh
Nzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjI1
LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAw
IH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRh
OwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAs
NyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGlt
ZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlx
dWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNo
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5n
Q29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAz
MTA1NDY4MzUzNmVhMGRjODE5My4uZmU3NTljZWRhMmQ3YmQyZWFlODc4OTk3ODNlZmYzMzk5MmE3
M2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyArNDYs
NiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0
IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAs
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBt
X29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2Fj
aGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2Vp
dmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAg
ICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3Vj
Y2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAg
Ly8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAg
ICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAy
NDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogICAgIH0KIH0KIApAQCAtMTM4LDExICsxMzcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9jYWNo
ZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAg
IGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmlzTnVsbCgpKSB7
CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0
LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBw
ZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkg
aWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVz
Q29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAg
ICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAg
ICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVz
dCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAog
ICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBj
MGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMw
MmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6
OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IGY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLjU4NTQ3ZDg0ODgxZGM4
MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6
OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVBy
b3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAg
ICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMu
ZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBt
X2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9z
eW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIp
OworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBA
IGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAg
ICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6
ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6
ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tE
aWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxv
YWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEz
MDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5j
TG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5
MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2
MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmll
dyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4s
IGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAg
LCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3Rz
VGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMp
OwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFt
X2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0g
TWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1f
bWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQo
Ynl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0
cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVh
bFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxw
dHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFj
aFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikg
ewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUg
PT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFu
dWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFs
U3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFt
RGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0Miwx
MCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAg
ICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsK
IAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkg
ewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRh
KQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRv
IGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlk
UmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6
ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
MjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZm
YTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91
bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAv
LyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUg
cGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYy
OGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAg
ICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAg
bV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3Qm
KSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwot
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7
CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2
N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wg
bV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxz
ZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+
LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAg
IGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVm
ZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3
IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUg
fQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwg
bV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5
LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAg
ICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0g
ICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZv
aWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNs
ZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRl
ckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFlMDUw
YTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpA
QCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwog
ICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApp
bmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJh
MTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAog
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBC
U1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkK
IHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAg
ICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpA
QCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8g
SVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAg
IC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8g
cmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0
IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRh
LT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5z
aXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
TmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBt
aW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDNhYTdkNDJhYjdlNGJkOWEzMzY4ZjMwZDcyOGI2OWU1NTc0N2MzOGIuLjBhYjQ1MGE0ZDQ3
ZmU1ODZiM2IzMzgzOWI2MDEyYzJiN2UzMjFjMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDFi
NzM2M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZhNDU0YTY3NjcuLjIyMGEzODAwNzgyMzFhNWRi
NTM0ZTc0MzBkY2Q4ZTc3Y2QwZjA3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CkBAIC00OSw3ICs0OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZk1pc3NpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
OwogICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9
PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CkBAIC03MiwyNCArNzIsMTYgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJD
cmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNp
emUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VS
VF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgYnVm
ZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAo
c3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9U
UlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkp
OwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZm
ZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
ci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsK
KyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIpCkBAIC05NywxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0
ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIg
dGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERh
dGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7
CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxs
b1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRp
b24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVj
dGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMiwxMCArMTA0LDEwIEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0
b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIg
PSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwor
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4
NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUyLDE3ICsxNDQs
NTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNz
aW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVu
YXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEg
QWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwg
bGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVp
bGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0
IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBj
b3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwot
ICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEo
MCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUt
PnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQ
RUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1j
bXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWls
ZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUs
IGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7Cisg
ICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVy
IGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIy
LmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQorewor
ICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgp
KTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBi
dWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRy
KCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAg
IEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVu
dCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIy
LmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3RE
YXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0K
IAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE4MCwxOSArMjA4LDIxIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWludDhf
dD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7
Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwog
ICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBn
aDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBh
dXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0g
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRh
KDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVm
ZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihn
aDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMSw2ICsyMzEsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgp
LCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVy
LT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBn
aDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wu
c2l6ZSgpLCAiZ2hpamtsIik7CiAgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkp
OwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFy
UHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAgLTIw
OSwxNiArMjQwLDE4IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVy
ID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQot
ICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJl
dHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQp
KTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBidWZm
ZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNU
X0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5k
KFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShi
dWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywg
J2MnLCAnZCd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZN
b3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScs
ICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQo
KSk7CisKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwg
eyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9
IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2InLCAnYycgfSB9KS5nZXQoKSk7CkBAIC0yMjgsMTEgKzI2MSwxMyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3Ry
aW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVu
ZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFr
ZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQ
RUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWls
ZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VR
KGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNTMsMTYgKzI4OCwxNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2so
YnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1
aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVp
bGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcyOTAzNDVi
NDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNk
MzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3IEBAIHN0
YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0
ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNE
YXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29u
c3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9E
YXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRl
czoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENG
RGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVs
bG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwor
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwg
YnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSho
ZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlk
Z2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAt
NjksMzIgKzcwLDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJh
eSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkK
IHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAK
ICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxv
IiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0Rh
dGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29u
c3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBO
U0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7
CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERh
dGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3Ro
ICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9
IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAg
Zm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVj
dGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0
YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0g
MDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6
ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVm
ZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUo
KSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxk
ZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERh
dGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRh
bERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEu
Y291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBi
dWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1Rf
RVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445705</attachid>
            <date>2021-12-02 04:14:41 -0800</date>
            <delta_ts>2021-12-02 04:28:57 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211202231438.patch</filename>
            <type>text/plain</type>
            <size>506905</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyYmViMDM3Y2Q2MTZm
NDU4NTVhNzFmNmE3OTBlOTFjZGNlNDk4NC4uODA1MTAyZjYxYzVlYWQ0OTMwZjhhMmI4NDIyYjg2
OWFkYTEyYThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVu
dExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBj
YWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0
ZW5lZCwKKyAgICAgICAgYW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVk
LiBUaGlzIHdhcyBhbiB1bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdl
IGludHJvZHVjZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0
cyBjb250ZW50IGlzIG1hZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBB
bGwgbWV0aG9kcyB0aGF0IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJl
aW5nIGZsYXR0ZW5lZCBhcmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZl
ci4KKworICAgICAgICBBcmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRl
ZCB3aXRoIGEgc2luZ2xlIHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIg
d291bGQgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAg
ICBhbmQgb25seSB3aGVuIHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93
aW5nIHRoaXMgY2hhbmdlCisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkg
ZG9uZSB0aHJvdWdoIGEgY2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252
ZXJzaW9uIGlzIGEgbm8tb3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2Fz
IGFscmVhZHkKKyAgICAgICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRo
IHRoZSBuYXR1cmUgb2YgYSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5
IG11bHRpcGxlCisgICAgICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51
bWJlciBvZiBjb252ZXJzaW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRv
IGF2b2lkIHJlZHVuZGFuY3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2
ZSBvY2N1cmVkLCB0aGUgU2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAg
IHRyYWNlZCBiYWNrIGFuZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3Vz
IHRoZW4uCisgICAgICAgIEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIg
ZmxhdHRlbmluZyBvcGVyYXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVu
IGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFz
ZSBvZiB0ZW1wb3JhcnkgbWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyIGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAg
ICAgIFdoaWxlIHRoZSBjaGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBt
b2RpZmllZCBhcmVhcyBpcyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVk
IHJlZ3Jlc3Npb25zIHVubGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVk
QnVmZmVyIHdpbGwgYmUgbWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4
aXN0aW5nIHRlc3RzLiBOZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0
aFJlc3BvbnNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNv
bGF0ZWRSZXNwb25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNv
cHlSZXNwb25zZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJD
b3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
Ym9keUFzRm9ybURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc1RleHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1l
RGF0YUJ5Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURh
dGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBw
SGlnaGxpZ2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRS
YW5nZURhdGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5n
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hl
Y2tlZFB1dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmVi
aW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9k
ZWxMb2FkZXJVU0QubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6
OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRh
Y2htZW50SW5mbyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1
dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5S
VEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1M
Q29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBw
ZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZE
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICog
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRU
ZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRl
Y29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZp
bHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3Vy
Y2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVm
bGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Z01hbmlmZXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFj
a1N5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxl
U2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25z
dCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
VkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVC
YWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAg
ICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpz
ZXJpYWxpemVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRk
SW1hZ2VUb1Jlc291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAg
ICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
RW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3Vv
dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0No
YXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2Rl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQ
dHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0
ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFRJRkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZl
ckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckdsaWI6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6
CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdP
RkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6Oklt
YWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5
dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VE
ZWNvZGVyQ0cpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1
c2hFbmNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBo
QXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2Vt
Ymx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50
czo6bWF0aEdseXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNQVRIVGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6VGFibGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpU
YWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0
aXR1dGlvblN1YlRhYmxlOjpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TG9va3VwVGFibGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVy
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1
bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0
OjpzY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6
OmRlZmF1bHRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlw
dExpc3Q6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpHU1VCVGFibGU6OnNjcmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OkdTVUJUYWJsZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6R1NVQlRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBF
R0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFu
ZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNv
dXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRs
ZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9E
b3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUds
b2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERy
b3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6Cisg
ICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTEyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2aWdhdGlvblByZWxv
YWRNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkYWUzNDBmNTI4NDhhYjkzODZiZWE3NDJlYTJkMjU0N2I1
NzlmZjkuLjMzZTE4ZjNiZGVmZDk3ZDQ5NzQxNWIwNmVkYmNiYjM1ZDVlNGIwMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTc4IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAg
ICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1
Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWls
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggODZlNWQ5OTU4YzY1MmE1YWYzZjc4NWMwNWI1NTA0MjNh
YmZlMTBhMy4uOGMzODMyZTRjZDBhYjNlNTMxYTYwNzJhNWJmNzExODJjMDhkNGY4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3Vt
ZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06
CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
V2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVd
KToKKwogMjAyMS0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZ3Jlc3Npb24ocjI4MzkxMikgQnJva2UgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3Ig
U3dpZnQgYmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2Ew
MTBjZGQ4NzBmMGE1YzY3ZDIxMzk2OTY2YmI2MGFjLi43OGMzODU2YzE5ZWM0ZWQ5MGNmOGM0ZjNh
YzU4NDU3ZjkzZWNkMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzcgQEAKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5
MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3Bw
OgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5
U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAg
ICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJl
c291cmNlLmg6CisKIDIwMjEtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBVc2UgT2JqZWN0SWRlbnRpZmllciBmb3IgQVhJRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBk
MDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3
OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXpl
RGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAg
ICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6Omdl
dDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNl
ODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0Ns
aXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJ
SW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3Vs
dCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXgg
YjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkw
ODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBl
ID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAg
ICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNv
bnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24g
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1h
Z2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJl
c2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7
IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5Nzlm
YjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAg
dWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3Qg
UmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXpl
KGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0
Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lk
IERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJl
Y29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQo
cmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9u
c2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNr
SGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
cmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRs
ZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRC
dWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAgdm9p
ZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5h
ZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsK
KyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQ
b3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCku
ZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJl
cXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAg
ICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFz
ZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAg
ICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQot
ICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5n
ZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9y
PHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICszNzUs
NyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNw
b25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlS
ZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNl
LmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBy
ZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVk
QnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0
aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4
Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8
RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAg
ICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApp
bmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNl
ZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0
aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNl
RGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVm
PEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApp
bmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJk
YWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3Bv
bnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYg
Zm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNv
bGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
LT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0s
IFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1No
YXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAg
fSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICBy
ZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIs
NyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VC
b2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
Zm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBi
dWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkg
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmlu
ZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThh
M2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNv
bnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBS
ZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkm
KTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5
YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcy
MTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tl
eWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVk
LW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBp
ZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hT
dHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
ICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAg
IENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3
OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0Y2go
Y29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0byBs
ZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRh
KCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlhS2V5
U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsxMDMs
NyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBidWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+
c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJz
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAgIHJl
dHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0
dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXgg
MmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4MDc0
YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25l
ciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJl
ZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9j
b25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5
cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29u
dGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9h
ZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRy
PEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNG
b3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0
YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAg
ICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBG
ZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURh
dGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpA
QCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtl
KCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2Rl
KHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2Rl
KHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlz
VVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShV
VEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFt
c0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAg
ICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBh
cnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZl
ckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlm
IChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZm
ZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNiNzcx
YjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2Nl
ODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2lu
ZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAog
ICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBX
VEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3
OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBt
X2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9z
aW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYs
MTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAg
ICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1No
YXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9T
aGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRh
ID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RG
TW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAg
YXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBh
Y2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAo
YXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJ
bnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVy
KSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXpl
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1fYnVm
ZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewotICAg
IHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkK
QEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZl
ciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZl
ci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpA
QCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9
IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQs
IFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEo
Y29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsK
IH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICsz
NjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICgh
bV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBt
X2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9z
b3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAg
ICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhj
ZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2
MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAt
NTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1
ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQg
c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVm
ZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAg
ICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJl
ZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9T
aGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9z
b3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0Mzky
YTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0
YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsg
eyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3Vt
ZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAg
ICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0g
ICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlz
XShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYg
KGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAg
ICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNm
NmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2YWVi
NTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRh
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAg
IFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9u
c2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3
ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2
YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxp
Z2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hs
aWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAK
ICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFl
NDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0
YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBA
QCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgz
MjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJh
bmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRv
IGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25h
bDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAg
IHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1
ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEy
ZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3Ry
aW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRo
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rl
cjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVL
ZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0
YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1
aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3
YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURh
dGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAw
YWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2Zj
NTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRF
eGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FM
aXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9u
LmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsx
MTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEg
bm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBu
ZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJB
dHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2Fj
dGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9i
ID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRo
QmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5
UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGlu
ZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsK
KyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAt
MTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hl
Y2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJ
bmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
IC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4
S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7Cisg
ICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwog
ICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
aW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEs
NyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5P
YmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlv
biB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3Rz
dG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0x
NzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJl
Y29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5z
YWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVT
RURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVt
b3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBm
cm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkg
dHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3Jl
ZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9i
amVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNO
dWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAg
ICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICgh
bG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAg
ICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVw
cGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9z
IH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAg
QVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6
Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxv
b2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRl
eCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93
ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
bG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAg
ICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURC
S2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBh
dXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYg
KCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
dXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApp
bmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNh
MTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApA
QCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1
dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAg
aWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIp
ICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vy
c29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
MTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5k
ZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYg
KG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1
ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQg
aWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdi
OTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRi
YjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1Nl
bmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3Nh
Z2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YSht
X3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCks
IG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRh
KG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5k
aW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2Ux
MTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0
YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMp
IHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRh
KSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZd
KFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRh
KHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUw
Li42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3Vy
Y2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUg
PSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9p
ZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7
CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9y
ZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAog
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9p
ZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWls
ZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9k
YXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
CiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2Rl
bDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlw
ZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRh
LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVz
b3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVu
ZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2MzQ5
YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBt
X3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
bV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVu
aXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29t
cGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVT
RC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAz
ZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVr
aXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2Rl
bFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lz
dGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQg
PSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkp
OwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5
NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBz
dGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0
YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRl
RE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAg
IH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1
Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFl
YTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYm
ICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAg
ICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNp
emUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAg
ICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNo
ZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7
CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3Ry
aW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1
b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAg
IG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZl
cjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxl
IFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQu
LjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAg
ICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4o
Km1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlm
IChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAg
ICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVy
YXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90
ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3Ry
aW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBl
bHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVk
aWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsK
LSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1l
ZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9
IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCks
IHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJi
MjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEw
ODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NT
Rm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0
Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdG
b250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5n
czxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAg
ICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3Rl
IGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250
TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBw
b2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmll
dz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgy
MDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNo
bWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlw
ZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAg
ICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVm
OThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZl
UmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFu
ZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsK
K2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFz
cyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyAr
NTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQo
Tm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3Rh
bmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50
SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91
dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8
U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZh
dGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5n
ZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Vs
ZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rp
b25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVz
ZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
KTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNl
bmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIz
NTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5
MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBp
ZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5
MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVk
aXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZClj
dEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JB
dHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAg
aWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZl
ZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGlu
ZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRy
aWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwog
fQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcs
NyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9y
OjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdl
U2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBA
IHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVt
ZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChh
dXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAg
ICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAg
ICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwor
ICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdy
aXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRh
LnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVj
dGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJh
d0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsK
IH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRy
YW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1
c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlz
aWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmlu
ZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVz
OkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJp
bmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRl
czpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQog
ewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5
NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJk
ZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6
X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJP
T0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1
cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9o
dG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3Vn
Z2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERv
Y3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAg
ICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+
c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNw
b25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8
ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBl
KCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVy
PiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7
CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1
dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1
NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMx
NzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsK
ICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0g
ICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50Owog
ICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVu
dHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0
dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
LmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBl
KCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwog
ICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9i
amVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50
RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5h
bWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
LmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0K
IAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00
NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0
cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dN
SU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1
cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkp
LCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgp
IH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBt
YXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAt
NDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShG
cmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hv
dWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJp
bmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFt
ZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUg
c3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3Vi
ZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlv
bkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5T
aG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJj
ZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRk
UmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdz
KCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAg
ICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcg
QEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7
CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2
Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2
LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlv
blBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVs
ZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhp
cyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0
aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5
IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9y
dCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEu
LjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAg
dm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNv
bnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNz
RmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3Rv
cnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVz
dWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdz
JiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAg
TE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBz
dGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIq
IHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1l
bnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVh
ZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBj
b3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERv
Y3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVy
IHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJk
NGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0
ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8v
IDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1f
cmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBt
X2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQog
CkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNT
RVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUo
KTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVy
LT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4
MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmlj
dENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRh
QnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0g
ICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5n
dGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxl
bmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAK
IHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFU
b0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBk
YXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2Rh
dGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0
aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jh
c2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1f
Y29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0g
ICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZl
ciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRh
TGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcu
LmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VU
aW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQog
Ci0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVm
ZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFz
RGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAg
ICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2ln
bmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVU
eXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5m
bz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJl
c291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZi
YzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1
NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAg
IGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIo
cmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1l
KCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpy
ZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0g
dHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0
cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3
ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAw
M2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9v
bCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsK
KyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5l
bmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0
YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhC
YXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRh
Q29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRj
MGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVh
MjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0
YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNl
QnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0
NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJl
c291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZs
aWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZl
cnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRl
ci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
cHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNk
ODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5Mjgw
NmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1h
eWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZl
KTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFp
blJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNo
aXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEg
PSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0
TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUt
PmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJj
aGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVy
biB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBh
cnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2Vk
QXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxv
YWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsK
LSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUo
KSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXgg
ZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3
MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsK
QEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRB
bGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJj
aGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVE
YXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2No
ZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxB
cmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNo
aXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNo
aXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50
S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3
YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcu
bWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
LnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFh
MzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5
ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAg
LTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNl
bGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQog
ICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmlu
YWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVz
Rm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lk
IGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0
KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2
MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3
NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVl
c3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0p
OwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9m
cmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6
Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5
KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDks
NyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1
ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1Jl
cXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAg
ICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAg
ICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxv
YWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChp
c1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9h
ZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYw
OTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2Fj
aGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwog
Y2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdy
YXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03
Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3Mg
Q2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlv
bihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJl
clBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3
RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsg
fSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9
IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6
Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEwZGY4
MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9h
ZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBt
X2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIo
KS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7
IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxv
d0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwg
bV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAK
LSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0
KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAt
MzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBh
bnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNl
RGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2
b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAt
MzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRp
b25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZm
ZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYg
KGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURh
dGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5h
cHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxv
YWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEt
PmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0
YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+
Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVz
b3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29y
a2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxk
IGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMu
c2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYm
IG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURh
dGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwor
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5n
dGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRl
ZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBA
IC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBM
ZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVm
Q291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7
CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNv
dXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEo
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpA
QCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJl
ZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNi
OWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIy
ZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0
YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3
MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZm
ZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVm
ZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9
KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsg
bV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRh
LmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEu
Y29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
CkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4Nzhh
ZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFm
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5p
ZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2Yg
IkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1h
bmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBw
bGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFy
dCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgz
NzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFh
MjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVS
TCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgp
CiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGll
bnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVy
IHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3Vy
Y2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
Citib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExv
YWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3
OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRh
KQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGly
ZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNh
cHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQs
CiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUg
dXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBj
YWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3
MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEw
NCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNr
Rm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNh
OWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNl
KCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGln
dW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1
bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1
MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0Mzdm
NDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQz
MGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2ln
bmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/
KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlz
RW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAg
ICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVt
ZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0
ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQo
KSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQo
KSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAK
ICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3Jp
dGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRo
ZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQK
ICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
IHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAK
ICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBp
bnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAg
ICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2Io
NikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29s
dW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBk
ZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2RmOGQ5
ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0
eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVtcHR5
LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBhdXRv
JiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHBy
b3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5j
cmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVSTCBj
YW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50
YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBmb3Ig
dGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIGlm
IChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50
YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25z
ZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShD
RkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRh
LCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VSZXNw
b25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9uS2V5
KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJRChy
ZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAg
ICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNl
IHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCBy
ZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVByb3Bl
cnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
KTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAg
IGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBD
RkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
UHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxp
c3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5E
RUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAg
ICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwg
TGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNl
RGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFp
biByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAg
LTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBz
dWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAg
ICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
ICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qo
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZy
YW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1
YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3
IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
SW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1h
cmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9u
c2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25z
ZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAg
ICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJh
bWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICBy
ZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1
bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhl
ciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3du
KS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9c
IiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVp
Z2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYx
YjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjczMzZiMzdkZTNiZGRkYTZm
YTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5ICsxOTMsMTAgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAg
IGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBi
YXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBh
dXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCks
IGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAg
ICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhl
YWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhl
YWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVj
b2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1
b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0Ogog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50
LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVu
dEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8g
Y29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUg
cmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVj
cyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNl
ZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4
IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjkwZDFjNmEyYmE4YzRh
NDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEy
ICs0MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAg
ICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3
OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2
NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nl
c3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1l
bnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAg
ICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
ZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJm
NzRjYzZhMGJjZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0
NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQs
CiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNo
ZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2Ug
cXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9p
ZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJz
ZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0g
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgp
IDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBh
bmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBp
ZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQg
b3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNo
ZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAg
ICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAg
ICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVk
ZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1
ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3
NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBD
YWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQu
LmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lk
IENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQog
ICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVk
KCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRG
b250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0
YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyAr
OTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9
CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYm
ICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9v
bCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBi
eXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVD
dXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVy
IHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBp
bmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBi
dWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxl
Y3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9h
ZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVu
dFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAo
Q2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50
LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjE1NGRi
OGNiYWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0
ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9t
U3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
LCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1E
YXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRl
eHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2
YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03
NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBz
ZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUw
MTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVm
YjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdl
KCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRh
IHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBp
ZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0
UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2Ny
aXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2Fu
Y2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlw
dCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAg
RW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVw
ZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQg
Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBp
ZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmlu
ZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLmQ1MTNlMTZjYmE1
YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlt
YWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+
aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9
CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7
CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJV
cGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBF
bmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
IG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2Vk
SW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50
ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25z
dCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRl
bnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdm
MTgzOTU2MmYuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRh
LT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAv
LyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4g
V2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYg
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXpl
KCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYs
NyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0
YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAo
bV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUg
c3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBl
bmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVm
ZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRh
QnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAg
ICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6
ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAg
ICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBu
b3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNy
ZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5k
ZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAw
ZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAg
dm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0g
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdu
b3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywg
MD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29u
c3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5
ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1
Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmNmNGYwMmM1ZDc0MzRjYjY1Y2IzZDAzMzhh
YzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNo
ZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xp
ZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAg
LTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MTMsNyAr
OTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5
UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5l
d0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI3LDgg
KzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChu
ZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxh
Y2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEz
ZTZjMDM1YmMyNzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIs
OSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0
UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
OworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRS
ZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIq
IHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRl
c1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsg
fQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8v
IE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9s
b2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGlt
ZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGlu
IHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgz
OS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Miwx
MiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
dG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRv
IHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50
OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAg
IG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmco
ZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2Yx
NDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3
ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsK
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5Mzkz
M2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlm
ZThlOThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNj
cmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2Nv
cGU7CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAg
ICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAg
ICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29u
dmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAg
IG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVk
Rm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRy
OwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2Iw
NjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkz
M2I0ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBt
YXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZl
cnRlZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVk
Rm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAg
ICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJl
Zjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTli
ZTQxOGYxN2I2NS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEw
ICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVy
biBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUz
NDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMy
YzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBj
b25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXgg
MTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uNTQyNjZkZDkwODE5YzM0
ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0
VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQ
QUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMg
QEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0
aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3
YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUs
MTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWRE
YXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOwor
ICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0Njdh
Mjc4MjYxNWQzNDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNo
ZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwot
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0
YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXpl
KCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
PmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRm
NjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBi
OWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0Owog
ICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1
MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdh
MDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hh
cmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFj
a2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2
b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJl
c291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJl
YTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlk
ZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBh
IHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3Qu
CiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFy
ZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNh
Y2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1v
bml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0
YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JG
aWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVz
cG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9u
aXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBf
Q0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hl
ZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAot
dm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVm
ZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikK
IHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJj
ZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJl
c291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5iNTJm
OTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw2ICsz
OSw3IEBAIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFs
IDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0
ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Miw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7
CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jl
c291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRl
ciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpp
bmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41MmZmZDUzN2Jm
ZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1NzA2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hh
c1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBt
X29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0
byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyAr
MjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2
aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRl
ciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciop
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAm
Y29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdp
bmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdl
dCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2Fk
ZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6
fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpM
ZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVy
OjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQo
bG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2
aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygp
LnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRkNjRm
MjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQzMWQzNTA3MDY4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWlu
dDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1YzYzMmQ5ZDJkYWM5MTNl
Zi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHls
ZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmlu
aXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRo
ZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3
aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHls
ZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1
NGRlNTE4ZjEuLmQ3NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQyY2RlODA0ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9k
ZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVl
SW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+
c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVu
Y29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgIG1fcmVz
b3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVy
bCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBA
IHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hl
Y2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBm
b3VuZCBhZGQgb25lLgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hl
ZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5p
c1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJf
cywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3Ry
aW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgICAgIG1fcmVz
b3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1
cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjph
ZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1h
ZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1f
cmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZm
ZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUy
OWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsK
IAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhl
MjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAog
c3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmls
ZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJl
NTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEz
YTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFS
ZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFy
c2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFS
ZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVE
YXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhd
LT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZp
bGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmls
ZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRp
Y19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5k
aW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2
MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAw
OwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVF
bnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjEx
NDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9f
KiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBF
bGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7
CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5n
IGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRT
dHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldl
YkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJp
bmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwot
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAs
MTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3Rl
Ym9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAg
ICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQog
ICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5n
IHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJp
bmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMy
OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9y
Q29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcm
IGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2so
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2Vu
ZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApp
bmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4
ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZl
Y3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRp
b25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVy
IDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEo
KTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBl
bmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRh
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lz
dGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0
dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQy
OTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1
NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAg
ICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmln
aW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURl
Y29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2Rh
MTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2
ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFz
dGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBA
QCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5n
PiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90
IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5k
ZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNi
YTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpA
QCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAg
U3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRh
SW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAg
ICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYK
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUw
NTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdw
ZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2Fy
ZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJM
Owogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5
cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdl
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNv
bnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJj
NTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZp
ZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOwor
ICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZl
cnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVu
dCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7
CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50
KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywg
bV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlk
UmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRl
eCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgy
Yjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Myw2ICs0NCw3
IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2
aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJl
dmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJj
ZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNl
ZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMy
Yi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBz
dHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJp
bmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFk
ZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIy
OWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uYmJlMzkyM2EyMDdhMGU5MzYxMTczMDc0Zjk3NjA3
ZmFkMDU4N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUo
KSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShw
cm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0
LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1
ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAg
ICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5k
KHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQog
I2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGlu
ZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olll
cykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1h
cHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0
b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAg
IHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50
b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
Ly8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2
ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBw
ZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFs
Z29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVT
ZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQot
ICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4g
UmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNo
YXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNv
bWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAg
ICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21l
bnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19
Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYg
KG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21i
aW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7
Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0K
IAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgx
LDYgKzE1NiwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1
ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFy
ZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
b250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgp
KSwgMSk7CkBAIC0yMDIsMTAgKzE5Miw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHko
bV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50
cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOwor
ICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6
ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMs
MjMgKzIwMiwyNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25l
U2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3Np
emUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAg
IEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgYXV0byBkYXRh
U2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3Np
emUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Cit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEp
LCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6
ZSA9IDA7CkBAIC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUt
Pm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUt
Pm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1l
bnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJl
ZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2Vn
bWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFw
cGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU1LDgg
KzM0Miw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpo
YXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1
cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5z
aXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zNzIsNyArMzU4LDU3IEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4m
JiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0g
dHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNv
bnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0Vt
cHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAo
Y29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVm
KCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRp
Z3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlV
c2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1h
cHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdT
dWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0
YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYg
KG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJl
dHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90
KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3Nl
Z21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFT
ZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNp
dG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDcgKzQyNyw3IEBAIGNvbnN0
IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJl
dHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citi
b29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4o
bV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0MzgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZl
cjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEo
KSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0
YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBA
IHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1
cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZm
ZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1v
dmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhp
blNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkg
LSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYgKzUzNSwyMSBAQCBjb25zdCB1aW50
OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Vn
bWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAor
Y29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAor
eworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQor
CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBS
ZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBb
c2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2Vn
bWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0g
c2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8v
IEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMu
CiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1
NzUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2Iy
ZTZjNDU0OTE4MzkzNjhhZC4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2MjZmY2Q1ZTMzNWM1M2Uz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02Miwx
NDYgKzYyLDEzMyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21l
bnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90
aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUg
YSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0K
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAgIGVu
dW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBw
aW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElP
TikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRh
aW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEg
Kik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRl
Q0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYg
VVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsK
LSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcg
ZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25l
IHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2Vn
bWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVk
aXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGgg
aXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsK
LSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5
RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlE
YXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3
aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVm
ZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAg
Ly8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBm
bGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2
b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29u
c3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Cisg
ICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIp
KSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBp
bW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgot
ICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRh
U2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAg
ICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlm
CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5
dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1
bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXpl
X3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhwbGlj
aXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0Uo
Q0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRh
U2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisj
ZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNp
ZiAhVVNFKEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBw
cm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIp
KSB7IH0KK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwg
c2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4m
JiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVj
dG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8
dWludDhfdD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lm
IFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRp
ZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNl
bmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJs
ZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZv
aWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2Fm
ZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4g
ZXh0cmFjdERhdGEoKTsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248
dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgLy8g
Q3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29u
dGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50
ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25z
dDsKKworICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRv
IGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAg
c2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTUgKzE5NywxNzYgQEAgcHVibGljOgogICAg
IHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnks
IDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0g
ICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBo
YXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0
aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsK
IAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVk
U29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkg
Y29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtl
Q29udGlndW91cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwor
ICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1F
UikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKKyNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVT
RShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwogI2VuZGlm
CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXIoKTsKIAogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMg
aW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUg
U2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9u
KSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsK
ICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVm
ZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRh
dGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6
IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFy
Z3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFy
Z3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAx
CisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4g
JiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQor
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKwor
ICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5
VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VO
REFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdM
SUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNv
bnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1No
YXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRl
ZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2Ug
YSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3Vs
ZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1
ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBh
cHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qg
d2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJl
ZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAg
ICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQor
ICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
dm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIo
KTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
aXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsg
fQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgpIHsg
bV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAgICAgICBy
ZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5
KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFr
ZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJl
QnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjgsMjEgKzM3
NiwyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEo
KQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6
Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBu
ZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0
YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmll
dyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBj
b25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dDsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+
IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAg
ICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRm
OEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4
MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUu
Z2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5
aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwg
bnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQo
KSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0
d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQz
NjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5
NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJy
YXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBh
dXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3Jt
YXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZl
ZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsK
IAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwg
Ym9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYTEy
YTc0MWE1NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRp
b24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRo
aXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0
aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVu
dHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVE
YXRhKSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwor
ICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAg
ICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2Qz
MDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2
N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVi
b2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShN
QUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZm
ZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZl
cnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tO
U0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBb
aW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0
aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2Vu
ZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFk
VHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJm
MTgzOGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3NWE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBz
aXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJ
bnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxj
b25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIg
X3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0g
KHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5T
VUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBwZW5kKGJyaWRn
ZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRl
Q0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgp
OwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENG
RGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21l
bnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byBy
ZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0YWluUHRyPE5T
QXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwog
fQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVO
U0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0
YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgp
XSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3
N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VK
U09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJu
aW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsK
ICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1
N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJhZGRlZTdlZThiNGVlYjgzNWZh
NzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAg
LTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0
YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0
YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXRE
YXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0
YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsK
ICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAt
MTk2LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGlu
aXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpAQCAt
MjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zy
b21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgLy8gQ2hlY2sg
aWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlmICgha2V5SWRDb3Vu
dCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJ
ZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0
byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3Qg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpB
cnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkp
KTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7
Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7
Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwg
anNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7
CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAg
ICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAg
ICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRl
KCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8v
IFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVt
YmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVs
ZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0
IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+
cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXRE
YXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6
ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJh
eSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0Zjgo
KTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgp
LCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENE
TUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2Fh
OTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBA
IC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAg
ICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5j
b2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1
YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4
N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAog
cHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0
IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFk
Mzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEw
YTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjpl
bmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkK
IHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3Zhcmlh
bnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1
aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9
IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdf
Ynl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdf
Ynl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2
NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7
CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVk
QnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMw
NWUyOC4uNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0z
OCwxNiArMzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5
dGVzKiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMp
KTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29u
c3QKK0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMo
KSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0
R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50
ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVy
ZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAg
IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAg
ICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJl
dHVybiBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQz
MzdjLi5iMTM2MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8
Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwg
T3JpZ2luIG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZv
cm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxs
YmFjaywgaWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxG
b250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1Jl
ZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0
aWNhbERhdGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRh
ID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7
IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRl
eCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFl
MzhjODI5NDAwZjVlMzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0
eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlv
bkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250
UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0
YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9
IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZh
bGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0g
c3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBm
b250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENh
Y2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3Jl
YXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3Jp
Z2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTku
LmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0
LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBU
aGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5z
dGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3Mg
Rm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3Ry
dWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0
YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAg
ICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAg
ICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2Jh
M2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2
NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0z
MCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVs
OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJs
KQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwp
KSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUo
ZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwo
V1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5k
ZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2
NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2Rl
bD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1
ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5n
IG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUo
KSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVu
Y29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyAr
OTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWlt
ZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBl
KSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIz
N2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4
MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGlj
IGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9v
bCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZz
ZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9
IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9m
KHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50
MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2
X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNp
emUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpA
QCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4m
IHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2ln
bmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAg
LTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZG
VG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBj
b252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAK
QEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYg
d29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0
b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBA
QCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChj
b252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAg
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRl
ZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNk
NTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVl
OWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZp
bGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYg
aXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxl
LAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5z
IHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVy
dFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwor
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0
b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBm
aWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdP
RkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2
ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVm
ZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNl
c3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApp
bmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRl
M2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQt
c3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24g
eyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsK
KyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpT
T046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1
My4uNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZh
bHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpT
T04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24g
eyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNv
bik7CiB9CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAg
IFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0
YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFk
b3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNl
IGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAg
ICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0
YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERh
dGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxp
emF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJp
bmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAg
fQogI2VuZGlmCkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Np
b25zLCBbXSAoYXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAg
ICAgICAgIH0pOwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250
ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpl
eHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQo
KSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZh
bHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAg
ICByZXR1cm47CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFty
ZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAg
ICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29u
dGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsK
LSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpy
ZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNl
OltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VX
aXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1F
KHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0
IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpA
QCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAg
IGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlm
aWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxd
KSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklk
S2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRL
ZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6Omdl
dEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNX
aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVS
TDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVu
dEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1
dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAg
ICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAg
ICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0
KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgp
OworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAg
ICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElk
ZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkg
b3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMg
PSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5
UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1
Myw3ICsxMTUzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0
YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVl
c3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0
cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyAr
MTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVx
dWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEu
c2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBl
bnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5
LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgp
LmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04t
PnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6
IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBr
ZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAg
ICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVu
dGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50
S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3Ip
LCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRh
KV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0
KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChh
dXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVl
c3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9
IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVu
dGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50
S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9y
ID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2Mx
NGY0YmYuLmE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMw
OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtb
V2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
UGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0
YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIg
dXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNv
bXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVn
YXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFU
Q0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNB
c3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcg
QEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBb
bV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFs
bERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwog
CiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5
YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAt
MjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0
YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNS
ZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21f
cGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURh
dGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcx
MTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5
ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBs
b2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgp
OwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAg
ICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5iNmUyMzdi
NWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcg
QEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAg
ICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1
ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJl
bnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNs
YXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0yMjgsNyArMjI1LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9Owog
CiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIo
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCkBAIC0yMzgsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlm
IChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0
YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25z
ZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVz
dWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4OCw3ICsz
ODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAg
ICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVz
dCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0
YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2Vl
ODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2MTMxN2MwZDExNmZl
NmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsNiAr
MzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRD
cmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZv
cm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250
X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBh
MzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1Yzk5YTdmNjhiNTQ4
OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9t
UHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qg
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwg
b2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJl
ZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIp
Ci0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEo
ZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1
dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAg
ICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFn
ZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1h
Z2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBj
YW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25v
d2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRz
ZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdl
SU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENH
SW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVD
RkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBh
IENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigp
OworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAg
Y29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0
UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNh
dXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBk
b3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdo
aWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVy
IGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2Fs
bGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJl
ZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEu
c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3Qo
Y29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsK
ICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQo
KSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUu
LmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVj
b2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0
YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFk
b3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcwOWNl
MTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1
MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3
LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgp
LCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0YTQ5
ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1YmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24s
IHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJl
dF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBhdXRv
KiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAgICAg
ICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYyNTdh
YWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3Jt
RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBA
QCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0
eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQo
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29w
eVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAg
IHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1
YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4NWEzNDM4NjE5ZGIw
ZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikK
IHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAh
aW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4
MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyAr
MjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNv
bnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2Rp
bmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2Vy
KG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0
RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZ
UEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkxNDk3ZTQ2
MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRmZjhk
NWMzYjRhZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIs
OSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25z
dAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3Ry
ZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAppbmRleCBiYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYxYjFjYjg3MWJlLi5kMDE0
Y2M2YTVkYzdiMTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
dFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50
IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0
cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li4yOWIz
YTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29kZWREYXRhU3Rh
dHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1
cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRv
IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywg
ZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRh
dGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAg
ICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5y
dW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDc5Nzk0ODBmOTFjNTk3YWE5Zjkw
MDk3YzE4ODMyYzZhMTVjMzJjZTguLmIzMjRjZjExNDY0N2IzMzc1ZTZhNDViZmFiMTAzZTBhMjkw
ZmI4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0zNjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAg
ICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAl
cyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRm
OCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAg
ICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+
c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMt
Pm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2Fk
Q29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmNh
YTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsKICAg
ICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBz
dGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0
IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50
ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBt
YXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3NpemUg
dGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0
ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICB1
c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAg
ICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIHZv
aWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQog
CiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQs
IG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBF
cnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5l
ZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwog
ICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5
bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXgg
ZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uNjZlMjk3OWUzZWNmMmVk
Njk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRF
Uk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkp
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5p
dERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0K
KyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2
ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJ
bml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAt
NTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdl
YmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1Rf
TEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5
c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBw
ZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJz
ZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hh
cmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2Fk
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5
c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVk
KFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxv
YWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQo
cGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUsMTAgQEAgcHVi
bGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJl
IQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBt
X3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2Fk
LmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQu
Z2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9z
eXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAg
ewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9
OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41
NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
CiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRh
bGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRl
cmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNy
ZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1
ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzlj
ODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlv
bkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmlu
ZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4
YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2Fs
bG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5k
c0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNk
Nzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0
Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1
LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhD
b3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50Owog
ICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRo
ZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4K
IAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9u
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0
aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJl
Y3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBU
YWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292
ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAK
LSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYg
KG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2
b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAg
IHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQz
LDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2Ugewog
ICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhH
bHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlw
aFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lk
IGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZl
Y3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRo
R2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBN
YXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNb
aV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0g
ICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0
b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QK
KyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQ
YXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1i
bHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2
YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyAr
MTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2Fs
R2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlw
aENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlw
aENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1h
dGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlw
aENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkK
QEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29u
c3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhD
b25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50
c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3Qg
TUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZv
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChv
ZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50
cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhW
YXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
aAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQz
MTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRl
OgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYp
OwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhC
dWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBt
X21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFl
Mzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3
NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVm
IFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0Vf
VEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1
aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50
MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFs
aWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291
bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRh
YmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3Qg
Y291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9m
KFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0
YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZv
aWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAg
ICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8
PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlk
CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxp
ZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24p
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVk
WzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVk
OwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9m
ZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcs
NyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUo
T1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBw
cm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQz
Ml90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNv
dmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAg
ewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBj
YXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3Mjdh
YWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRp
bmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERh
dGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQog
Ly8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwg
VmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3Jp
Z2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBz
Zm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgp
KTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBS
ZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lz
dGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250
KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4u
MjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEy
PiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3Vy
Y2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNl
PiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZm
MzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3Ry
dWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAK
LSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVy
LCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9Owog
CiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFi
bGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5
cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlh
YmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBi
b29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRh
YmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNl
dHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxl
KiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAh
aXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4
LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsx
XTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxv
b2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBM
aXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1
cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsK
ICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVp
bnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4
LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAg
ICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJl
c1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkg
ewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZl
YXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBM
YW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNv
dW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVh
dHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBj
b25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNv
dW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50
XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1Jl
Y29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVm
YXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcg
KzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5
cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3Qg
U2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6
VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBz
dHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlz
VmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0
cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9
CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdT
eXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZm
ZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJl
TGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAg
ICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlw
dExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0
dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBM
aXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9
CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+
KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVh
dHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNl
dCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3Vw
TGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3Qq
IHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAg
LTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0
dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5n
U3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3Qq
IGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1
Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAg
fQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBo
LCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9v
bCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUo
T3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2Fs
RmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJs
ZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFU
YWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+
KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQs
NyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNh
bERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkK
IHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZv
bnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpW
aGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6
OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZo
ZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3Rp
dHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUq
IGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZm
ZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3Rp
dHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQy
MjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmlu
ZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRl
VW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2
YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4
IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5
YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApA
QCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9u
dE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rp
b25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdn
ZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVT
ZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6
OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0
ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcg
Y3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
bikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVu
aXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
CmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3
NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAg
ICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5U
eXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEw
NGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1
OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1
OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9O
VD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9
IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnRE
YXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChz
aXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsK
ICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lE
KWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNm
MmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQx
NWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
YW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2Ug
PSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIp
OyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0
b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0K
KyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9j
dXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwog
ICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFh
Mi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICht
X2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8v
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBj
YXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVn
aW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1
b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNE
YXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4o
KS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29k
aW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxs
RGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1
YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmE0MmU1YmM0YWNjZjM3MjJhNWFm
OWM5MDU0NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFy
a2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0K
IAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21w
cmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8t
Pm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBp
ZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwx
MyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShq
cGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBp
Y2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7
CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAg
IGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZm
ZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYs
NyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVy
OjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVH
SW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1
M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01T
KQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRk
ZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1
MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFr
ZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAo
TlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0p
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpj
b250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBp
ZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJj
aGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
OwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsK
LSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkK
KyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUw
MSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4o
Y29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRl
bVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9h
cmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1
dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMu
c2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5
cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVz
W2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ld
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ld
XTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1J
TUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICgh
aXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUg
PSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURh
dGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1J
TUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uu
c3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRf
VEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRD
dXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAg
ICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEo
KSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewog
ICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0
eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJv
cC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBj
YW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBh
cmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2Ig
YW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3Zl
cmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FU
eXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJl
dHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgo
TlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQg
bnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNv
dW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYw
NDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZl
NjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQot
ICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9w
cmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAg
LCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJv
dmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdD
b252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRh
YjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBl
MmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNv
bnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0
UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2Fy
ZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAg
cmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0
aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5
cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3Ry
YXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkp
KSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAg
ICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAg
ICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4
IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAy
ZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJv
YXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNv
bnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNb
aV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRl
bnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ld
KS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAg
ICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0g
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJ
KFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElV
bmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
KS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5k
ZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcy
N2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIg
QEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0
YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEg
Y29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBl
czsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAg
ICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsK
ICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBh
c3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBp
ZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRD
dXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcg
KzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3Rl
Ym9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09M
IGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJP
T0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJp
bmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlw
ZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwog
ICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
CiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAg
ICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3Rl
Ym9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6
cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAg
ICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0
MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAg
TG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRh
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVk
aW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgz
ODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAg
IH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0
aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBt
X2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAg
ICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01
MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0
ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBz
aXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAg
IGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1
cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApp
bmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3OTA1Li5jN2QxOGJlMWQ2
YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0MTEsMTMgQEAgdWludDY0X3Qg
Rm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5
dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykg
ewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+Pihl
bGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjph
c0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3
MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xh
c3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAt
MjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50
PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVj
dG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFz
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBh
bHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4
ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNs
aWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZm
MDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1
ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2Uo
cmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAg
LCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZl
QnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVp
bnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxs
ZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RT
eW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0
YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwog
ICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZ
ZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7
CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92
ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdl
JiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXpl
KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSBy
YW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0
IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9h
ZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBs
ZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExl
bmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZm
ZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAg
YXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tE
YXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBb
dGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFz
a0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2
ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6
ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIg
eyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlm
IChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQog
ICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0
ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21l
RGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBi
eXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21E
YXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAg
IHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1
dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1
dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAg
aWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0
aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpp
bmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhh
YTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsK
ICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0
YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5z
RGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdl
dCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlm
IChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpk
YXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBi
YmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFh
ZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5k
KQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9y
ZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7
IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENv
bXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0
IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAg
ICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1f
YnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIz
NCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQo
KQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFy
dGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAv
LyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFz
dFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQ
YXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBs
YXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBh
cnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRo
YXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0
YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFy
eVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5
M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVE
YXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1f
ZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxS
ZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5l
ZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEo
bV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9o
YW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNs
aWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBt
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZh
NDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAg
ICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xv
YmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFt
ZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgog
ICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9
IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRl
U3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAg
ICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwog
ICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdy
aXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0
NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVk
NWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRC
dWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
dWx0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdP
UkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBs
YXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFk
KTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhh
bmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVz
VG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxl
ICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExh
c3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4u
NjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlm
ICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
QXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcg
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFy
cmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAog
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkp
OwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmlu
Z1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIs
NyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBy
ZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNv
bnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4
IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3
YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0
QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjpl
bXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1w
dHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07
CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRh
dGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5n
KCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25l
U2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZp
bGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVT
ZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAg
ICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2Yz
Nzk2YjcxYTA0MzEzNGM2NjQ2Li5kMWE3N2I1OGI2NDRhOTBiOTA0ZWZkYzFmZWJjNmMwNjc0NGY5
MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwx
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVk
QnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIFNo
YXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7
IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3Jp
cHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgp
KSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVm
ZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0Lgor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBl
bmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXIm
LCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVk
NjQwZDA0ZDRiZDQ1Li5lNWYzNDliNDgyNzQ2ZjllZGI5YzVmNjMxYmZhZDRiNDE5OThiYTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQog
ICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisg
ICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQog
CkBAIC03OCw5ICs3OSwxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYg
KCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xv
YWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwot
ICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAg
ICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7
CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBl
bmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5m
cmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRy
dWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjIsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBt
X2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3
ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDliYjUxMDI2ZjU4M2EwOWIx
ODQ3YTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlv
bnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1
Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7
IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGlu
ZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYm
IG1fZGF0YS0+aXNOdWxsKCk7IH0KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0
ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsg
bnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRl
eHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUy
NDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NS
ZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+
LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNs
aWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAg
ICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsK
ICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5
YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0
NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsx
MjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQg
aGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZi
ZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3
IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1f
cmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9u
c2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkK
KyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwg
bV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQp
CiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEg
ZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5l
ZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29u
dGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShG
aW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0
L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5
cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5
cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhv
dXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xl
YXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwog
ICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0g
bnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxp
ZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4x
NjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAg
Y2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRl
cjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdC
dWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYz
MzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcs
NyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAog
ICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVz
dEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxD
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1
ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4
IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5
OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQs
NyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1
cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcy
Li5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRh
dGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dy
aXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1
dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9
LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1
MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uNTRkYzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5
MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNo
cm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlm
IChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVu
ZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZl
ci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEw
NSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2Fk
OjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsg
V1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0K
KyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVy
ZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZl
cmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVy
RmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0Vu
YWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAg
ICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5n
VGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAg
IGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMg
cGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQog
ICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxv
YWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgp
KSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4
aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVy
aW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVm
ZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hy
b25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBp
ZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsK
IAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFs
aWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8v
IDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNh
Y2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2Fj
aGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAg
IGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJ
WE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUg
cmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1
ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9
IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQo
KTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYK
IAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVz
dCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2
YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAg
ICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZl
cigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3Jr
TG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJU
KG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7
CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9y
aW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50
cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZl
dGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBM
T0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGlu
IHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCku
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jl
c3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBz
ZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9S
RUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBk
aXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xv
YWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1f
Y2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1d
KGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VS
Q0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDcz
MDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBk
ZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNz
IEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVj
dENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+
IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0Nh
Y2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5
MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3Y2Jk
YTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
CiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdU
Rk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9k
eUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcx
ZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+Owog
ICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcg
Qm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9y
Qm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRj
MTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVh
MmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAg
ICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAg
ICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4
N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0
MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBA
QCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYg
cmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNo
T24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAg
IH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
fSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9Owog
ICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3
Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6
OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNl
Qm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCks
IHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3Rv
cmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYz
NTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAt
MTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJl
Y29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAg
ICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlm
IChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsK
KyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwg
eyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRm
NDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZmU3NTljZWRhMmQ3YmQyZWFlODc4
OTk3ODNlZmYzMzk5MmE3M2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cApAQCAtNDYsNyArNDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNo
ZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNo
ZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5
KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNo
ZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEw
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVk
UmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlm
ICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFt
aW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0g
MTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0g
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM4LDExICsxMzcsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikKIHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRC
b2R5KSB7IH0pOworICAgIGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLmlzTnVsbCgpKSB7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1f
b3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgp
LCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0
aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVu
dHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5
KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeSht
X29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtl
KCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42
NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBs
ZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1
YWQ4ZjBiNzgwN2Q3NDE3MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5
MWQzMWNhOWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFV
UkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52
YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShy
ZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0
ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVh
bV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEu
LjExN2JjMTdjMzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRl
eCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEwYzdi
YjZkMTU4ZjQxMzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgogICAg
IFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+KCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAg
ICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAg
IDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAg
ICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
OyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAog
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
QnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2
OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJi
NmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00
OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7
CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJi
NWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5
MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3
IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsx
NTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5
dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7Cisg
ICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0
NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5
MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNo
aXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJl
c291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZl
UmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJ
OjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7
CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2Vk
IGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJl
dGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUw
Y2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODcz
YTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhl
IGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQg
d2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgp
LCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRG
YWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNv
ZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2
YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJU
cmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29k
ZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250
ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApp
bmRleCBjNjk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3
MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhh
bmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVh
YmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJl
dHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFi
bGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAg
ICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
aAppbmRleCBkYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1
NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6
RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7
CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxl
UmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBz
aXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZm
ZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAzNDA1
NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZv
aWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBp
c051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBp
cGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcg
KzI0MCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRh
dGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0
YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVy
LCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0
YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBB
U1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9
IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIg
PDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5y
ZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5
LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNo
T24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25h
bDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNT
aGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5y
ZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92
ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZN
b3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcg
KzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51
bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29k
ZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3Rk
OjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJl
YWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEz
M2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0
LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNs
YXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNv
ZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJm
YWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0
ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21E
YXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0
YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAg
ICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAK
aW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAx
ZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVm
PEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0Ny
ZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1
ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFj
ZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBk
M2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURh
dGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBj
b25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYp
Cit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5k
ZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdk
ZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxl
V3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAg
LTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9v
bCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5n
SW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNv
bnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
aW5kZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFj
OTA0MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAs
NyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1
bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4m
IGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVp
bnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEz
MzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojpp
c0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBw
ZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+Zmls
ZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJp
YWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2ht
ZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYz
NDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0g
KHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhp
Z2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdo
dC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0Fw
cEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tI
aWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hs
aWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdH
cm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZp
ZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhp
Z2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNw
cAppbmRleCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFh
NDE3YjUxZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3
IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0
a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAg
IGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0
aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAg
ICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAg
bV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFl
NjQ1OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBA
IC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2
aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwor
ICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdh
dGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBj
Yjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRl
MDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoK
ICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBz
ZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpX
ZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2Ut
PmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4
OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4Omld
XTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJp
bmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRp
dGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZm
ZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRl
RGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2Ut
PnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5
cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0
aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFn
ZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0
aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQs
NyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVS
ZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRG
b3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBh
c3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50
aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmRE
YXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2
OTJhODI0MDkyOC4uNTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBi
b29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRp
b25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9z
aXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFw
SWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIwNDUzOWQ2MDA1ZDU0M2JjNjJmYjg5MDU5OTY0Njg5
MzJhMzNlOTIuLmYzYWQ1NzZiMzMzYTkzMjk1MDA2M2Y3YTNhOTRjZjU3NzNiNDJjNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc5LDcgKzExNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtl
Rmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RS
ZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi41ODU0
N2Q4NDg4MWRjODMwZjY5NjlhMGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxT
Y2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIs
IFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1
ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShw
YXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFz
azo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlv
blR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAg
ICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1v
dmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEy
ICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVl
OwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNE
YXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBzaXpl
ID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsg
bV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAg
ICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZN
b3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxl
dGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwg
ZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4u
YjA3YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJ
IHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21w
bGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fc3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1
ZDU2ZTA2NzhjMzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5
NjdhYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25E
aWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2
b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFn
ZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1Bv
bGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9y
c1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5
ZjBhMTAyNTA4Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpA
QCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRp
b25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVu
dFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFn
ZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdl
QnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdl
RGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBO
VUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFhODFjY2U0NDU1ZWIxYTcyYjEwZThmMjQ3M2M2MGEy
OTFlYTU4YmEuLjBjNjI1YzMwZDMwM2ZiZDk4NDliODRiNmU3YWFmYTM0Y2Y3YzM0OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9u
Rm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBO
U0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0
ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkg
aW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0
b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAg
aWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZl
ci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAg
ICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTksNyArNjU5OSw3IEBAIHN0YXRpYyBC
T09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFz
dGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBv
cmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTcwLDcgKzc1
NzAsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5H
KCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBh
IHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5m
aWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFn
ZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsg
eyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1h
Z2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hl
ZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9W
aWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0
OWRhNDY3Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1NWFh
MDdkYjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5
OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CmluZGV4IGUwM2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLmE3ZmI0YWFi
Y2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmlu
ZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
IHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmlu
ZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5
Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2Rl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNp
bXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0
IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMy
MDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2Fi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBA
IC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRp
bmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRp
dGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktp
dDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2
NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVn
SW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlU
eXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFG
b3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAg
ICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAg
ICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0
ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlw
ZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAg
ICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4
ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0
ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxs
V3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2Up
LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYg
cGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAg
IGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJy
YXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2Um
IHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmlu
ZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5
cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBp
dGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUw
ZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdl
YlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAg
ICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJh
Z21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNN
b3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMu
LmUwMDZjNDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3Qo
V2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVy
KHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5
IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwg
Y29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIs
OCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRE
YXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0
YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+
cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChj
b25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwg
Y29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWRE
YXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgp
KSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRv
VVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYz
NzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZv
aWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6
TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsK
IAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+
ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4u
ZGRkNDljNDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAog
ICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxl
IGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2Fh
YWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIw
ZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3Jr
UmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2Un
dmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJj
ZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkp
KSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRl
cmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9h
ZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVk
ZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkxZWNmNGRmNDYxNTg1MmEw
MjA4N2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQ
bHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAg
ICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFy
YW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZp
cmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBA
IC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxT
dHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywg
bGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lk
IFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3Rh
dGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFt
RXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVy
ZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAg
ICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51
YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJl
YW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5n
ZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQw
LDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51
YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAg
Ly8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAg
aWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVy
ID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwot
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4
ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0
NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3Zl
IHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMg
c25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4g
cnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3Ry
YW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2
ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAg
ICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3Bv
bnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVk
QnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAg
ICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwg
W3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURh
dGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVp
bGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwog
ICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9
LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4
NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
d2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0g
ICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1
ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBt
X2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgx
ZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAy
MzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUs
NyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdl
KTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywg
cGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3
Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1
YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBm
aW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJD
b3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3Jl
OjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMy
YWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5p
c2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEg
PSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5k
YXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSht
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUo
KSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJl
c3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBl
Y2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uNmYzZjU2NmM1MmYxZTM5ZGVmMDBiNWYzMTlmZWJh
ZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwx
MiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdl
SWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUg
b3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAo
V2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERh
dGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVm
ZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJp
ZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdp
bmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMzI0LDcgKzMyNCw3IEBAIFZlY3Rv
cjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29w
eSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1J
bmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAg
cmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4
LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
OjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRl
eCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4zZmYzNTU4MDhlMWQ2
ZWIyYWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
aW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0
cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBA
IC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBW
ZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVh
ckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRp
ZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVS
TCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc2
YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRp
IHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5j
bGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1f
YnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDky
Y2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5hZTA1MGE5OTIzZWE3ZWY5NTU1
Y2JhMTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTU0LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJp
bmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0g
ICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5
NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJj
ODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6
ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1l
bW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAt
MTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAg
IGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNo
aXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0Rh
dGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAg
ICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJk
NGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3MmMy
Y2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJGcmFtZTo6
c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
ID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNv
dXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+
ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWlu
UmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEt
PnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNvbnN0
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAz
ZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2
Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigp
LmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4
ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODll
NDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4
LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVl
bihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRf
V0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5
LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVl
bihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1
NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4
LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQog
ICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZm
ZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1Zjdj
MWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4
NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVy
biBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNl
OWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAg
ICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
IHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYx
ZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5
YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIK
ICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcg
KzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5
cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1
MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMs
NyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVz
ZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3
NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2Uw
ZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAo
Qk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7
CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAot
ICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRh
U291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1
dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExv
YWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hp
dmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1
OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5
NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3Jl
YXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBp
ZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAg
ICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0
aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXIt
PnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQo
KV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYTAxMWIy
NzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQp
ZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNl
ID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEg
PSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBu
aWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAq
ZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAg
IAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2Ut
PnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAg
ICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1l
TmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJj
ZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtl
bmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVL
ZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJl
c291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRh
ICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRl
TlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilf
c3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsK
ICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVy
biBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEg
PyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUo
KSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
bnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2Ix
ZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQy
M2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0
cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFt
Ojp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0
cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVh
bT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShi
dWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0
cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJh
N2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5
YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1Ymxp
YyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091
dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90
IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUx
YTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3
IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBz
dHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3Ry
ZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2My
ZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNm
MjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+
JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5
ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUx
MjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25D
aGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQw
NzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVm
NDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRh
dGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIp
CiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8o
c3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFt
KTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0
cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgy
MzE5YjUuLjZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZy
YW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWlt
ZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3Ry
ZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1l
LCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAg
IFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRG
TEFHX05PTkFNRSkpKSB7CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjps
b2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8g
QlNUUgogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdv
dWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAg
ICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBp
ZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVM
T05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1
ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFC
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVU
eXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJl
ZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIp
OwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZm
Y2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldl
YlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7
CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0
cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3Zl
KGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2
ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVl
NGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5o
CkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElX
ZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk0NWVhZWI4MjMzMTk4ODczYzI2NDA0MTVhNzgwNjEy
YTZiZDg3NDkuLjkyYjdkMjU1MWM3OWFlNTFlOTkyMmY0Y2I0M2Y1ODBkOGM2ZDc1NTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3Vv
dXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1t
dXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDIgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFtHVEtdIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCBpbiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2
OC4uMjIwYTM4MDA3ODIzMWE1ZGI1MzRlNzQzMGRjZDhlNzdjZDBmMDc3ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQzLDUyICs0Myw0NSBAQCBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
Zk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2Zp
bGUiKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2Zp
bGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQ
RUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0
eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZm
ZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
LX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
LSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAg
RVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5k
YXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAg
RVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywg
YnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEy
W10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEw
LCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJs
ZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVz
dERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIu
Z2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVu
YXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBl
Y3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEo
KSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMSwxMCArMTA0LDEwIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBV
ICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlu
dCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpA
QCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAg
Im1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0
aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAg
ICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3Vs
dXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNo
YXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgx
MDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1
ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0
YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNs
b25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAg
ICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBF
WFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10g
PSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBi
dWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8v
IFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgp
LCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVp
bGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWls
ZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tC
dWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBj
aGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCArMjA0LDcwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
cioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rv
cjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsn
aScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJj
ZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1
dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0g
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAg
IGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2Qu
ZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCks
IGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUo
KSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAg
IGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVj
a0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJj
ZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVm
ZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWpr
bC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNp
emUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUo
KSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6
ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewog
ICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRl
bnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNv
bnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29u
dGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAg
ICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9
fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2Qn
IH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0g
ICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkp
OwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
JywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtl
QnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7
Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30s
IHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBF
WFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdk
JywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1ha2VC
dWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZm
ZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAg
IEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEs
IDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwot
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVm
ZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhT
dHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5j
bGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2Uo
KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKQEAgLTI0
OSwxNiArMjg4LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNp
bXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
ci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAw
dSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEo
c2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwor
ICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBj
aGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVl
YzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8
TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIu
ZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0Rh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChj
b25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXIt
PmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVs
bG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVk
RGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhw
ZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAg
ICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVy
LmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRl
TlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAg
ICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7
Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOwor
ICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAg
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlv
bik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0
YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAg
ICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAg
ICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhw
ZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0Rh
dGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdF
bmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445706</attachid>
            <date>2021-12-02 04:15:21 -0800</date>
            <delta_ts>2021-12-02 04:29:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211202231520.patch</filename>
            <type>text/plain</type>
            <size>129825</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA5ZjUyMDk1NDIyMTZm
OGJhMzY3NzkxMmFhMTg1OGFmM2EyM2RlZi4uODA1MTAyZjYxYzVlYWQ0OTMwZjhhMmI4NDIyYjg2
OWFkYTEyYThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVu
dExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2NGZkZmMzNDQy
OGIxMzM1OTU3ZTNjZjIwZDhiNDY0MzI1Yjc3NGMuLjMzZTE4ZjNiZGVmZDk3ZDQ5NzQxNWIwNmVk
YmNiYjM1ZDVlNGIwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMTEtMjggIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojps
aXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVk
ZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZhaWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTI5NDkzMTk4MjhlNGUxNTYzODJiOTM3
YWY5YmMyY2E1ZWJlNDFjYy4uNzhjMzg1NmMxOWVjNGVkOTBjZjhjNGYzYWM1ODQ1N2Y5M2VjZDA2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEy
LTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3Vz
IFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0
YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA2
ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmLi5kYjNjMTM2NDY5NDliNWNm
ODRlZjkyMzM1ZWYxNDEwYWE1NDk2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChW
ZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNr
SGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNw
b25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2Vp
dmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9z
aXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJl
c3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNl
LmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hh
bmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVz
cG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZl
Y3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSBy
ZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3Jk
UG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVz
cG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAg
IH0KQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBp
bmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYg
KHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNw
b25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25z
ZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9u
c2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtl
UGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAK
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAg
ICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwg
Y2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhp
cy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IDEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBlMGI2YjEuLjExYTczZjM0
NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xl
YW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwog
ICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1f
c2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5r
KTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpj
cmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8q
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlw
ZSwgY29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZm
ZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7
Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQoreworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZURhdGEoKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAo
IW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIu
dGFrZSgpOwogfQogCiBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0FycmF5QnVmZmVyKCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAo
IW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRy
LCAwKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVy
OworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9
CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwg
VmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRU
eXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxw
dHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4g
YmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAg
IHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0
YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KCkKQEAgLTM2Miw4ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4
dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRl
eHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVz
ZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVm
PEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNv
dXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1f
YnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxs
cHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVl
KG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
aW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJiYmNlNzM0
N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0g
ICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdU
Rk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3ICs4
Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50
VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3Vt
ZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBt
X3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKaW5kZXggNzVkZWFkM2I5NjBiYTliYzUyYWNjNzIxZThhOTFjYjg0MjBhNjZmYS4uNjNm
MWMzY2JlMWVhODFjZmJmNDU0NjQ2MzIwY2RmN2ZhY2Y1OWMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJM
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEg
PSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFs
c2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBt
X2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAg
IG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JD
YW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5y
ZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRl
cmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAg
IH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNy
ZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6
Y3JlYXRlKG1fZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1p
bWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRs
ZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3
N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJk
MWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9t
b2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBi
b29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGQ3MGJhOWVmZjFjOTJhOGQzMDNm
MmVlNDc4ZjVkNDY4NWY0ZjE4NGMuLjhhNjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVk
MDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQo
cmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZl
cihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcg
KzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVt
b3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0Nv
bnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAg
ICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7
CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgp
CiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0
YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVy
ID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNp
emUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBl
bmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9k
YXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAg
ZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+
dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2Rl
ZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2Nv
bnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2Nv
bnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1
NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5
ZmU5N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdl
bnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSBy
ZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0K
ICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVz
cG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJl
ZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25z
dDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAt
MTE5LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFt
ZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YUJ1ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1
ZmZlcjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA5MDZkNjRmNTFmYjJiNzg4MDVlMGJm
MmM3YmQ1MDI5MTBmZTRmNTYwLi41ZWIwNjUzNjBiMTBkZjgxYjU2YmU2OTQ3NTFkY2Q5MzFlN2Ri
MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYg
Kzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxv
YWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAg
ICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5n
UG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFt
ZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0K
IHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3Vy
Y2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0g
bnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5
IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRh
dGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpE
b05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6Ondp
bGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyNCBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQ
YXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAg
bV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVz
b3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXls
b2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwog
ICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwog
fQogCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNv
dXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9y
ZXNvdXJjZURhdGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsK
IH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIx
NTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLmNmODIxNzRiZThlZDg2N2Q0NzgzZWNhYTEzNmI1Nzgz
OTJjMjgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1l
TG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0
cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAK
IERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsK
IGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9h
ZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9Cisg
ICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNs
ZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVl
c3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNv
dXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VE
YXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1
ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBm
MjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7
IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1f
ZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5l
bXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+
Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNv
cHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpA
QCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3
YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdl
OGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApA
QCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKaW5kZXggOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMw
ZmU3OS4uYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMzZDFmYzVlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQK
ICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklO
U0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9z
KTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
IAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0
eSgpKQpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAK
ICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3Jp
dGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRo
ZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQK
ICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
IHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAK
ICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY2MWE5OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFk
NWZiMTNiNGYuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEK
IHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42
NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxp
Y2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJM
JiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCA2NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwLi45ZDJkYzczNjQ4MDJk
MGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFy
c2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZh
Y2MwMTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURl
Y29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29k
ZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGY2NDMzM2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdl
NDg0YTI1Y2MuLmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNs
aWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9u
dExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKaW5kZXggMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2
ZjgxMTg2ZC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20o
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAK
ICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFs
bENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1
NzBhZGM4OWUuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2
OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0
ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
SW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7
CkBAIC01MjMsNyArNTIzLDcgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJ
bWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xh
c3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2Zm
SW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5j
b2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAo
bV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4
IDVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUuLmQ1MTNlMTZjYmE1YTk3
MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdl
SGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFz
UmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAK
LSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAg
ICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7
CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1
ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJu
YWwoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZm
ZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA4NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkw
MDkxZTk4Zjk5MjRiZDFjLi44NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmll
dz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1
cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgLy8gU2tpcCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVu
bG9vcHMuIFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgog
ICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgp
OwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFs
RGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBm
cm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5n
IGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4u
NTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291
cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJv
b2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAt
OTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNo
T25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5p
c2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9w
dGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4
IGRlNzhhY2IyMjEwYTFmZjRlZmE5NmMwNWY4NDkxOWIyNjVkMDFjYWQuLmNmNGYwMmM1ZDc0MzRj
YjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
ICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGNj
ZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcuLjIxOGQ3NGYyNzc2YTk2NWZj
ZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
Jik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAg
IHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQg
c2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0g
ZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwCmluZGV4IGRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUu
LmIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdE
b2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdm
MTQ3ZWFhLi5iMDEyYmE5OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMs
NyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggZWVkYjZiMzdlNDIyMWI4
Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3
MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNo
KCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3
MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDli
ZmZjMmM3ZTYzNDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAg
ICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmlu
ZGV4IGFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEuLjU0MjY2ZGQ5MDgx
OWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZFRl
eHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9k
YXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4oKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6
ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJl
Y2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRl
eHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4
dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRv
VXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRh
dGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEp
OwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5
NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3
MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApp
bmRleCBjMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwLi5iOWE2NTg3NTNj
ZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNj
Yy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVy
PiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIu
LmI1MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4
LDYgKzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIg
ZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcg
KzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZl
cnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+
IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29u
dmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZk
NTM3YmZkNjJmZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZl
cnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQo
IW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOwor
ICAgIG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAg
ICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIy
Nyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29u
dmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVm
ZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0
ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
b3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0
YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmll
d0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252
ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNs
aWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXIt
PnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwg
bV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRp
bmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4
IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlk
ZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJy
b3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0
KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAg
LTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRl
ckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlz
RW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252
ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdE
YXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAh
aGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5
MGJhNjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgyYjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0Nv
bnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTEx
OCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAg
fTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBt
X3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsK
ICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhl
ZWJkNDA1ZTVhYzhmLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQwNTg3ZGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTE5Miw3ICsxOTIs
NiBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5y
ZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKICAg
ICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVu
dC5jb3B5UmVmKCkgfSk7CkBAIC0yMDMsNyArMjAyLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKQEAgLTIxMyw3ICsyMTEsNiBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEu
c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNTlmMGNhMmM0NmMwMzIyMDhiNjc4ODMx
YzI0NjFjZjFjYjAyYzBkZi4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2MjZmY2Q1ZTMzNWM1M2Uz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xODEs
MTkgKzE4MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1
b3VzKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0
b3I8dWludDhfdD4mJik7Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCi0jaWYgVVNFKENGKQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXIoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OwpAQCAtMjQ5LDYgKzIzNiwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc2l6ZV90IG1fc2l6ZSB7
IDAgfTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNE
YXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIo
KTsKKwogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQg
cmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgogICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERh
dGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRp
dGlvbikgY29uc3Q7CkBAIC0yNzUsMTEgKzI3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCi0gICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUg
YmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFy
Z3M+Ci0gICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKLQogICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CkBAIC0zMDYsNiArMzAyLDcx
IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7CiB9OwogCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUg
aW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIg
fHwgYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3Zl
KGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5k
KCpidWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQg
dG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZm
ZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAg
IGlmIChidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBl
bmQoV1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAg
ICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQg
YXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7Cisg
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAg
ICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVs
bCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0Vt
cHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVm
ZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQo
KTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQor
ICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZl
cigpCisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpl
eHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2Iu
LjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9
IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRh
LgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7
CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJ
ZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygp
LnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEu
ZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9
CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
a2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0
RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlk
czsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQog
CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAg
ICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAg
a2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAg
cmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRh
dGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5
Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEz
MmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5
NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsK
LSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
IAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAg
IFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
aW5kZXggZGY2MmIzZDczNjNlZWU2OWVlZTI3MjJhNGNkMDZhMmRhNDlhNjBlOC4uYjZlMjM3YjVk
ZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsK
IH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwg
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0
KCkpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIp
OworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBE
YXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAK
LXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2
UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5
ZWRkNzkzM2YzN2M0NTFmMzJjNTAuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0
NWQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
MzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21t
b25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBt
X3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRl
ZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVt
IHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2Vu
Y3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRy
LCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAg
IG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RD
ZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAg
ICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAg
ICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAg
ICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQ
YXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkK
KyAgICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYm
IGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBu
b3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9
IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXRE
YXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxv
YWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQo
KSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBw
YXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcg
cGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTkwLDcgKzkzLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsK
IH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0
NC4uYTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJ
Q0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3Ry
dWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFy
a2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJr
ZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtlcihtYXJrZXIpKQogICAgICAgICAg
ICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGlu
ZgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2Vy
U2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZm
ZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEg
KyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6
ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBidWZmZXIudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYw
NDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZl
NjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQot
ICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9w
cmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAg
LCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJv
dmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdD
b252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXgg
MjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUw
MzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9k
YXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllf
TE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2Yjdi
NTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAt
MTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAg
ICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkg
ZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdp
dGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3Jp
dGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1
MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERh
dGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRh
TG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0
YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9
CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtl
RGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRh
dGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0
YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0
YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJj
OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsK
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkK
LSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmln
aW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9u
c2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNr
RGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBA
QCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBu
ZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3Bv
bnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9u
LCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9u
c2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1h
cDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRy
PFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2lu
YWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6
IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZv
aWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFu
Z2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNl
ZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRl
bnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8g
anVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBk
b2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQg
dW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cg
dGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBl
Y3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6
ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2lu
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVy
LmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAg
ICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5
dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBX
ZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisK
KyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZm
ZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0
b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5p
bmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVk
KFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAg
ICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4
OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBi
dWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmll
dy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRl
bnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6
ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sg
aGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRl
OgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmlu
Zyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0
YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVy
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3Bv
bnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2
Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAg
IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3Ro
KCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9
CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBA
QCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1
ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVm
ZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVy
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgp
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwog
ICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMg
QEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1
ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJl
Z2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9i
dWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQo
KS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lk
IFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwg
dXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXIm
IGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmQxYTc3
YjU4YjY0NGE5MGI5MDRlZmRjMWZlYmM2YzA2NzQ0ZjkyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0
cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3Jp
cHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVm
ZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9
CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7
IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVm
ZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVG
aWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYp
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250
YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmlu
ZGV4IGE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcuLmU1ZjM0OWI0ODI3
NDZmOWVkYjljNWY2MzFiZmFkNGI0MTk5OGJhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVl
c3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3Vy
Y2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVT
b3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc4LDE1ICs3OSwxNSBAQCB2b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgaWYgKG1f
ZGF0YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRp
Z3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAgICBtX2Rh
dGEgPSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewot
ICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3Vv
dXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3Vv
dXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0
YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSkKKyAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xMjEsOSArMTIyLDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlm
IChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQot
ICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5h
cHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJj
NWM2ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5YmI1MTAyNmY1ODNhMDliMTg0N2E3MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApA
QCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1f
ZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEt
PmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAg
Rm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIg
fTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5
NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAg
ICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAg
ICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVy
KCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDgg
KzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkK
IAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1By
b2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikK
LSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51
bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2Uo
KS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxv
Yjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6
WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5
IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIx
OCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9u
c2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwog
Ci0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0
ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Cisg
ICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFy
cmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZm
ZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWRE
b2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAg
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0K
IApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxk
ZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQo
ZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXgg
NzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4
OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRs
ZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxT
ZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3Bv
bnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGI3Nzg5MzJmMjgxYjcxMmUwMGZmN2FmMjY2
YWEzOWJkZDIwMWMzMmQuLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xv
YWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNS
ZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwg
bV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2Vz
KGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBt
X2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENy
ZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwg
bV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9h
ZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAt
MzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBt
X3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQog
CiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBA
IC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlm
IChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAg
ICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1J
TUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHko
KTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVy
U3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9y
IG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwg
aGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRp
cGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVm
ZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkK
LSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFs
aWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAg
Kzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hl
RW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7
CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAv
LyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGlt
aXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0
ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25l
ZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1
ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAg
ICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAg
c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQot
ICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWRE
YXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAg
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9i
dWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2Ug
ewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRh
dGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEs
IC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEp
OwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1
NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJp
bmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmlu
Z1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJU
KCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsK
IAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAq
bV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1
ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwog
Ci0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVm
ZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgg
PSAwOwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRy
eVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVl
c3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hl
RW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5
LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgp
CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFz
Q2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAg
ICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRS
ZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25z
ZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVu
dHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0
b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBt
YXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5j
dXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtl
KCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5z
aGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0NWMy
ZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgg
eyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7
CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWRE
YXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0y
NDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5n
VGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBV
bmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JD
YWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0
aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQw
ODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZmU3NTljZWRhMmQ3YmQyZWFlODc4OTk3ODNlZmYzMzk5
MmE3M2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyAr
NDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAg
ICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAg
LCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2Fj
aGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1f
Y2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAK
ICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNl
dCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9u
U3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAg
ICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAg
ICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICog
MTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZl
ci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1
ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNl
dCgpOwogICAgIH0KIH0KIApAQCAtMTM4LDExICsxMzcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikK
IHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9j
YWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVu
dHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwor
ICAgIGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmlzTnVsbCgp
KSB7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBt
YXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50
cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3Rh
dHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQot
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAg
ICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVx
dWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0K
IAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRl
eCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0
MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2Fj
aGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmlu
ZGV4IGY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLjU4NTQ3ZDg0ODgx
ZGM4MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRh
c2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFn
ZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQog
ICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRl
cnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAg
ICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAo
bV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZm
ZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAg
CiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAg
ICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAg
c2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwg
ZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRh
c2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJj
ZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2Yy
YzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBT
eW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2Yw
NzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRk
ZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2lu
VmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVn
aW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAg
ICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3Rz
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVl
c3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRo
aXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUg
PT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAo
IW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBl
bmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1
LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVh
bFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21h
bnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51
bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERl
dGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNv
dXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdp
bikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3Rh
dGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1f
bWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3Ry
ZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0
MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgp
CiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNl
KTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0
YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1E
YXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBh
dXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+
c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNo
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5k
ZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkw
ZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBz
aG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAg
ICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0
aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0
ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGlu
Z0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkK
LSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0
YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAg
ICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6
Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRy
X3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgp
OwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRp
ZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVy
LmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNo
KCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgw
NDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5
cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJv
b2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBm
YWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURh
dGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwog
ICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5
ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0
NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5h
bWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAg
ICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsg
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMg
KzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygp
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7
Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAK
IHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXIt
PmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFl
MDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1l
OwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1l
OwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4
NTJhMTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQK
IAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0lu
XyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVy
bCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7
CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkg
ewpAQCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29w
dF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAg
ICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIg
dG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFk
b3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChk
YXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZl
ci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7
CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29k
aW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgp
LCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc4MDg5NGQwNWY3Njc0ZTMzZDkzNzc3ZjJiMzg0NzBkMGJlYjdmYzQuLjkyYjdkMjU1
MWM3OWFlNTFlOTkyMmY0Y2I0M2Y1ODBkOGM2ZDc1NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMS0yOCAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRC
dWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZy
b20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4
IDFiNzM2M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZhNDU0YTY3NjcuLjIyMGEzODAwNzgyMzFh
NWRiNTM0ZTc0MzBkY2Q4ZTc3Y2QwZjA3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCkBAIC00OSw3ICs0OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZk1pc3NpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1Rf
VFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpOwogICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CkBAIC03MiwyNCArNzIsMTYgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNUX1RSVUUo
IW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXIt
PnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0
aW5nRmlsZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFT
U0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAg
YnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9
PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVD
VF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
W3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpi
dWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEp
KTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIpCkBAIC05NywxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNo
YXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5
ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGEx
KSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJI
ZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVu
YXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4
cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMiwxMCArMTA0LDEwIEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2
ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikp
OworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSAr
IDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9
IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUyLDE3ICsx
NDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWdu
aXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQg
cGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9p
biEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVz
LiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
YnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBt
dXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVj
ayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgp
OwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xv
bmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAg
RVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBi
dWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7
CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWls
ZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQor
eworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0
eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIg
PSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHku
cHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgor
ICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29u
dGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
IH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE4MCwxOSArMjA4LDIx
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBz
MyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMz
KSk7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChX
VEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0
byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAg
ICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamts
ID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVE
YXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNr
QnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMSw2ICsyMzEsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0
YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVm
ZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgp
LCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlq
a2wuc2l6ZSgpLCAiZ2hpamtsIik7CiAgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXpl
KCkpOwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXND
aGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAg
LTIwOSwxNiArMjQwLDE4IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVm
ZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRz
KQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAg
IHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRl
bnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBi
dWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQ
RUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBw
ZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9F
UShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdi
JywgJ2MnLCAnZCd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihX
VEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAn
YScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5n
ZXQoKSk7CisKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycg
fSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdk
JyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CkBAIC0yMjgsMTEgKzI2MSwxMyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4
U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9Owot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIu
dGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAg
RVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBi
dWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNU
X0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNTMsMTYgKzI4OCwxNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAg
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hl
Y2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYg
IWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEo
YnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcyOTAz
NDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMw
YjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3IEBA
IHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhw
ZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEg
XSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpA
QCAtNjksMzIgKzcwLDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFB
cnJheSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVu
dCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Imhl
bGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxs
b0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAg
ICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0
aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVu
Z3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3Vu
dCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAg
ICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4
cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
RGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9u
ID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+
c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
YnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNp
emUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1
aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9U
UlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3Rl
ZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1l
bnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERh
dGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUg
PSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBF
Q1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445707</attachid>
            <date>2021-12-02 04:26:06 -0800</date>
            <delta_ts>2021-12-02 04:35:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211202232605.patch</filename>
            <type>text/plain</type>
            <size>129825</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA5ZjUyMDk1NDIyMTZm
OGJhMzY3NzkxMmFhMTg1OGFmM2EyM2RlZi4uODA1MTAyZjYxYzVlYWQ0OTMwZjhhMmI4NDIyYjg2
OWFkYTEyYThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVu
dExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2NGZkZmMzNDQy
OGIxMzM1OTU3ZTNjZjIwZDhiNDY0MzI1Yjc3NGMuLjMzZTE4ZjNiZGVmZDk3ZDQ5NzQxNWIwNmVk
YmNiYjM1ZDVlNGIwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMTEtMjggIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojps
aXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVk
ZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZhaWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTI5NDkzMTk4MjhlNGUxNTYzODJiOTM3
YWY5YmMyY2E1ZWJlNDFjYy4uNzhjMzg1NmMxOWVjNGVkOTBjZjhjNGYzYWM1ODQ1N2Y5M2VjZDA2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEy
LTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3Vz
IFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0
YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA2
ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmLi5kYjNjMTM2NDY5NDliNWNm
ODRlZjkyMzM1ZWYxNDEwYWE1NDk2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChW
ZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNr
SGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNw
b25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2Vp
dmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9z
aXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJl
c3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNl
LmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hh
bmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVz
cG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZl
Y3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSBy
ZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3Jk
UG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVz
cG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAg
IH0KQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBp
bmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYg
KHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNw
b25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25z
ZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9u
c2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtl
UGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAK
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAg
ICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwg
Y2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhp
cy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IDEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBlMGI2YjEuLjExYTczZjM0
NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xl
YW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwog
ICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1f
c2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5r
KTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpj
cmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8q
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlw
ZSwgY29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZm
ZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7
Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQoreworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZURhdGEoKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAo
IW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIu
dGFrZSgpOwogfQogCiBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0FycmF5QnVmZmVyKCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAo
IW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRy
LCAwKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVy
OworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9
CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwg
VmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRU
eXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxw
dHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4g
YmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAg
IHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0
YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KCkKQEAgLTM2Miw4ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4
dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRl
eHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVz
ZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVm
PEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNv
dXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1f
YnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxs
cHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVl
KG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
aW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJiYmNlNzM0
N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0g
ICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdU
Rk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3ICs4
Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50
VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3Vt
ZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBt
X3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKaW5kZXggNzVkZWFkM2I5NjBiYTliYzUyYWNjNzIxZThhOTFjYjg0MjBhNjZmYS4uNjNm
MWMzY2JlMWVhODFjZmJmNDU0NjQ2MzIwY2RmN2ZhY2Y1OWMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJM
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEg
PSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFs
c2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBt
X2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAg
IG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JD
YW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5y
ZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRl
cmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAg
IH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNy
ZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6
Y3JlYXRlKG1fZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1p
bWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRs
ZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3
N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJk
MWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9t
b2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBi
b29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGQ3MGJhOWVmZjFjOTJhOGQzMDNm
MmVlNDc4ZjVkNDY4NWY0ZjE4NGMuLjhhNjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVk
MDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQo
cmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZl
cihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcg
KzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVt
b3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0Nv
bnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAg
ICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7
CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgp
CiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0
YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVy
ID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNp
emUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBl
bmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9k
YXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAg
ZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+
dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2Rl
ZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2Nv
bnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2Nv
bnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1
NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5
ZmU5N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdl
bnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSBy
ZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0K
ICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVz
cG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJl
ZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25z
dDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAt
MTE5LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFt
ZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YUJ1ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1
ZmZlcjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA5MDZkNjRmNTFmYjJiNzg4MDVlMGJm
MmM3YmQ1MDI5MTBmZTRmNTYwLi41ZWIwNjUzNjBiMTBkZjgxYjU2YmU2OTQ3NTFkY2Q5MzFlN2Ri
MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYg
Kzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxv
YWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAg
ICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5n
UG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFt
ZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0K
IHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3Vy
Y2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0g
bnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5
IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRh
dGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpE
b05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6Ondp
bGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyNCBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQ
YXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAg
bV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVz
b3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXls
b2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwog
ICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwog
fQogCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNv
dXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9y
ZXNvdXJjZURhdGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsK
IH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIx
NTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLmNmODIxNzRiZThlZDg2N2Q0NzgzZWNhYTEzNmI1Nzgz
OTJjMjgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1l
TG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0
cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAK
IERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsK
IGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9h
ZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9Cisg
ICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNs
ZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVl
c3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNv
dXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VE
YXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1
ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBm
MjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7
IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1f
ZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5l
bXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+
Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNv
cHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpA
QCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3
YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdl
OGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApA
QCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKaW5kZXggOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMw
ZmU3OS4uYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMzZDFmYzVlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQK
ICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklO
U0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9z
KTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
IAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0
eSgpKQpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAK
ICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3Jp
dGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRo
ZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQK
ICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
IHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAK
ICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY2MWE5OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFk
NWZiMTNiNGYuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEK
IHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42
NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxp
Y2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJM
JiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCA2NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwLi45ZDJkYzczNjQ4MDJk
MGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFy
c2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZh
Y2MwMTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURl
Y29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29k
ZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGY2NDMzM2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdl
NDg0YTI1Y2MuLmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNs
aWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9u
dExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKaW5kZXggMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2
ZjgxMTg2ZC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20o
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAK
ICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFs
bENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1
NzBhZGM4OWUuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2
OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0
ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
SW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7
CkBAIC01MjMsNyArNTIzLDcgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJ
bWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xh
c3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2Zm
SW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5j
b2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAo
bV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4
IDVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUuLmQ1MTNlMTZjYmE1YTk3
MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdl
SGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFz
UmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAK
LSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAg
ICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7
CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1
ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJu
YWwoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZm
ZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA4NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkw
MDkxZTk4Zjk5MjRiZDFjLi44NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmll
dz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1
cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgLy8gU2tpcCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVu
bG9vcHMuIFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgog
ICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgp
OwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFs
RGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBm
cm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5n
IGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4u
NTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291
cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJv
b2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAt
OTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNo
T25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5p
c2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9w
dGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4
IGRlNzhhY2IyMjEwYTFmZjRlZmE5NmMwNWY4NDkxOWIyNjVkMDFjYWQuLmNmNGYwMmM1ZDc0MzRj
YjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
ICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGNj
ZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcuLjIxOGQ3NGYyNzc2YTk2NWZj
ZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
Jik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAg
IHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQg
c2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0g
ZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwCmluZGV4IGRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUu
LmIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdE
b2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdm
MTQ3ZWFhLi5iMDEyYmE5OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMs
NyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggZWVkYjZiMzdlNDIyMWI4
Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3
MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNo
KCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3
MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDli
ZmZjMmM3ZTYzNDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAg
ICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmlu
ZGV4IGFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEuLjU0MjY2ZGQ5MDgx
OWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZFRl
eHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9k
YXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4oKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6
ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJl
Y2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRl
eHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4
dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRv
VXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRh
dGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEp
OwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5
NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3
MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApp
bmRleCBjMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwLi5iOWE2NTg3NTNj
ZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNj
Yy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVy
PiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIu
LmI1MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4
LDYgKzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIg
ZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcg
KzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZl
cnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+
IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29u
dmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZk
NTM3YmZkNjJmZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZl
cnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQo
IW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOwor
ICAgIG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAg
ICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIy
Nyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29u
dmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVm
ZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0
ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
b3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0
YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmll
d0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252
ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNs
aWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXIt
PnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwg
bV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRp
bmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4
IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlk
ZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJy
b3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0
KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAg
LTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRl
ckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlz
RW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252
ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdE
YXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAh
aGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5
MGJhNjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgyYjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0Nv
bnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTEx
OCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAg
fTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBt
X3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsK
ICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhl
ZWJkNDA1ZTVhYzhmLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQwNTg3ZGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTE5Miw3ICsxOTIs
NiBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5y
ZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKICAg
ICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVu
dC5jb3B5UmVmKCkgfSk7CkBAIC0yMDMsNyArMjAyLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKQEAgLTIxMyw3ICsyMTEsNiBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEu
c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNTlmMGNhMmM0NmMwMzIyMDhiNjc4ODMx
YzI0NjFjZjFjYjAyYzBkZi4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2MjZmY2Q1ZTMzNWM1M2Uz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xODEs
MTkgKzE4MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1
b3VzKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0
b3I8dWludDhfdD4mJik7Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCi0jaWYgVVNFKENGKQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXIoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OwpAQCAtMjQ5LDYgKzIzNiwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc2l6ZV90IG1fc2l6ZSB7
IDAgfTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNE
YXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIo
KTsKKwogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQg
cmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgogICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERh
dGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRp
dGlvbikgY29uc3Q7CkBAIC0yNzUsMTEgKzI3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCi0gICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUg
YmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFy
Z3M+Ci0gICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKLQogICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CkBAIC0zMDYsNiArMzAyLDcx
IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7CiB9OwogCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUg
aW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIg
fHwgYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3Zl
KGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5k
KCpidWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQg
dG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZm
ZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAg
IGlmIChidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBl
bmQoV1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAg
ICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQg
YXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7Cisg
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAg
ICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVs
bCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0Vt
cHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVm
ZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQo
KTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQor
ICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZl
cigpCisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpl
eHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2Iu
LjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9
IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRh
LgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7
CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJ
ZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygp
LnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEu
ZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9
CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
a2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0
RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlk
czsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQog
CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAg
ICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAg
a2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAg
cmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRh
dGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5
Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEz
MmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5
NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsK
LSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
IAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAg
IFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
aW5kZXggZGY2MmIzZDczNjNlZWU2OWVlZTI3MjJhNGNkMDZhMmRhNDlhNjBlOC4uYjZlMjM3YjVk
ZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsK
IH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwg
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0
KCkpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIp
OworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBE
YXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAK
LXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2
UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5
ZWRkNzkzM2YzN2M0NTFmMzJjNTAuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0
NWQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
MzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21t
b25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBt
X3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRl
ZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVt
IHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2Vu
Y3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRy
LCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAg
IG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RD
ZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAg
ICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAg
ICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAg
ICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQ
YXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkK
KyAgICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYm
IGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBu
b3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9
IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXRE
YXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxv
YWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQo
KSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBw
YXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcg
cGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTkwLDcgKzkzLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsK
IH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0
NC4uYTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJ
Q0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3Ry
dWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFy
a2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJr
ZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtlcihtYXJrZXIpKQogICAgICAgICAg
ICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGlu
ZgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2Vy
U2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZm
ZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEg
KyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6
ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBidWZmZXIudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYw
NDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZl
NjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQot
ICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9w
cmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAg
LCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJv
dmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdD
b252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXgg
MjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUw
MzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9k
YXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllf
TE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2Yjdi
NTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAt
MTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAg
ICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkg
ZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdp
dGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3Jp
dGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1
MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERh
dGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRh
TG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0
YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9
CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtl
RGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRh
dGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0
YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0
YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJj
OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsK
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkK
LSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmln
aW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9u
c2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNr
RGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBA
QCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBu
ZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3Bv
bnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9u
LCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9u
c2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1h
cDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRy
PFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2lu
YWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6
IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZv
aWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFu
Z2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNl
ZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRl
bnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8g
anVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBk
b2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQg
dW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cg
dGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBl
Y3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6
ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2lu
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVy
LmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAg
ICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5
dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBX
ZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisK
KyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZm
ZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0
b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5p
bmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVk
KFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAg
ICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4
OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBi
dWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmll
dy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRl
bnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6
ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sg
aGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRl
OgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmlu
Zyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0
YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVy
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3Bv
bnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2
Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAg
IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3Ro
KCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9
CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBA
QCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1
ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVm
ZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVy
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgp
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwog
ICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMg
QEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1
ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJl
Z2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9i
dWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQo
KS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lk
IFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwg
dXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXIm
IGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmQxYTc3
YjU4YjY0NGE5MGI5MDRlZmRjMWZlYmM2YzA2NzQ0ZjkyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0
cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3Jp
cHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVm
ZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9
CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7
IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVm
ZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVG
aWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYp
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250
YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmlu
ZGV4IGE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcuLmU1ZjM0OWI0ODI3
NDZmOWVkYjljNWY2MzFiZmFkNGI0MTk5OGJhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVl
c3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3Vy
Y2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVT
b3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc4LDE1ICs3OSwxNSBAQCB2b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgaWYgKG1f
ZGF0YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRp
Z3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAgICBtX2Rh
dGEgPSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewot
ICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3Vv
dXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3Vv
dXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0
YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSkKKyAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xMjEsOSArMTIyLDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlm
IChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQot
ICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5h
cHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJj
NWM2ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5YmI1MTAyNmY1ODNhMDliMTg0N2E3MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApA
QCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1f
ZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEt
PmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAg
Rm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIg
fTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5
NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAg
ICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAg
ICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVy
KCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDgg
KzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkK
IAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1By
b2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikK
LSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51
bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2Uo
KS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxv
Yjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6
WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5
IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIx
OCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9u
c2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwog
Ci0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0
ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Cisg
ICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFy
cmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZm
ZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWRE
b2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAg
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0K
IApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxk
ZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQo
ZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXgg
NzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4
OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRs
ZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxT
ZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3Bv
bnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGI3Nzg5MzJmMjgxYjcxMmUwMGZmN2FmMjY2
YWEzOWJkZDIwMWMzMmQuLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xv
YWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNS
ZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwg
bV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2Vz
KGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBt
X2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENy
ZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwg
bV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9h
ZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAt
MzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBt
X3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQog
CiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBA
IC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlm
IChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAg
ICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1J
TUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHko
KTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVy
U3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9y
IG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwg
aGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRp
cGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVm
ZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkK
LSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFs
aWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAg
Kzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hl
RW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7
CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAv
LyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGlt
aXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0
ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25l
ZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1
ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAg
ICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAg
c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQot
ICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWRE
YXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAg
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9i
dWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2Ug
ewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRh
dGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEs
IC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEp
OwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1
NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJp
bmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmlu
Z1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJU
KCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsK
IAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAq
bV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1
ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwog
Ci0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVm
ZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgg
PSAwOwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRy
eVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVl
c3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hl
RW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5
LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgp
CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFz
Q2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAg
ICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRS
ZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25z
ZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVu
dHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0
b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBt
YXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5j
dXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtl
KCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5z
aGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0NWMy
ZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgg
eyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7
CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWRE
YXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0y
NDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5n
VGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBV
bmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JD
YWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0
aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQw
ODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZmU3NTljZWRhMmQ3YmQyZWFlODc4OTk3ODNlZmYzMzk5
MmE3M2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyAr
NDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAg
ICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAg
LCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2Fj
aGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1f
Y2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAK
ICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNl
dCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9u
U3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAg
ICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAg
ICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICog
MTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZl
ci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1
ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNl
dCgpOwogICAgIH0KIH0KIApAQCAtMTM4LDExICsxMzcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikK
IHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9j
YWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVu
dHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwor
ICAgIGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmlzTnVsbCgp
KSB7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBt
YXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50
cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3Rh
dHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQot
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAg
ICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVx
dWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0K
IAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRl
eCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0
MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2Fj
aGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmlu
ZGV4IGY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLjU4NTQ3ZDg0ODgx
ZGM4MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRh
c2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFn
ZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQog
ICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRl
cnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAg
ICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAo
bV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZm
ZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAg
CiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAg
ICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAg
c2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwg
ZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRh
c2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJj
ZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2Yy
YzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBT
eW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2Yw
NzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRk
ZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2lu
VmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVn
aW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAg
ICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3Rz
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVl
c3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRo
aXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUg
PT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAo
IW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBl
bmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1
LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVh
bFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21h
bnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51
bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERl
dGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNv
dXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdp
bikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3Rh
dGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1f
bWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3Ry
ZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0
MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgp
CiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNl
KTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0
YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1E
YXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBh
dXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+
c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNo
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5k
ZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkw
ZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBz
aG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAg
ICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0
aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0
ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGlu
Z0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkK
LSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0
YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAg
ICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6
Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRy
X3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgp
OwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRp
ZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVy
LmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNo
KCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgw
NDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5
cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJv
b2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBm
YWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURh
dGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwog
ICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5
ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0
NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5h
bWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAg
ICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsg
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMg
KzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygp
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7
Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAK
IHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXIt
PmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFl
MDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1l
OwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1l
OwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4
NTJhMTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQK
IAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0lu
XyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVy
bCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7
CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkg
ewpAQCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29w
dF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAg
ICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIg
dG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFk
b3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChk
YXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZl
ci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7
CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29k
aW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgp
LCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc4MDg5NGQwNWY3Njc0ZTMzZDkzNzc3ZjJiMzg0NzBkMGJlYjdmYzQuLjkyYjdkMjU1
MWM3OWFlNTFlOTkyMmY0Y2I0M2Y1ODBkOGM2ZDc1NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMS0yOCAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRC
dWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZy
b20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4
IDFiNzM2M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZhNDU0YTY3NjcuLjIyMGEzODAwNzgyMzFh
NWRiNTM0ZTc0MzBkY2Q4ZTc3Y2QwZjA3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCkBAIC00OSw3ICs0OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZk1pc3NpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1Rf
VFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpOwogICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CkBAIC03MiwyNCArNzIsMTYgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNUX1RSVUUo
IW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXIt
PnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0
aW5nRmlsZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFT
U0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAg
YnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9
PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVD
VF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
W3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpi
dWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEp
KTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIpCkBAIC05NywxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNo
YXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5
ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGEx
KSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJI
ZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVu
YXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4
cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMiwxMCArMTA0LDEwIEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2
ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikp
OworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSAr
IDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9
IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUyLDE3ICsx
NDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWdu
aXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQg
cGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9p
biEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVz
LiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
YnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBt
dXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVj
ayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgp
OwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xv
bmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAg
RVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBi
dWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7
CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWls
ZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQor
eworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0
eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIg
PSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHku
cHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgor
ICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29u
dGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
IH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE4MCwxOSArMjA4LDIx
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBz
MyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMz
KSk7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChX
VEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0
byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAg
ICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamts
ID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVE
YXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNr
QnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMSw2ICsyMzEsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0
YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVm
ZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgp
LCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlq
a2wuc2l6ZSgpLCAiZ2hpamtsIik7CiAgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXpl
KCkpOwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXND
aGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAg
LTIwOSwxNiArMjQwLDE4IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVm
ZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRz
KQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAg
IHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRl
bnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBi
dWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQ
RUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBw
ZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9F
UShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdi
JywgJ2MnLCAnZCd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihX
VEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAn
YScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5n
ZXQoKSk7CisKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycg
fSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdk
JyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CkBAIC0yMjgsMTEgKzI2MSwxMyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4
U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9Owot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIu
dGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAg
RVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBi
dWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNU
X0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNTMsMTYgKzI4OCwxNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAg
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hl
Y2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYg
IWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEo
YnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcyOTAz
NDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMw
YjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3IEBA
IHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhw
ZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEg
XSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpA
QCAtNjksMzIgKzcwLDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFB
cnJheSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVu
dCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Imhl
bGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxs
b0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAg
ICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0
aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVu
Z3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3Vu
dCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAg
ICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4
cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
RGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9u
ID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+
c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
YnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNp
emUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1
aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9U
UlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3Rl
ZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1l
bnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERh
dGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUg
PSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBF
Q1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445708</attachid>
            <date>2021-12-02 04:27:44 -0800</date>
            <delta_ts>2021-12-02 04:35:19 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211202232739.patch</filename>
            <type>text/plain</type>
            <size>506905</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyYmViMDM3Y2Q2MTZm
NDU4NTVhNzFmNmE3OTBlOTFjZGNlNDk4NC4uODA1MTAyZjYxYzVlYWQ0OTMwZjhhMmI4NDIyYjg2
OWFkYTEyYThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVu
dExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBj
YWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0
ZW5lZCwKKyAgICAgICAgYW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVk
LiBUaGlzIHdhcyBhbiB1bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdl
IGludHJvZHVjZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0
cyBjb250ZW50IGlzIG1hZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBB
bGwgbWV0aG9kcyB0aGF0IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJl
aW5nIGZsYXR0ZW5lZCBhcmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZl
ci4KKworICAgICAgICBBcmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRl
ZCB3aXRoIGEgc2luZ2xlIHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIg
d291bGQgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAg
ICBhbmQgb25seSB3aGVuIHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93
aW5nIHRoaXMgY2hhbmdlCisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkg
ZG9uZSB0aHJvdWdoIGEgY2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252
ZXJzaW9uIGlzIGEgbm8tb3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2Fz
IGFscmVhZHkKKyAgICAgICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRo
IHRoZSBuYXR1cmUgb2YgYSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5
IG11bHRpcGxlCisgICAgICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51
bWJlciBvZiBjb252ZXJzaW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRv
IGF2b2lkIHJlZHVuZGFuY3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2
ZSBvY2N1cmVkLCB0aGUgU2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAg
IHRyYWNlZCBiYWNrIGFuZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3Vz
IHRoZW4uCisgICAgICAgIEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIg
ZmxhdHRlbmluZyBvcGVyYXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVu
IGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFz
ZSBvZiB0ZW1wb3JhcnkgbWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyIGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAg
ICAgIFdoaWxlIHRoZSBjaGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBt
b2RpZmllZCBhcmVhcyBpcyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVk
IHJlZ3Jlc3Npb25zIHVubGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVk
QnVmZmVyIHdpbGwgYmUgbWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4
aXN0aW5nIHRlc3RzLiBOZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0
aFJlc3BvbnNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNv
bGF0ZWRSZXNwb25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNv
cHlSZXNwb25zZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJD
b3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
Ym9keUFzRm9ybURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc1RleHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1l
RGF0YUJ5Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURh
dGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBw
SGlnaGxpZ2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRS
YW5nZURhdGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5n
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hl
Y2tlZFB1dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmVi
aW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9k
ZWxMb2FkZXJVU0QubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6
OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRh
Y2htZW50SW5mbyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1
dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5S
VEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1M
Q29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBw
ZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZE
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICog
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRU
ZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRl
Y29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZp
bHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3Vy
Y2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVm
bGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Z01hbmlmZXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFj
a1N5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxl
U2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25z
dCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
VkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVC
YWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAg
ICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpz
ZXJpYWxpemVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRk
SW1hZ2VUb1Jlc291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAg
ICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
RW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3Vv
dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0No
YXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2Rl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQ
dHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0
ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFRJRkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZl
ckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckdsaWI6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6
CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdP
RkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6Oklt
YWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5
dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VE
ZWNvZGVyQ0cpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1
c2hFbmNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBo
QXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2Vt
Ymx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50
czo6bWF0aEdseXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNQVRIVGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6VGFibGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpU
YWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0
aXR1dGlvblN1YlRhYmxlOjpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TG9va3VwVGFibGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVy
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1
bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0
OjpzY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6
OmRlZmF1bHRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlw
dExpc3Q6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpHU1VCVGFibGU6OnNjcmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OkdTVUJUYWJsZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6R1NVQlRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBF
R0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFu
ZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNv
dXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRs
ZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9E
b3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUds
b2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERy
b3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6Cisg
ICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTEyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2aWdhdGlvblByZWxv
YWRNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkYWUzNDBmNTI4NDhhYjkzODZiZWE3NDJlYTJkMjU0N2I1
NzlmZjkuLjMzZTE4ZjNiZGVmZDk3ZDQ5NzQxNWIwNmVkYmNiYjM1ZDVlNGIwMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTc4IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAg
ICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1
Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWls
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggODZlNWQ5OTU4YzY1MmE1YWYzZjc4NWMwNWI1NTA0MjNh
YmZlMTBhMy4uOGMzODMyZTRjZDBhYjNlNTMxYTYwNzJhNWJmNzExODJjMDhkNGY4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3Vt
ZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06
CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
V2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVd
KToKKwogMjAyMS0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZ3Jlc3Npb24ocjI4MzkxMikgQnJva2UgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3Ig
U3dpZnQgYmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2Ew
MTBjZGQ4NzBmMGE1YzY3ZDIxMzk2OTY2YmI2MGFjLi43OGMzODU2YzE5ZWM0ZWQ5MGNmOGM0ZjNh
YzU4NDU3ZjkzZWNkMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzcgQEAKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5
MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3Bw
OgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5
U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAg
ICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJl
c291cmNlLmg6CisKIDIwMjEtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBVc2UgT2JqZWN0SWRlbnRpZmllciBmb3IgQVhJRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBk
MDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3
OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXpl
RGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAg
ICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6Omdl
dDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNl
ODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0Ns
aXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJ
SW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3Vs
dCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXgg
YjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkw
ODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBl
ID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAg
ICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNv
bnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24g
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1h
Z2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJl
c2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7
IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5Nzlm
YjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAg
dWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3Qg
UmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXpl
KGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0
Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lk
IERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJl
Y29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQo
cmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9u
c2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNr
SGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
cmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRs
ZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRC
dWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAgdm9p
ZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5h
ZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsK
KyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQ
b3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCku
ZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJl
cXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAg
ICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFz
ZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAg
ICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQot
ICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5n
ZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9y
PHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICszNzUs
NyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNw
b25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlS
ZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNl
LmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBy
ZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVk
QnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0
aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4
Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8
RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAg
ICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApp
bmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNl
ZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0
aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNl
RGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVm
PEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApp
bmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJk
YWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3Bv
bnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYg
Zm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNv
bGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
LT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0s
IFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1No
YXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAg
fSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICBy
ZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIs
NyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VC
b2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
Zm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBi
dWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkg
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmlu
ZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThh
M2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNv
bnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBS
ZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkm
KTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5
YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcy
MTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tl
eWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVk
LW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBp
ZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hT
dHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
ICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAg
IENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3
OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0Y2go
Y29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0byBs
ZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRh
KCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlhS2V5
U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsxMDMs
NyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBidWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+
c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJz
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAgIHJl
dHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0
dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXgg
MmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4MDc0
YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25l
ciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJl
ZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9j
b25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5
cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29u
dGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9h
ZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRy
PEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNG
b3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0
YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAg
ICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBG
ZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURh
dGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpA
QCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtl
KCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2Rl
KHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2Rl
KHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlz
VVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShV
VEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFt
c0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAg
ICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBh
cnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZl
ckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlm
IChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZm
ZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNiNzcx
YjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2Nl
ODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2lu
ZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAog
ICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBX
VEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3
OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBt
X2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9z
aW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYs
MTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAg
ICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1No
YXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9T
aGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRh
ID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RG
TW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAg
YXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBh
Y2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAo
YXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJ
bnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVy
KSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXpl
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1fYnVm
ZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewotICAg
IHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkK
QEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZl
ciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZl
ci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpA
QCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9
IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQs
IFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEo
Y29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsK
IH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICsz
NjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICgh
bV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBt
X2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9z
b3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAg
ICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhj
ZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2
MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAt
NTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1
ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQg
c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVm
ZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAg
ICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJl
ZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9T
aGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9z
b3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0Mzky
YTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0
YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsg
eyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3Vt
ZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAg
ICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0g
ICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlz
XShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYg
KGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAg
ICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNm
NmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2YWVi
NTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRh
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAg
IFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9u
c2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3
ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2
YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxp
Z2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hs
aWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAK
ICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFl
NDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0
YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBA
QCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgz
MjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJh
bmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRv
IGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25h
bDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAg
IHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1
ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEy
ZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3Ry
aW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRo
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rl
cjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVL
ZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0
YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1
aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3
YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURh
dGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAw
YWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2Zj
NTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRF
eGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FM
aXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9u
LmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsx
MTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEg
bm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBu
ZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJB
dHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2Fj
dGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9i
ID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRo
QmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5
UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGlu
ZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsK
KyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAt
MTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hl
Y2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJ
bmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
IC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4
S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7Cisg
ICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwog
ICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
aW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEs
NyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5P
YmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlv
biB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3Rz
dG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0x
NzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJl
Y29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5z
YWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVT
RURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVt
b3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBm
cm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkg
dHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3Jl
ZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9i
amVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNO
dWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAg
ICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICgh
bG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAg
ICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVw
cGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9z
IH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAg
QVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6
Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxv
b2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRl
eCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93
ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
bG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAg
ICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURC
S2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBh
dXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYg
KCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
dXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApp
bmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNh
MTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApA
QCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1
dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAg
aWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIp
ICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vy
c29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
MTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5k
ZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYg
KG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1
ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQg
aWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdi
OTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRi
YjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1Nl
bmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3Nh
Z2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YSht
X3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCks
IG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRh
KG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5k
aW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2Ux
MTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0
YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMp
IHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRh
KSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZd
KFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRh
KHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUw
Li42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3Vy
Y2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUg
PSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9p
ZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7
CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9y
ZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAog
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9p
ZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWls
ZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9k
YXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
CiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2Rl
bDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlw
ZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRh
LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVz
b3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVu
ZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2MzQ5
YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBt
X3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
bV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVu
aXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29t
cGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVT
RC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAz
ZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVr
aXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2Rl
bFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lz
dGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQg
PSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkp
OwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5
NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBz
dGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0
YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRl
RE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAg
IH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1
Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFl
YTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYm
ICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAg
ICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNp
emUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAg
ICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNo
ZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7
CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3Ry
aW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1
b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAg
IG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZl
cjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxl
IFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQu
LjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAg
ICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4o
Km1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlm
IChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAg
ICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVy
YXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90
ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3Ry
aW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBl
bHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVk
aWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsK
LSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1l
ZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9
IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCks
IHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJi
MjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEw
ODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NT
Rm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0
Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdG
b250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5n
czxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAg
ICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3Rl
IGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250
TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBw
b2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmll
dz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgy
MDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNo
bWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlw
ZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAg
ICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVm
OThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZl
UmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFu
ZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsK
K2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFz
cyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyAr
NTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQo
Tm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3Rh
bmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50
SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91
dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8
U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZh
dGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5n
ZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Vs
ZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rp
b25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVz
ZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
KTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNl
bmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIz
NTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5
MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBp
ZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5
MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVk
aXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZClj
dEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JB
dHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAg
aWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZl
ZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGlu
ZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRy
aWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwog
fQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcs
NyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9y
OjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdl
U2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBA
IHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVt
ZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChh
dXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAg
ICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAg
ICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwor
ICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdy
aXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRh
LnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVj
dGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJh
d0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsK
IH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRy
YW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1
c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlz
aWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmlu
ZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVz
OkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJp
bmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRl
czpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQog
ewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5
NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJk
ZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6
X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJP
T0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1
cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9o
dG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3Vn
Z2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERv
Y3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAg
ICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+
c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNw
b25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8
ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBl
KCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVy
PiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7
CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1
dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1
NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMx
NzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsK
ICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0g
ICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50Owog
ICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVu
dHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0
dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
LmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBl
KCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwog
ICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9i
amVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50
RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5h
bWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
LmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0K
IAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00
NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0
cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dN
SU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1
cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkp
LCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgp
IH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBt
YXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAt
NDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShG
cmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hv
dWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJp
bmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFt
ZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUg
c3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3Vi
ZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlv
bkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5T
aG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJj
ZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRk
UmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdz
KCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAg
ICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcg
QEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7
CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2
Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2
LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlv
blBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVs
ZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhp
cyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0
aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5
IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9y
dCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEu
LjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAg
dm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNv
bnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNz
RmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3Rv
cnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVz
dWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdz
JiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAg
TE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBz
dGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIq
IHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1l
bnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVh
ZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBj
b3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERv
Y3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVy
IHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJk
NGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0
ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8v
IDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1f
cmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBt
X2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQog
CkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNT
RVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUo
KTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVy
LT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4
MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmlj
dENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRh
QnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0g
ICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5n
dGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxl
bmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAK
IHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFU
b0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBk
YXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2Rh
dGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0
aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jh
c2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1f
Y29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0g
ICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZl
ciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRh
TGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcu
LmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VU
aW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQog
Ci0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVm
ZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFz
RGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAg
ICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2ln
bmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVU
eXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5m
bz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJl
c291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZi
YzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1
NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAg
IGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIo
cmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1l
KCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpy
ZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0g
dHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0
cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3
ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAw
M2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9v
bCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsK
KyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5l
bmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0
YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhC
YXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRh
Q29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRj
MGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVh
MjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0
YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNl
QnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0
NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJl
c291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZs
aWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZl
cnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRl
ci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
cHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNk
ODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5Mjgw
NmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1h
eWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZl
KTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFp
blJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNo
aXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEg
PSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0
TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUt
PmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJj
aGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVy
biB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBh
cnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2Vk
QXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxv
YWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsK
LSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUo
KSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXgg
ZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3
MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsK
QEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRB
bGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJj
aGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVE
YXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2No
ZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxB
cmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNo
aXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNo
aXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50
S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3
YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcu
bWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
LnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFh
MzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5
ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAg
LTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNl
bGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQog
ICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmlu
YWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVz
Rm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lk
IGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0
KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2
MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3
NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVl
c3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0p
OwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9m
cmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6
Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5
KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDks
NyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1
ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1Jl
cXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAg
ICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAg
ICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxv
YWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChp
c1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9h
ZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYw
OTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2Fj
aGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwog
Y2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdy
YXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03
Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3Mg
Q2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlv
bihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJl
clBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3
RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsg
fSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9
IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6
Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEwZGY4
MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9h
ZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBt
X2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIo
KS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7
IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxv
d0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwg
bV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAK
LSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0
KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAt
MzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBh
bnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNl
RGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2
b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAt
MzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRp
b25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZm
ZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYg
KGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURh
dGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5h
cHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxv
YWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEt
PmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0
YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+
Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVz
b3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29y
a2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxk
IGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMu
c2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYm
IG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURh
dGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwor
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5n
dGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRl
ZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBA
IC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBM
ZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVm
Q291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7
CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNv
dXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEo
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpA
QCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJl
ZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNi
OWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIy
ZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0
YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3
MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZm
ZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVm
ZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9
KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsg
bV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRh
LmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEu
Y29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
CkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4Nzhh
ZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFm
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5p
ZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2Yg
IkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1h
bmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBw
bGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFy
dCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgz
NzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFh
MjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVS
TCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgp
CiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGll
bnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVy
IHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3Vy
Y2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
Citib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExv
YWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3
OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRh
KQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGly
ZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNh
cHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQs
CiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUg
dXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBj
YWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3
MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEw
NCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNr
Rm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNh
OWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNl
KCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGln
dW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1
bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1
MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0Mzdm
NDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQz
MGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2ln
bmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/
KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlz
RW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAg
ICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVt
ZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0
ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQo
KSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQo
KSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAK
ICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3Jp
dGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRo
ZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQK
ICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
IHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAK
ICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBp
bnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAg
ICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2Io
NikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29s
dW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBk
ZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2RmOGQ5
ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0
eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVtcHR5
LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBhdXRv
JiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHBy
b3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5j
cmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVSTCBj
YW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50
YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBmb3Ig
dGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIGlm
IChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50
YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25z
ZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShD
RkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRh
LCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VSZXNw
b25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9uS2V5
KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJRChy
ZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAg
ICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNl
IHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCBy
ZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVByb3Bl
cnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
KTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAg
IGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBD
RkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
UHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxp
c3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5E
RUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAg
ICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwg
TGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNl
RGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFp
biByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAg
LTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBz
dWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAg
ICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
ICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qo
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZy
YW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1
YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3
IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
SW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1h
cmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9u
c2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25z
ZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAg
ICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJh
bWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICBy
ZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1
bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhl
ciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3du
KS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9c
IiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVp
Z2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYx
YjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjczMzZiMzdkZTNiZGRkYTZm
YTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5ICsxOTMsMTAgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAg
IGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBi
YXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBh
dXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCks
IGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAg
ICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhl
YWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhl
YWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVj
b2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1
b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0Ogog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50
LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVu
dEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8g
Y29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUg
cmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVj
cyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNl
ZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4
IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjkwZDFjNmEyYmE4YzRh
NDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEy
ICs0MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAg
ICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3
OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2
NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nl
c3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1l
bnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAg
ICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
ZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJm
NzRjYzZhMGJjZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0
NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQs
CiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNo
ZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2Ug
cXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9p
ZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJz
ZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0g
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgp
IDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBh
bmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBp
ZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQg
b3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNo
ZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAg
ICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAg
ICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVk
ZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1
ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3
NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBD
YWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQu
LmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lk
IENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQog
ICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVk
KCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRG
b250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0
YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyAr
OTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9
CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYm
ICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9v
bCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBi
eXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVD
dXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVy
IHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBp
bmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBi
dWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxl
Y3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9h
ZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVu
dFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAo
Q2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50
LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjE1NGRi
OGNiYWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0
ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9t
U3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
LCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1E
YXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRl
eHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2
YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03
NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBz
ZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUw
MTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVm
YjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdl
KCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRh
IHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBp
ZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0
UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2Ny
aXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2Fu
Y2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlw
dCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAg
RW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVw
ZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQg
Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBp
ZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmlu
ZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLmQ1MTNlMTZjYmE1
YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlt
YWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+
aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9
CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7
CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJV
cGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBF
bmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
IG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2Vk
SW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50
ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25z
dCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRl
bnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdm
MTgzOTU2MmYuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRh
LT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAv
LyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4g
V2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYg
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXpl
KCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYs
NyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0
YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAo
bV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUg
c3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBl
bmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVm
ZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRh
QnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAg
ICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6
ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAg
ICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBu
b3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNy
ZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5k
ZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAw
ZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAg
dm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0g
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdu
b3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywg
MD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29u
c3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5
ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1
Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmNmNGYwMmM1ZDc0MzRjYjY1Y2IzZDAzMzhh
YzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNo
ZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xp
ZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAg
LTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MTMsNyAr
OTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5
UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5l
d0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI3LDgg
KzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChu
ZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxh
Y2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEz
ZTZjMDM1YmMyNzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIs
OSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0
UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
OworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRS
ZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIq
IHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRl
c1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsg
fQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8v
IE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9s
b2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGlt
ZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGlu
IHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgz
OS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Miwx
MiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
dG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRv
IHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50
OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAg
IG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmco
ZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2Yx
NDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3
ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsK
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5Mzkz
M2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlm
ZThlOThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNj
cmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2Nv
cGU7CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAg
ICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAg
ICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29u
dmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAg
IG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVk
Rm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRy
OwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2Iw
NjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkz
M2I0ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBt
YXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZl
cnRlZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVk
Rm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAg
ICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJl
Zjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTli
ZTQxOGYxN2I2NS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEw
ICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVy
biBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUz
NDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMy
YzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBj
b25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXgg
MTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uNTQyNjZkZDkwODE5YzM0
ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0
VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQ
QUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMg
QEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0
aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3
YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUs
MTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWRE
YXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOwor
ICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0Njdh
Mjc4MjYxNWQzNDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNo
ZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwot
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0
YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXpl
KCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
PmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRm
NjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBi
OWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0Owog
ICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1
MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdh
MDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hh
cmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFj
a2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2
b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJl
c291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJl
YTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlk
ZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBh
IHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3Qu
CiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFy
ZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNh
Y2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1v
bml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0
YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JG
aWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVz
cG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9u
aXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBf
Q0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hl
ZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAot
dm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVm
ZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikK
IHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJj
ZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJl
c291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5iNTJm
OTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw2ICsz
OSw3IEBAIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFs
IDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0
ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Miw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7
CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jl
c291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRl
ciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpp
bmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41MmZmZDUzN2Jm
ZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1NzA2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hh
c1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBt
X29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0
byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyAr
MjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2
aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRl
ciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciop
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAm
Y29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdp
bmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdl
dCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2Fk
ZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6
fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpM
ZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVy
OjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQo
bG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2
aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygp
LnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRkNjRm
MjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQzMWQzNTA3MDY4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWlu
dDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1YzYzMmQ5ZDJkYWM5MTNl
Zi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHls
ZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmlu
aXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRo
ZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3
aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHls
ZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1
NGRlNTE4ZjEuLmQ3NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQyY2RlODA0ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9k
ZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVl
SW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+
c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVu
Y29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgIG1fcmVz
b3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVy
bCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBA
IHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hl
Y2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBm
b3VuZCBhZGQgb25lLgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hl
ZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5p
c1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJf
cywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3Ry
aW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgICAgIG1fcmVz
b3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1
cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjph
ZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1h
ZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1f
cmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZm
ZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUy
OWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsK
IAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhl
MjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAog
c3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmls
ZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJl
NTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEz
YTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFS
ZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFy
c2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFS
ZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVE
YXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhd
LT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZp
bGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmls
ZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRp
Y19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5k
aW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2
MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAw
OwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVF
bnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjEx
NDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9f
KiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBF
bGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7
CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5n
IGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRT
dHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldl
YkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJp
bmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwot
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAs
MTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3Rl
Ym9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAg
ICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQog
ICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5n
IHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJp
bmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMy
OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9y
Q29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcm
IGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2so
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2Vu
ZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApp
bmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4
ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZl
Y3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRp
b25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVy
IDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEo
KTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBl
bmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRh
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lz
dGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0
dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQy
OTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1
NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAg
ICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmln
aW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURl
Y29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2Rh
MTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2
ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFz
dGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBA
QCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5n
PiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90
IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5k
ZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNi
YTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpA
QCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAg
U3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRh
SW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAg
ICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYK
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUw
NTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdw
ZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2Fy
ZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJM
Owogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5
cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdl
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNv
bnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJj
NTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZp
ZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOwor
ICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZl
cnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVu
dCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7
CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50
KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywg
bV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlk
UmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRl
eCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgy
Yjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Myw2ICs0NCw3
IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2
aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJl
dmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJj
ZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNl
ZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMy
Yi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBz
dHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJp
bmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFk
ZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIy
OWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uYmJlMzkyM2EyMDdhMGU5MzYxMTczMDc0Zjk3NjA3
ZmFkMDU4N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUo
KSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShw
cm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0
LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1
ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAg
ICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5k
KHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQog
I2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGlu
ZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olll
cykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1h
cHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0
b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAg
IHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50
b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
Ly8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2
ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBw
ZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFs
Z29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVT
ZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQot
ICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4g
UmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNo
YXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNv
bWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAg
ICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21l
bnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19
Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYg
KG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21i
aW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7
Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0K
IAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgx
LDYgKzE1NiwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1
ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFy
ZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
b250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgp
KSwgMSk7CkBAIC0yMDIsMTAgKzE5Miw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHko
bV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50
cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOwor
ICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6
ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMs
MjMgKzIwMiwyNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25l
U2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3Np
emUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAg
IEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgYXV0byBkYXRh
U2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3Np
emUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Cit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEp
LCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6
ZSA9IDA7CkBAIC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUt
Pm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUt
Pm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1l
bnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJl
ZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2Vn
bWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFw
cGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU1LDgg
KzM0Miw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpo
YXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1
cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5z
aXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zNzIsNyArMzU4LDU3IEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4m
JiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0g
dHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNv
bnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0Vt
cHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAo
Y29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVm
KCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRp
Z3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlV
c2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1h
cHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdT
dWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0
YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYg
KG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJl
dHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90
KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3Nl
Z21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFT
ZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNp
dG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDcgKzQyNyw3IEBAIGNvbnN0
IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJl
dHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citi
b29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4o
bV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0MzgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZl
cjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEo
KSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0
YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBA
IHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1
cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZm
ZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1v
dmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhp
blNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkg
LSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYgKzUzNSwyMSBAQCBjb25zdCB1aW50
OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Vn
bWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAor
Y29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAor
eworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQor
CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBS
ZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBb
c2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2Vn
bWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0g
c2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8v
IEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMu
CiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1
NzUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2Iy
ZTZjNDU0OTE4MzkzNjhhZC4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2MjZmY2Q1ZTMzNWM1M2Uz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02Miwx
NDYgKzYyLDEzMyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21l
bnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90
aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUg
YSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0K
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAgIGVu
dW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBw
aW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElP
TikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRh
aW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEg
Kik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRl
Q0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYg
VVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsK
LSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcg
ZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25l
IHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2Vn
bWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVk
aXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGgg
aXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsK
LSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5
RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlE
YXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3
aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVm
ZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAg
Ly8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBm
bGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2
b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29u
c3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Cisg
ICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIp
KSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBp
bW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgot
ICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRh
U2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAg
ICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlm
CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5
dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1
bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXpl
X3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhwbGlj
aXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0Uo
Q0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRh
U2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisj
ZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNp
ZiAhVVNFKEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBw
cm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIp
KSB7IH0KK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwg
c2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4m
JiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVj
dG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8
dWludDhfdD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lm
IFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRp
ZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNl
bmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJs
ZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZv
aWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2Fm
ZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4g
ZXh0cmFjdERhdGEoKTsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248
dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgLy8g
Q3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29u
dGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50
ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25z
dDsKKworICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRv
IGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAg
c2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTUgKzE5NywxNzYgQEAgcHVibGljOgogICAg
IHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnks
IDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0g
ICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBo
YXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0
aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsK
IAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVk
U29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkg
Y29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtl
Q29udGlndW91cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwor
ICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1F
UikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKKyNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVT
RShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwogI2VuZGlm
CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXIoKTsKIAogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMg
aW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUg
U2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9u
KSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsK
ICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVm
ZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRh
dGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6
IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFy
Z3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFy
Z3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAx
CisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4g
JiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQor
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKwor
ICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5
VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VO
REFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdM
SUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNv
bnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1No
YXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRl
ZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2Ug
YSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3Vs
ZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1
ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBh
cHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qg
d2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJl
ZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAg
ICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQor
ICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
dm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIo
KTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
aXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsg
fQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgpIHsg
bV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAgICAgICBy
ZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5
KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFr
ZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJl
QnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjgsMjEgKzM3
NiwyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEo
KQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6
Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBu
ZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0
YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmll
dyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBj
b25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dDsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+
IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAg
ICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRm
OEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4
MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUu
Z2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5
aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwg
bnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQo
KSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0
d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQz
NjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5
NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJy
YXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBh
dXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3Jt
YXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZl
ZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsK
IAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwg
Ym9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYTEy
YTc0MWE1NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRp
b24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRo
aXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0
aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVu
dHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVE
YXRhKSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwor
ICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAg
ICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2Qz
MDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2
N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVi
b2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShN
QUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZm
ZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZl
cnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tO
U0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBb
aW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0
aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2Vu
ZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFk
VHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJm
MTgzOGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3NWE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBz
aXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJ
bnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxj
b25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIg
X3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0g
KHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5T
VUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBwZW5kKGJyaWRn
ZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRl
Q0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgp
OwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENG
RGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21l
bnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byBy
ZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0YWluUHRyPE5T
QXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwog
fQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVO
U0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0
YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgp
XSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3
N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VK
U09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJu
aW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsK
ICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1
N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJhZGRlZTdlZThiNGVlYjgzNWZh
NzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAg
LTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0
YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0
YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXRE
YXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0
YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsK
ICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAt
MTk2LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGlu
aXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpAQCAt
MjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zy
b21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgLy8gQ2hlY2sg
aWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlmICgha2V5SWRDb3Vu
dCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJ
ZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0
byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3Qg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpB
cnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkp
KTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7
Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7
Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwg
anNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7
CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAg
ICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAg
ICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRl
KCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8v
IFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVt
YmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVs
ZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0
IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+
cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXRE
YXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6
ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJh
eSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0Zjgo
KTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgp
LCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENE
TUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2Fh
OTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBA
IC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAg
ICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5j
b2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1
YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4
N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAog
cHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0
IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFk
Mzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEw
YTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjpl
bmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkK
IHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3Zhcmlh
bnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1
aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9
IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdf
Ynl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdf
Ynl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2
NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7
CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVk
QnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMw
NWUyOC4uNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0z
OCwxNiArMzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5
dGVzKiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMp
KTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29u
c3QKK0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMo
KSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0
R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50
ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVy
ZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAg
IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAg
ICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJl
dHVybiBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQz
MzdjLi5iMTM2MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8
Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwg
T3JpZ2luIG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZv
cm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxs
YmFjaywgaWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxG
b250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1Jl
ZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0
aWNhbERhdGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRh
ID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7
IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRl
eCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFl
MzhjODI5NDAwZjVlMzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0
eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlv
bkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250
UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0
YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9
IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZh
bGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0g
c3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBm
b250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENh
Y2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3Jl
YXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3Jp
Z2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTku
LmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0
LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBU
aGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5z
dGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3Mg
Rm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3Ry
dWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0
YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAg
ICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAg
ICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2Jh
M2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2
NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0z
MCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVs
OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJs
KQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwp
KSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUo
ZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwo
V1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5k
ZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2
NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2Rl
bD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1
ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5n
IG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUo
KSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVu
Y29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyAr
OTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWlt
ZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBl
KSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIz
N2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4
MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGlj
IGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9v
bCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZz
ZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9
IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9m
KHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50
MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2
X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNp
emUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpA
QCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4m
IHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2ln
bmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAg
LTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZG
VG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBj
b252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAK
QEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYg
d29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0
b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBA
QCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChj
b252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAg
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRl
ZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNk
NTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVl
OWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZp
bGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYg
aXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxl
LAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5z
IHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVy
dFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwor
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0
b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBm
aWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdP
RkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2
ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVm
ZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNl
c3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApp
bmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRl
M2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQt
c3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24g
eyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsK
KyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpT
T046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1
My4uNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZh
bHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpT
T04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24g
eyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNv
bik7CiB9CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAg
IFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0
YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFk
b3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNl
IGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAg
ICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0
YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERh
dGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxp
emF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJp
bmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAg
fQogI2VuZGlmCkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Np
b25zLCBbXSAoYXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAg
ICAgICAgIH0pOwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250
ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpl
eHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQo
KSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZh
bHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAg
ICByZXR1cm47CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFty
ZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAg
ICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29u
dGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsK
LSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpy
ZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNl
OltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VX
aXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1F
KHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0
IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpA
QCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAg
IGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlm
aWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxd
KSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklk
S2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRL
ZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6Omdl
dEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNX
aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVS
TDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVu
dEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1
dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAg
ICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAg
ICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0
KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgp
OworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAg
ICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElk
ZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkg
b3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMg
PSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5
UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1
Myw3ICsxMTUzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0
YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVl
c3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0
cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyAr
MTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVx
dWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEu
c2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBl
bnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5
LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgp
LmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04t
PnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6
IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBr
ZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAg
ICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVu
dGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50
S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3Ip
LCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRh
KV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0
KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChh
dXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVl
c3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9
IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVu
dGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50
S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9y
ID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2Mx
NGY0YmYuLmE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMw
OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtb
V2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
UGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0
YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIg
dXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNv
bXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVn
YXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFU
Q0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNB
c3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcg
QEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBb
bV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFs
bERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwog
CiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5
YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAt
MjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0
YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNS
ZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21f
cGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURh
dGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcx
MTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5
ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBs
b2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgp
OwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAg
ICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5iNmUyMzdi
NWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcg
QEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAg
ICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1
ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJl
bnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNs
YXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0yMjgsNyArMjI1LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9Owog
CiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIo
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCkBAIC0yMzgsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlm
IChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0
YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25z
ZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVz
dWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4OCw3ICsz
ODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAg
ICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVz
dCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0
YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2Vl
ODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2MTMxN2MwZDExNmZl
NmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsNiAr
MzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRD
cmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZv
cm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250
X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBh
MzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1Yzk5YTdmNjhiNTQ4
OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9t
UHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qg
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwg
b2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJl
ZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIp
Ci0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEo
ZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1
dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAg
ICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFn
ZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1h
Z2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBj
YW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25v
d2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRz
ZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdl
SU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENH
SW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVD
RkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBh
IENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigp
OworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAg
Y29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0
UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNh
dXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBk
b3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdo
aWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVy
IGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2Fs
bGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJl
ZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEu
c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3Qo
Y29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsK
ICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQo
KSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUu
LmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVj
b2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVu
dCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0
YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFk
b3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcwOWNl
MTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1
MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3
LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgp
LCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0YTQ5
ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1YmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24s
IHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJl
dF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBhdXRv
KiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAgICAg
ICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYyNTdh
YWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3Jt
RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBA
QCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0
eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQo
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29w
eVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAg
IHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1
YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4NWEzNDM4NjE5ZGIw
ZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikK
IHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAh
aW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4
MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyAr
MjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNv
bnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2Rp
bmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2Vy
KG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0
RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZ
UEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkxNDk3ZTQ2
MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRmZjhk
NWMzYjRhZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIs
OSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25z
dAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3Ry
ZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAppbmRleCBiYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYxYjFjYjg3MWJlLi5kMDE0
Y2M2YTVkYzdiMTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
dFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50
IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0
cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li4yOWIz
YTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29kZWREYXRhU3Rh
dHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1
cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRv
IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywg
ZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRh
dGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAg
ICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5y
dW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDc5Nzk0ODBmOTFjNTk3YWE5Zjkw
MDk3YzE4ODMyYzZhMTVjMzJjZTguLmIzMjRjZjExNDY0N2IzMzc1ZTZhNDViZmFiMTAzZTBhMjkw
ZmI4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0zNjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAg
ICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAl
cyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRm
OCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAg
ICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+
c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMt
Pm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2Fk
Q29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmNh
YTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsKICAg
ICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBz
dGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0
IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50
ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBt
YXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3NpemUg
dGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0
ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICB1
c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAg
ICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIHZv
aWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQog
CiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQs
IG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBF
cnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5l
ZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwog
ICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5
bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXgg
ZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uNjZlMjk3OWUzZWNmMmVk
Njk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRF
Uk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkp
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5p
dERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0K
KyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2
ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJ
bml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAt
NTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdl
YmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1Rf
TEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5
c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBw
ZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJz
ZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hh
cmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2Fk
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5
c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVk
KFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxv
YWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQo
cGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUsMTAgQEAgcHVi
bGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJl
IQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBt
X3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2Fk
LmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQu
Z2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9z
eXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAg
ewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9
OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41
NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
CiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRh
bGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRl
cmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNy
ZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1
ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzlj
ODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlv
bkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmlu
ZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4
YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2Fs
bG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5k
c0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNk
Nzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0
Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1
LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhD
b3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50Owog
ICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRo
ZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4K
IAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9u
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0
aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJl
Y3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBU
YWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292
ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAK
LSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYg
KG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2
b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAg
IHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQz
LDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2Ugewog
ICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhH
bHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlw
aFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lk
IGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZl
Y3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRo
R2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBN
YXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNb
aV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0g
ICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0
b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QK
KyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQ
YXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1i
bHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2
YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyAr
MTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2Fs
R2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlw
aENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlw
aENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1h
dGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlw
aENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkK
QEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29u
c3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhD
b25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50
c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3Qg
TUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZv
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChv
ZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50
cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhW
YXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
aAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQz
MTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRl
OgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYp
OwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhC
dWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBt
X21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFl
Mzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3
NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVm
IFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0Vf
VEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1
aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50
MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFs
aWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291
bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRh
YmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3Qg
Y291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9m
KFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0
YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZv
aWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAg
ICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8
PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlk
CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxp
ZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24p
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVk
WzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVk
OwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9m
ZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcs
NyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUo
T1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBw
cm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQz
Ml90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNv
dmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAg
ewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBj
YXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3Mjdh
YWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRp
bmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERh
dGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQog
Ly8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwg
VmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3Jp
Z2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBz
Zm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgp
KTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBS
ZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lz
dGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250
KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4u
MjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEy
PiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3Vy
Y2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNl
PiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZm
MzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3Ry
dWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAK
LSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVy
LCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9Owog
CiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFi
bGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5
cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlh
YmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBi
b29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRh
YmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNl
dHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxl
KiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAh
aXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4
LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsx
XTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxv
b2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBM
aXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1
cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsK
ICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVp
bnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4
LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAg
ICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJl
c1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkg
ewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZl
YXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBM
YW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNv
dW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVh
dHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBj
b25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNv
dW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50
XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1Jl
Y29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVm
YXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcg
KzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5
cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3Qg
U2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6
VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBz
dHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlz
VmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0
cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9
CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdT
eXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZm
ZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJl
TGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAg
ICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlw
dExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0
dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBM
aXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9
CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+
KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVh
dHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNl
dCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3Vw
TGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3Qq
IHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAg
LTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0
dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5n
U3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3Qq
IGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1
Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAg
fQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBo
LCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9v
bCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUo
T3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2Fs
RmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJs
ZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFU
YWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+
KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQs
NyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNh
bERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkK
IHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZv
bnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpW
aGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6
OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZo
ZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3Rp
dHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUq
IGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZm
ZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3Rp
dHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQy
MjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmlu
ZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRl
VW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2
YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4
IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5
YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApA
QCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9u
dE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rp
b25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdn
ZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVT
ZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6
OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0
ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcg
Y3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
bikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVu
aXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
CmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3
NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAg
ICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5U
eXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEw
NGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1
OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1
OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9O
VD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9
IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnRE
YXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChz
aXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsK
ICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lE
KWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNm
MmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQx
NWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
YW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2Ug
PSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIp
OyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0
b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0K
KyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9j
dXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwog
ICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFh
Mi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICht
X2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8v
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBj
YXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVn
aW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1
b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNE
YXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4o
KS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29k
aW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxs
RGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1
YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmE0MmU1YmM0YWNjZjM3MjJhNWFm
OWM5MDU0NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFy
a2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0K
IAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21w
cmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8t
Pm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBp
ZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwx
MyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShq
cGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBp
Y2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7
CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAg
IGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZm
ZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYs
NyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVy
OjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVH
SW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1
M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01T
KQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRk
ZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1
MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFr
ZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAo
TlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0p
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpj
b250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBp
ZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJj
aGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
OwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsK
LSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkK
KyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUw
MSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4o
Y29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRl
bVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9h
cmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1
dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMu
c2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5
cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVz
W2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ld
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ld
XTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1J
TUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICgh
aXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUg
PSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURh
dGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1J
TUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uu
c3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRf
VEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRD
dXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAg
ICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEo
KSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewog
ICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0
eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJv
cC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBj
YW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBh
cmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2Ig
YW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3Zl
cmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FU
eXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJl
dHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgo
TlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQg
bnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNv
dW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYw
NDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZl
NjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZp
ZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQot
ICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9w
cmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAg
LCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJv
dmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdD
b252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRh
YjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBl
MmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNv
bnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0
UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2Fy
ZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAg
cmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0
aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5
cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3Ry
YXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkp
KSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAg
ICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAg
ICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4
IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAy
ZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJv
YXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNv
bnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNb
aV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRl
bnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ld
KS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAg
ICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0g
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJ
KFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElV
bmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
KS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5k
ZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcy
N2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIg
QEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0
YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEg
Y29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBl
czsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAg
ICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsK
ICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBh
c3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBp
ZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRD
dXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcg
KzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3Rl
Ym9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09M
IGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJP
T0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJp
bmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlw
ZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwog
ICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
CiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAg
ICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3Rl
Ym9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6
cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAg
ICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0
MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAg
TG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRh
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVk
aW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgz
ODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAg
IH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0
aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBt
X2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAg
ICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01
MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0
ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBz
aXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAg
IGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1
cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApp
bmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3OTA1Li5jN2QxOGJlMWQ2
YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0MTEsMTMgQEAgdWludDY0X3Qg
Rm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5
dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykg
ewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+Pihl
bGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjph
c0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3
MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xh
c3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAt
MjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50
PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVj
dG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFz
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBh
bHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4
ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNs
aWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZm
MDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1
ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2Uo
cmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAg
LCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZl
QnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVp
bnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxs
ZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RT
eW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0
YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwog
ICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZ
ZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7
CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92
ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdl
JiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXpl
KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSBy
YW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0
IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9h
ZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBs
ZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExl
bmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZm
ZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAg
YXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tE
YXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBb
dGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFz
a0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2
ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6
ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIg
eyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlm
IChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQog
ICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0
ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21l
RGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBi
eXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21E
YXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAg
IHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1
dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1
dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAg
aWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0
aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpp
bmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhh
YTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsK
ICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0
YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5z
RGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdl
dCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlm
IChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpk
YXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBi
YmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFh
ZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5k
KQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9y
ZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7
IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENv
bXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0
IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAg
ICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1f
YnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIz
NCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQo
KQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFy
dGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAv
LyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFz
dFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQ
YXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBs
YXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBh
cnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRo
YXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0
YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFy
eVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5
M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVE
YXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1f
ZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxS
ZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5l
ZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEo
bV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9o
YW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNs
aWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBt
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZh
NDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAg
ICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xv
YmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFt
ZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgog
ICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9
IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRl
U3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAg
ICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwog
ICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdy
aXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0
NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVk
NWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRC
dWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
dWx0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdP
UkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBs
YXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFk
KTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhh
bmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVz
VG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxl
ICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExh
c3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4u
NjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlm
ICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
QXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcg
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFy
cmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAog
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkp
OwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmlu
Z1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIs
NyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBy
ZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNv
bnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4
IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3
YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0
QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjpl
bXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1w
dHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07
CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRh
dGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5n
KCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25l
U2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZp
bGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVT
ZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAg
ICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2Yz
Nzk2YjcxYTA0MzEzNGM2NjQ2Li5kMWE3N2I1OGI2NDRhOTBiOTA0ZWZkYzFmZWJjNmMwNjc0NGY5
MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwx
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVk
QnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIFNo
YXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7
IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3Jp
cHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgp
KSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVm
ZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0Lgor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBl
bmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXIm
LCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVk
NjQwZDA0ZDRiZDQ1Li5lNWYzNDliNDgyNzQ2ZjllZGI5YzVmNjMxYmZhZDRiNDE5OThiYTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQog
ICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisg
ICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQog
CkBAIC03OCw5ICs3OSwxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYg
KCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xv
YWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwot
ICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAg
ICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7
CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBl
bmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5m
cmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRy
dWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjIsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBt
X2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3
ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDliYjUxMDI2ZjU4M2EwOWIx
ODQ3YTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlv
bnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1
Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7
IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGlu
ZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYm
IG1fZGF0YS0+aXNOdWxsKCk7IH0KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0
ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsg
bnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRl
eHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUy
NDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NS
ZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+
LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNs
aWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAg
ICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsK
ICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5
YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0
NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsx
MjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQg
aGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZi
ZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3
IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1f
cmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9u
c2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkK
KyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwg
bV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQp
CiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEg
ZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5l
ZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29u
dGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShG
aW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0
L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5
cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5
cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhv
dXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xl
YXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwog
ICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0g
bnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxp
ZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4x
NjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAg
Y2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRl
cjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdC
dWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYz
MzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcs
NyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAog
ICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVz
dEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxD
YWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1
ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4
IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5
OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQs
NyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1
cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcy
Li5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRh
dGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dy
aXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1
dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9
LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1
MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uNTRkYzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5
MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNo
cm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlm
IChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVu
ZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZl
ci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEw
NSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2Fk
OjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsg
V1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0K
KyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVy
ZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZl
cmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVy
RmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0Vu
YWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAg
ICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5n
VGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAg
IGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMg
cGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQog
ICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxv
YWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgp
KSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4
aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVy
aW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVm
ZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hy
b25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBp
ZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsK
IAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFs
aWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8v
IDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNh
Y2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2Fj
aGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAg
IGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJ
WE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUg
cmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1
ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9
IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQo
KTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYK
IAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVz
dCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2
YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAg
ICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZl
cigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3Jr
TG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJU
KG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7
CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9y
aW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50
cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZl
dGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBM
T0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGlu
IHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCku
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jl
c3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBz
ZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9S
RUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBk
aXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xv
YWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1f
Y2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1d
KGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VS
Q0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDcz
MDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBk
ZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNz
IEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVj
dENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+
IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0Nh
Y2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5
MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3Y2Jk
YTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
CiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdU
Rk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9k
eUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcx
ZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+Owog
ICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcg
Qm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9y
Qm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRj
MTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVh
MmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAg
ICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAg
ICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4
N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0
MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBA
QCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYg
cmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNo
T24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAg
IH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
fSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9Owog
ICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3
Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6
OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNl
Qm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCks
IHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3Rv
cmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYz
NTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAt
MTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJl
Y29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAg
ICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlm
IChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsK
KyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwg
eyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRm
NDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZmU3NTljZWRhMmQ3YmQyZWFlODc4
OTk3ODNlZmYzMzk5MmE3M2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cApAQCAtNDYsNyArNDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNo
ZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNo
ZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5
KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNo
ZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEw
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVk
UmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlm
ICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFt
aW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0g
MTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0g
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM4LDExICsxMzcsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikKIHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRC
b2R5KSB7IH0pOworICAgIGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLmlzTnVsbCgpKSB7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1f
b3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgp
LCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0
aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVu
dHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5
KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeSht
X29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtl
KCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42
NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBs
ZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1
YWQ4ZjBiNzgwN2Q3NDE3MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5
MWQzMWNhOWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFV
UkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52
YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShy
ZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0
ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVh
bV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEu
LjExN2JjMTdjMzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRl
eCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEwYzdi
YjZkMTU4ZjQxMzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgogICAg
IFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+KCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAg
ICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAg
IDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAg
ICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
OyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAog
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
QnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2
OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJi
NmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00
OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7
CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJi
NWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5
MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3
IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsx
NTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5
dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7Cisg
ICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0
NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5
MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNo
aXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJl
c291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZl
UmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJ
OjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7
CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2Vk
IGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJl
dGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUw
Y2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODcz
YTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhl
IGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQg
d2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgp
LCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRG
YWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNv
ZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2
YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJU
cmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29k
ZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250
ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApp
bmRleCBjNjk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3
MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhh
bmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVh
YmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJl
dHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFi
bGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAg
ICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
aAppbmRleCBkYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1
NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6
RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7
CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxl
UmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBz
aXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZm
ZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAzNDA1
NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZv
aWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBp
c051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBp
cGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcg
KzI0MCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRh
dGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0
YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVy
LCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0
YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBB
U1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9
IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIg
PDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5y
ZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5
LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNo
T24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25h
bDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNT
aGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5y
ZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92
ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZN
b3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcg
KzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51
bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29k
ZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3Rk
OjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJl
YWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEz
M2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0
LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNs
YXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNv
ZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJm
YWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0
ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21E
YXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0
YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAg
ICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAK
aW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAx
ZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVm
PEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0Ny
ZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1
ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFj
ZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBk
M2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURh
dGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBj
b25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYp
Cit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5k
ZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdk
ZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxl
V3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAg
LTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9v
bCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5n
SW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNv
bnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
aW5kZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFj
OTA0MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAs
NyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1
bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4m
IGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVp
bnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEz
MzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojpp
c0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBw
ZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+Zmls
ZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJp
YWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2ht
ZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYz
NDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0g
KHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhp
Z2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdo
dC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0Fw
cEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tI
aWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hs
aWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdH
cm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZp
ZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhp
Z2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNw
cAppbmRleCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFh
NDE3YjUxZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3
IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0
a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAg
IGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0
aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAg
ICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAg
bV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFl
NjQ1OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBA
IC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2
aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwor
ICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdh
dGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBj
Yjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRl
MDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoK
ICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBz
ZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpX
ZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2Ut
PmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4
OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4Omld
XTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJp
bmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRp
dGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZm
ZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRl
RGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2Ut
PnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5
cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0
aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFn
ZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0
aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQs
NyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVS
ZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRG
b3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBh
c3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50
aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmRE
YXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2
OTJhODI0MDkyOC4uNTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBi
b29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRp
b25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9z
aXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFw
SWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIwNDUzOWQ2MDA1ZDU0M2JjNjJmYjg5MDU5OTY0Njg5
MzJhMzNlOTIuLmYzYWQ1NzZiMzMzYTkzMjk1MDA2M2Y3YTNhOTRjZjU3NzNiNDJjNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc5LDcgKzExNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtl
Rmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RS
ZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi41ODU0
N2Q4NDg4MWRjODMwZjY5NjlhMGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxT
Y2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIs
IFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1
ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShw
YXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFz
azo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlv
blR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAg
ICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1v
dmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEy
ICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVl
OwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNE
YXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBzaXpl
ID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsg
bV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAg
ICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZN
b3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxl
dGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwg
ZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4u
YjA3YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJ
IHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21w
bGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fc3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1
ZDU2ZTA2NzhjMzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5
NjdhYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25E
aWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2
b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFn
ZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1Bv
bGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9y
c1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5
ZjBhMTAyNTA4Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpA
QCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRp
b25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVu
dFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFn
ZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdl
QnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdl
RGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBO
VUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFhODFjY2U0NDU1ZWIxYTcyYjEwZThmMjQ3M2M2MGEy
OTFlYTU4YmEuLjBjNjI1YzMwZDMwM2ZiZDk4NDliODRiNmU3YWFmYTM0Y2Y3YzM0OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9u
Rm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBO
U0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0
ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkg
aW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0
b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAg
aWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZl
ci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAg
ICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTksNyArNjU5OSw3IEBAIHN0YXRpYyBC
T09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFz
dGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBv
cmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTcwLDcgKzc1
NzAsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5H
KCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBh
IHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5m
aWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFn
ZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsg
eyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1h
Z2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hl
ZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9W
aWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0
OWRhNDY3Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1NWFh
MDdkYjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5
OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CmluZGV4IGUwM2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLmE3ZmI0YWFi
Y2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmlu
ZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVy
biB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
IHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmlu
ZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5
Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2Rl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNp
bXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0
IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMy
MDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2Fi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBA
IC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRp
bmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRp
dGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktp
dDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2
NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVn
SW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlU
eXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFG
b3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAg
ICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAg
ICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0
ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlw
ZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAg
ICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4
ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0
ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxs
V3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2Up
LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYg
cGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAg
IGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJy
YXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2Um
IHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmlu
ZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5
cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBp
dGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUw
ZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdl
YlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAg
ICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJh
Z21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNN
b3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMu
LmUwMDZjNDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3Qo
V2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVy
KHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5
IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwg
Y29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIs
OCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRE
YXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0
YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+
cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChj
b25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwg
Y29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWRE
YXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgp
KSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRv
VVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYz
NzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZv
aWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6
TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsK
IAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+
ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4u
ZGRkNDljNDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAog
ICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxl
IGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2Fh
YWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIw
ZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3Jr
UmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2Un
dmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJj
ZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkp
KSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRl
cmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9h
ZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVk
ZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkxZWNmNGRmNDYxNTg1MmEw
MjA4N2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQ
bHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAg
ICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFy
YW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZp
cmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBA
IC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxT
dHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywg
bGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lk
IFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3Rh
dGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFt
RXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVy
ZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAg
ICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51
YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJl
YW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5n
ZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQw
LDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51
YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAg
Ly8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAg
aWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVy
ID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwot
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4
ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0
NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3Zl
IHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMg
c25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4g
cnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3Ry
YW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2
ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAg
ICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3Bv
bnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVk
QnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAg
ICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwg
W3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURh
dGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVp
bGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwog
ICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9
LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4
NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
d2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0g
ICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1
ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBt
X2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgx
ZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAy
MzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUs
NyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdl
KTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywg
cGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3
Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1
YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBm
aW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJD
b3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3Jl
OjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMy
YWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5p
c2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEg
PSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5k
YXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSht
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUo
KSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJl
c3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBl
Y2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uNmYzZjU2NmM1MmYxZTM5ZGVmMDBiNWYzMTlmZWJh
ZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwx
MiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdl
SWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUg
b3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAo
V2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERh
dGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVm
ZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJp
ZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdp
bmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMzI0LDcgKzMyNCw3IEBAIFZlY3Rv
cjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29w
eSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1J
bmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAg
cmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4
LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
OjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRl
eCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4zZmYzNTU4MDhlMWQ2
ZWIyYWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
aW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0
cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBA
IC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBW
ZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVh
ckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRp
ZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVS
TCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc2
YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRp
IHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5j
bGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1f
YnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDky
Y2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5hZTA1MGE5OTIzZWE3ZWY5NTU1
Y2JhMTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTU0LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJp
bmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0g
ICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5
NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJj
ODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6
ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1l
bW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAt
MTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAg
IGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNo
aXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0Rh
dGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAg
ICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJk
NGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3MmMy
Y2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJGcmFtZTo6
c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
ID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNv
dXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+
ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWlu
UmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEt
PnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNvbnN0
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAz
ZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2
Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigp
LmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4
ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODll
NDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4
LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVl
bihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRf
V0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5
LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVl
bihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1
NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4
LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQog
ICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZm
ZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1Zjdj
MWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4
NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVy
biBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNl
OWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAg
ICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
IHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYx
ZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5
YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIK
ICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcg
KzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5
cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1
MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMs
NyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVz
ZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3
NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2Uw
ZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAo
Qk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7
CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAot
ICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRh
U291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1
dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExv
YWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hp
dmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1
OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5
NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3Jl
YXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBp
ZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAg
ICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0
aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXIt
PnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQo
KV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYTAxMWIy
NzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQp
ZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNl
ID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEg
PSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBu
aWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAq
ZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAg
IAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2Ut
PnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAg
ICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1l
TmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJj
ZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtl
bmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVL
ZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJl
c291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRh
ICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRl
TlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilf
c3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsK
ICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVy
biBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEg
PyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUo
KSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
bnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2Ix
ZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQy
M2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0
cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFt
Ojp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0
cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVh
bT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShi
dWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0
cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJh
N2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5
YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1Ymxp
YyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091
dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90
IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUx
YTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3
IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBz
dHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3Ry
ZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2My
ZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNm
MjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+
JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5
ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUx
MjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25D
aGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQw
NzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVm
NDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRh
dGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIp
CiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8o
c3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFt
KTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0
cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgy
MzE5YjUuLjZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZy
YW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWlt
ZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3Ry
ZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1l
LCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAg
IFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRG
TEFHX05PTkFNRSkpKSB7CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjps
b2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8g
QlNUUgogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdv
dWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAg
ICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBp
ZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVM
T05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1
ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFC
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVU
eXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJl
ZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIp
OwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZm
Y2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldl
YlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7
CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0
cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3Zl
KGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2
ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVl
NGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5o
CkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElX
ZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk0NWVhZWI4MjMzMTk4ODczYzI2NDA0MTVhNzgwNjEy
YTZiZDg3NDkuLjkyYjdkMjU1MWM3OWFlNTFlOTkyMmY0Y2I0M2Y1ODBkOGM2ZDc1NTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3Vv
dXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1t
dXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDIgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFtHVEtdIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCBpbiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2
OC4uMjIwYTM4MDA3ODIzMWE1ZGI1MzRlNzQzMGRjZDhlNzdjZDBmMDc3ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQzLDUyICs0Myw0NSBAQCBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
Zk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2Zp
bGUiKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2Zp
bGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQ
RUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0
eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZm
ZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
LX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
LSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAg
RVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5k
YXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAg
RVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywg
YnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEy
W10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEw
LCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJs
ZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVz
dERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIu
Z2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVu
YXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBl
Y3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEo
KSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMSwxMCArMTA0LDEwIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBV
ICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlu
dCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpA
QCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAg
Im1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0
aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAg
ICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3Vs
dXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNo
YXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgx
MDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1
ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0
YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNs
b25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAg
ICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBF
WFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10g
PSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBi
dWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8v
IFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgp
LCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVp
bGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWls
ZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tC
dWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBj
aGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCArMjA0LDcwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
cioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rv
cjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsn
aScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJj
ZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1
dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0g
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAg
IGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2Qu
ZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCks
IGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUo
KSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAg
IGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVj
a0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJj
ZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVm
ZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWpr
bC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNp
emUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUo
KSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6
ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewog
ICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRl
bnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNv
bnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29u
dGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAg
ICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9
fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2Qn
IH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0g
ICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkp
OwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
JywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtl
QnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7
Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30s
IHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBF
WFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdk
JywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1ha2VC
dWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZm
ZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAg
IEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEs
IDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwot
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVm
ZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhT
dHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5j
bGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2Uo
KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKQEAgLTI0
OSwxNiArMjg4LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNp
bXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
ci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAw
dSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEo
c2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwor
ICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBj
aGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVl
YzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8
TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIu
ZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0Rh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChj
b25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXIt
PmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVs
bG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVk
RGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhw
ZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAg
ICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVy
LmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRl
TlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAg
ICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7
Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOwor
ICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAg
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlv
bik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0
YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAg
ICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAg
ICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhw
ZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0Rh
dGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdF
bmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445709</attachid>
            <date>2021-12-02 04:35:28 -0800</date>
            <delta_ts>2021-12-03 03:05:55 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211202233525.patch</filename>
            <type>text/plain</type>
            <size>508573</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyYmViMDM3Y2Q2MTZm
NDU4NTVhNzFmNmE3OTBlOTFjZGNlNDk4NC4uODA1MTAyZjYxYzVlYWQ0OTMwZjhhMmI4NDIyYjg2
OWFkYTEyYThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVu
dExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBj
YWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0
ZW5lZCwKKyAgICAgICAgYW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVk
LiBUaGlzIHdhcyBhbiB1bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdl
IGludHJvZHVjZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0
cyBjb250ZW50IGlzIG1hZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBB
bGwgbWV0aG9kcyB0aGF0IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJl
aW5nIGZsYXR0ZW5lZCBhcmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZl
ci4KKworICAgICAgICBBcmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRl
ZCB3aXRoIGEgc2luZ2xlIHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIg
d291bGQgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAg
ICBhbmQgb25seSB3aGVuIHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93
aW5nIHRoaXMgY2hhbmdlCisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkg
ZG9uZSB0aHJvdWdoIGEgY2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252
ZXJzaW9uIGlzIGEgbm8tb3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2Fz
IGFscmVhZHkKKyAgICAgICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRo
IHRoZSBuYXR1cmUgb2YgYSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5
IG11bHRpcGxlCisgICAgICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51
bWJlciBvZiBjb252ZXJzaW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRv
IGF2b2lkIHJlZHVuZGFuY3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2
ZSBvY2N1cmVkLCB0aGUgU2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAg
IHRyYWNlZCBiYWNrIGFuZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3Vz
IHRoZW4uCisgICAgICAgIEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIg
ZmxhdHRlbmluZyBvcGVyYXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVu
IGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFz
ZSBvZiB0ZW1wb3JhcnkgbWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyIGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAg
ICAgIFdoaWxlIHRoZSBjaGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBt
b2RpZmllZCBhcmVhcyBpcyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVk
IHJlZ3Jlc3Npb25zIHVubGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVk
QnVmZmVyIHdpbGwgYmUgbWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4
aXN0aW5nIHRlc3RzLiBOZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0
aFJlc3BvbnNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNv
bGF0ZWRSZXNwb25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNv
cHlSZXNwb25zZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJD
b3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
Ym9keUFzRm9ybURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc1RleHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1l
RGF0YUJ5Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURh
dGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBw
SGlnaGxpZ2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRS
YW5nZURhdGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5n
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hl
Y2tlZFB1dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmVi
aW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9k
ZWxMb2FkZXJVU0QubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6
OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRh
Y2htZW50SW5mbyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1
dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5S
VEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1M
Q29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBw
ZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZE
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICog
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRU
ZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRl
Y29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZp
bHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3Vy
Y2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVm
bGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Z01hbmlmZXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFj
a1N5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxl
U2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25z
dCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
VkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVC
YWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAg
ICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpz
ZXJpYWxpemVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRk
SW1hZ2VUb1Jlc291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAg
ICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omlz
RW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3Vv
dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0No
YXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2Rl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQ
dHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0
ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFRJRkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZl
ckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckdsaWI6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6
CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdP
RkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6Oklt
YWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5
dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VE
ZWNvZGVyQ0cpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1
c2hFbmNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBo
QXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2Vt
Ymx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50
czo6bWF0aEdseXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNQVRIVGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6VGFibGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpU
YWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0
aXR1dGlvblN1YlRhYmxlOjpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TG9va3VwVGFibGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVy
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1
bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0
OjpzY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6
OmRlZmF1bHRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlw
dExpc3Q6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpHU1VCVGFibGU6OnNjcmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OkdTVUJUYWJsZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6R1NVQlRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBF
R0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFu
ZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNv
dXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRs
ZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9E
b3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUds
b2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERy
b3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6Cisg
ICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTEyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2aWdhdGlvblByZWxv
YWRNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkYWUzNDBmNTI4NDhhYjkzODZiZWE3NDJlYTJkMjU0N2I1
NzlmZjkuLjMzZTE4ZjNiZGVmZDk3ZDQ5NzQxNWIwNmVkYmNiYjM1ZDVlNGIwMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTc4IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAg
ICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1
Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWls
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggODZlNWQ5OTU4YzY1MmE1YWYzZjc4NWMwNWI1NTA0MjNh
YmZlMTBhMy4uOGMzODMyZTRjZDBhYjNlNTMxYTYwNzJhNWJmNzExODJjMDhkNGY4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3Vt
ZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06
CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
V2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVd
KToKKwogMjAyMS0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZ3Jlc3Npb24ocjI4MzkxMikgQnJva2UgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3Ig
U3dpZnQgYmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2Ew
MTBjZGQ4NzBmMGE1YzY3ZDIxMzk2OTY2YmI2MGFjLi43OGMzODU2YzE5ZWM0ZWQ5MGNmOGM0ZjNh
YzU4NDU3ZjkzZWNkMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzcgQEAKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5
MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3Bw
OgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5
U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAg
ICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJl
c291cmNlLmg6CisKIDIwMjEtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBVc2UgT2JqZWN0SWRlbnRpZmllciBmb3IgQVhJRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBk
MDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3
OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXpl
RGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAg
ICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6Omdl
dDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNl
ODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0Ns
aXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJ
SW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3Vs
dCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXgg
YjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkw
ODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBl
ID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAg
ICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNv
bnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24g
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1h
Z2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJl
c2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7
IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5Nzlm
YjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAg
dWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3Qg
UmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXpl
KGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0
Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lk
IERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJl
Y29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQo
cmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9u
c2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNr
SGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
cmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRs
ZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRC
dWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAgdm9p
ZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5h
ZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsK
KyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQ
b3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCku
ZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJl
cXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAg
ICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFz
ZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAg
ICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQot
ICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5n
ZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9y
PHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICszNzUs
NyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNw
b25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlS
ZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNl
LmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBy
ZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVk
QnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0
aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4
Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8
RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAg
ICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApp
bmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNl
ZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0
aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNl
RGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVm
PEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApp
bmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJk
YWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3Bv
bnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYg
Zm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNv
bGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
LT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0s
IFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1No
YXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAg
fSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICBy
ZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIs
NyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VC
b2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
Zm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBi
dWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkg
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmlu
ZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThh
M2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNv
bnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBS
ZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkm
KTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5
YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcy
MTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tl
eWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVk
LW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBp
ZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hT
dHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
ICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAg
IENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3
OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0Y2go
Y29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0byBs
ZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRh
KCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlhS2V5
U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsxMDMs
NyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBidWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+
c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJz
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAgIHJl
dHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0
dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXgg
MmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4MDc0
YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25l
ciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJl
ZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9j
b25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5
cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29u
dGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9h
ZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRy
PEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNG
b3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0
YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAg
ICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBG
ZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURh
dGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpA
QCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtl
KCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2Rl
KHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2Rl
KHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlz
VVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShV
VEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFt
c0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAg
ICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBh
cnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZl
ckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlm
IChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZm
ZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNiNzcx
YjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2Nl
ODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2lu
ZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAog
ICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBX
VEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3
OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBt
X2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9z
aW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYs
MTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAg
ICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1No
YXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9T
aGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRh
ID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RG
TW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAg
YXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBh
Y2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAo
YXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJ
bnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVy
KSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXpl
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1fYnVm
ZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewotICAg
IHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkK
QEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZl
ciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZl
ci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpA
QCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9
IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQs
IFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEo
Y29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsK
IH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICsz
NjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICgh
bV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBt
X2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9z
b3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAg
ICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhj
ZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2
MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAt
NTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1
ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQg
c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVm
ZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAg
ICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJl
ZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9T
aGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9z
b3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0Mzky
YTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0
YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsg
eyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3Vt
ZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAg
ICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0g
ICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlz
XShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYg
KGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAg
ICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNm
NmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2YWVi
NTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRh
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAg
IFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9u
c2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3
ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2
YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxp
Z2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hs
aWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAK
ICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFl
NDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0
YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBA
QCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgz
MjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJh
bmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRv
IGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25h
bDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAg
IHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1
ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEy
ZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3Ry
aW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRo
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rl
cjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVL
ZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0
YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1
aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3
YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURh
dGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAw
YWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2Zj
NTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRF
eGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FM
aXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9u
LmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsx
MTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEg
bm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBu
ZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJB
dHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2Fj
dGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9i
ID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRo
QmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5
UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGlu
ZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsK
KyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAt
MTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hl
Y2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJ
bmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
IC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4
S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7Cisg
ICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwog
ICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
aW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEs
NyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5P
YmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlv
biB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3Rz
dG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0x
NzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJl
Y29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5z
YWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVT
RURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVt
b3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBm
cm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkg
dHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3Jl
ZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9i
amVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNO
dWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAg
ICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICgh
bG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAg
ICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVw
cGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9z
IH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAg
QVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6
Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxv
b2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRl
eCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93
ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
bG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAg
ICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURC
S2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBh
dXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYg
KCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
dXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApp
bmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNh
MTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApA
QCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1
dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAg
aWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIp
ICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vy
c29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
MTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5k
ZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYg
KG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1
ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQg
aWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdi
OTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRi
YjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1Nl
bmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3Nh
Z2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YSht
X3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCks
IG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRh
KG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5k
aW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2Ux
MTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0
YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMp
IHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRh
KSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZd
KFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRh
KHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUw
Li42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3Vy
Y2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUg
PSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9p
ZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7
CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9y
ZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAog
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9p
ZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWls
ZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9k
YXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
CiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2Rl
bDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlw
ZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRh
LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVz
b3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVu
ZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2MzQ5
YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBt
X3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
bV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVu
aXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29t
cGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVT
RC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAz
ZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVr
aXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2Rl
bFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lz
dGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQg
PSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkp
OwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5
NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBz
dGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0
YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRl
RE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAg
IH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1
Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFl
YTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYm
ICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAg
ICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNp
emUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAg
ICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNo
ZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7
CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3Ry
aW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1
b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAg
IG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZl
cjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxl
IFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQu
LjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAg
ICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4o
Km1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlm
IChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAg
ICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVy
YXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90
ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3Ry
aW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBl
bHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVk
aWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsK
LSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1l
ZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9
IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCks
IHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJi
MjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEw
ODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NT
Rm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0
Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdG
b250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5n
czxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAg
ICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3Rl
IGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250
TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBw
b2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmll
dz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgy
MDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNo
bWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlw
ZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAg
ICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVm
OThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZl
UmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFu
ZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsK
K2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFz
cyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyAr
NTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQo
Tm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3Rh
bmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50
SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91
dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8
U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZh
dGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5n
ZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Vs
ZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rp
b25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVz
ZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
KTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNl
bmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIz
NTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5
MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBp
ZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5
MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVk
aXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZClj
dEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JB
dHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAg
aWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZl
ZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGlu
ZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRy
aWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwog
fQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcs
NyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9y
OjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdl
U2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBA
IHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVt
ZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChh
dXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAg
ICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAg
ICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwor
ICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdy
aXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRh
LnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVj
dGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJh
d0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsK
IH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRy
YW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1
c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlz
aWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmlu
ZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVz
OkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJp
bmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRl
czpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQog
ewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5
NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJk
ZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6
X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJP
T0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1
cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9o
dG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3Vn
Z2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERv
Y3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAg
ICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+
c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNw
b25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8
ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBl
KCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVy
PiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7
CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1
dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1
NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMx
NzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsK
ICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0g
ICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50Owog
ICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVu
dHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0
dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
LmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBl
KCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwog
ICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9i
amVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50
RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5h
bWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
LmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0K
IAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00
NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0
cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dN
SU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1
cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkp
LCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgp
IH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBt
YXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAt
NDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShG
cmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hv
dWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJp
bmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFt
ZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUg
c3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3Vi
ZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlv
bkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5T
aG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJj
ZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRk
UmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdz
KCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAg
ICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcg
QEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7
CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2
Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2
LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlv
blBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVs
ZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhp
cyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0
aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5
IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9y
dCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEu
LjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAg
dm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNv
bnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNz
RmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3Rv
cnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVz
dWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdz
JiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAg
TE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBz
dGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIq
IHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1l
bnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVh
ZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBj
b3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERv
Y3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVy
IHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJk
NGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0
ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8v
IDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1f
cmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBt
X2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQog
CkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNT
RVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUo
KTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVy
LT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4
MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmlj
dENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRh
QnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0g
ICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5n
dGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxl
bmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAK
IHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFU
b0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBk
YXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2Rh
dGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0
aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jh
c2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1f
Y29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0g
ICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZl
ciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRh
TGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcu
LmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VU
aW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQog
Ci0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVm
ZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFz
RGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAg
ICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2ln
bmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVU
eXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5m
bz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJl
c291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZi
YzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1
NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAg
IGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIo
cmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1l
KCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpy
ZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0g
dHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0
cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3
ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAw
M2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9v
bCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsK
KyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5l
bmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0
YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhC
YXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRh
Q29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRj
MGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVh
MjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0
YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNl
QnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0
NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJl
c291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZs
aWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZl
cnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRl
ci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
cHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNk
ODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5Mjgw
NmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1h
eWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZl
KTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFp
blJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNo
aXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEg
PSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0
TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUt
PmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJj
aGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVy
biB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBh
cnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2Vk
QXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxv
YWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsK
LSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUo
KSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXgg
ZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3
MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsK
QEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRB
bGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJj
aGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVE
YXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2No
ZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxB
cmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNo
aXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNo
aXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50
S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3
YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcu
bWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
LnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFh
MzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5
ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAg
LTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNl
bGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQog
ICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmlu
YWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVz
Rm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lk
IGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0
KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2
MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3
NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVl
c3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0p
OwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9m
cmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6
Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5
KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDks
NyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1
ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1Jl
cXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAg
ICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAg
ICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxv
YWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChp
c1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9h
ZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYw
OTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2Fj
aGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwog
Y2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdy
YXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03
Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3Mg
Q2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlv
bihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJl
clBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3
RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsg
fSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9
IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6
Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEwZGY4
MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9h
ZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBt
X2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIo
KS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7
IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxv
d0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwg
bV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAK
LSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0
KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAt
MzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBh
bnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNl
RGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2
b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAt
MzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRp
b25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZm
ZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYg
KGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURh
dGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5h
cHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxv
YWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEt
PmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0
YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+
Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVz
b3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29y
a2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxk
IGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMu
c2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYm
IG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURh
dGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwor
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5n
dGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRl
ZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBA
IC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBM
ZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVm
Q291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7
CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNv
dXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEo
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpA
QCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJl
ZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNi
OWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIy
ZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0
YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3
MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZm
ZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVm
ZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9
KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsg
bV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRh
LmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEu
Y29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
CkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4Nzhh
ZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFm
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5p
ZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2Yg
IkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1h
bmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBw
bGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFy
dCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgz
NzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFh
MjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVS
TCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgp
CiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGll
bnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVy
IHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3Vy
Y2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
Citib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExv
YWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3
OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRh
KQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGly
ZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNh
cHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQs
CiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUg
dXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBj
YWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3
MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEw
NCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNr
Rm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNh
OWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNl
KCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGln
dW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1
bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1
MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0Mzdm
NDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQz
MGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2ln
bmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/
KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlz
RW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAg
ICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVt
ZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0
ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQo
KSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQo
KSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAK
ICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3Jp
dGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRo
ZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQK
ICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
IHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAK
ICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBp
bnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAg
ICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2Io
NikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29s
dW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBk
ZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2RmOGQ5
ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0
eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVtcHR5
LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBhdXRv
JiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHBy
b3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5j
cmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVSTCBj
YW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50
YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBmb3Ig
dGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIGlm
IChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50
YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25z
ZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShD
RkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRh
LCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VSZXNw
b25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9uS2V5
KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJRChy
ZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAg
ICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNl
IHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCBy
ZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVByb3Bl
cnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
KTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAg
IGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBD
RkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
UHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxp
c3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5E
RUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAg
ICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwg
TGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNl
RGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFp
biByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAg
LTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBz
dWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAg
ICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
ICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qo
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZy
YW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1
YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3
IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
SW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1h
cmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9u
c2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25z
ZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAg
ICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJh
bWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICBy
ZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1
bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhl
ciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3du
KS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9c
IiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVp
Z2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYx
YjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjQwMjViOTgwZTVlZTY4MmRi
MDc2MmFmYTg2ZWNhOWQ5MmZlODU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1F
SGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0Vt
cHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNv
bnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRh
cnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlm
IChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6Qmlu
YXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAg
ICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50
LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUo
cGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIu
cGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFk
ZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5h
c2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxp
bmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51
dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
KGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFBy
aW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRo
ZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMg
dGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5l
cy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAg
ICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAog
ICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0Nv
bnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1p
bWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRl
cjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29u
dGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRh
ID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250
ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBM
T0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXIm
IG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6
OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShj
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5C
aXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNv
ZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBo
ZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgog
ICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmly
ZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQu
LjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAKQEAgLTQwLDEyICs0MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQog
Ci12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
aAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1
ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9u
TWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1
bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNv
ZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNv
ZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZh
N2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2
NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0
cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWlt
ZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAg
ICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAg
YW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05Nywx
MyArOTcsMTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29u
c3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVl
dCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0
IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNr
Tm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRo
ZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBh
cm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxp
a2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2Vu
ZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5k
MzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNv
dXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNl
MjcxZDA3NzYzM2FlOTQuLmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEw
ICs2NCwxNSBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xp
ZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRh
dGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAw
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3Mp
OwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUlu
Q29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigp
LnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEp
IHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1
cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEo
U2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29s
JiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRl
cywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAg
ICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVz
IH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIp
OwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZm
ZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2
b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7
CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRz
KTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkK
ICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVj
NGJlZjQyMTAuLjE1NGRiOGNiYWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYs
IGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZv
bnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBi
b29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRp
b25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBG
b250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRl
eHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRh
KTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9u
KCkgY29uc3Q7CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9U
T19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNo
ZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIx
NTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2
MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZElt
YWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAot
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAg
Y3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6
c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRh
dGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6
OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7
Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1
cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlm
ICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVS
UykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6
OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3Vs
ZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZl
cnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01
NTMsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdl
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3
IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0
aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdl
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAz
ZjQuLmQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxh
dGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAg
ZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJv
b2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFn
ZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAg
IHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQg
dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNo
YXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5
MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRj
NjQ4MDQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwog
ICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5l
c3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExv
YWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1f
ZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6
ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRh
U2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBX
ZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBj
YWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3
LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmlu
Z1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
OwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewot
ICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5v
dGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3Jl
bWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAg
ICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlm
IChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRh
dGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5
Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUx
LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmlu
YWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpA
QCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENy
YXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRG
aW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6
Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmlu
ZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmNmNGYwMmM1ZDc0
MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAg
QVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmlj
cyk7CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRp
bWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVy
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0
dXJuOwpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VF
bmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBu
ZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBt
X2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9
OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUz
YzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVm
OTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9p
ZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VF
cnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAg
LTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAg
ICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJl
Y2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsy
ODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVz
VG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQq
PiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmln
aW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAg
ICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0
aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3
MDZhMGIxYjMzMWYyYzgzOS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNv
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9
CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1
bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVu
dCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51
cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50
LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRk
Mzk2Mjk1YzUzZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0
YzMwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVu
dD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4
IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEy
ZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdG
b250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAK
ICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNj
b3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+
c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVu
dChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3
RXJyb3IoKTsKICAgICAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9u
dDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAg
ICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1v
dGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252
ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50
KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZv
bnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250
LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmlu
ZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0
MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNW
R0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZv
bnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxT
VkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50
OwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4
NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3
MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhh
c2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5
MjRiODRjYTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFh
YWRhOTcwNjlkOWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4u
NTQyNjZkZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwx
MCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJh
Y2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBA
IC01MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNh
Y2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0
YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNl
YjIyYzc3MTM4YjkxNTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2
ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5o
CkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5
UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3
OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0
ZTdjYzllYTM5ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRY
U0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5j
b2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgK
aW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2
Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNv
ZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVy
LmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0
cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRv
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLmgKaW5kZXggY2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAy
MGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcg
KzMyLDE3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNo
ZU1vbml0b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0
b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZik7CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXIm
KTsKKyAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5
MDNiZWY5Mzk0ODFjMjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQz
ZDI4MWM1MmE0ODQwNjlkZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRy
eSB0byB3YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3Jn
ZXQgdGhlIHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1l
b3V0ID0gMjA7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdl
dEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZV
UkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQog
ewogICAgIGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShj
YWNoZWRSZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1v
bml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYgY2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRv
cjo6RGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6
U2Vzc2lvbkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxs
QmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25p
dG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmls
ZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5n
bGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklE
KTsKICAgICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3
ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBj
bGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRl
IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC03MCw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRl
cj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xp
ZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291
cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdE
YXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3Bv
bnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1
NzM0Li41MmZmZDUzN2JmZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1NzA2MmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlk
U3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+
Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRl
ci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVy
dGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9
OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRl
UGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVn
YWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIo
UHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVT
RUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9v
cmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxl
Z2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5
UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQ
cmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVu
dCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1f
Y29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVy
IH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFt
ZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQ
cmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2
MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZj
Y2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05
Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRl
c0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1
YzYzMmQ5ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJpbmcm
IFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFw
cGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAg
ICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBp
cyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhh
cHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRo
KTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUy
MGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEuLmQ3NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQy
Y2RlODA0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZy
YW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0
b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXpl
ZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsg
dXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
IH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1J
TUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5j
b2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNv
dXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAt
MjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFu
ZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4dEVu
Y29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJU
KHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1
cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29k
ZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7
CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3Ry
aW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVz
b3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVu
ZGVyRWxlbWVudCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRh
dGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCku
bWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJM
cy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZm
M2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5
ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAg
ICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNv
dXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQy
OWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2Ni
MjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3Qg
U2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQw
ODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1
OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRl
ci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVh
ZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9j
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwog
fQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1
IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgs
IGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVM
b2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3Rmls
ZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBm
aWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmls
ZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVh
ZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsK
ICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0p
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVm
ODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhh
NTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3
ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTcz
NTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJh
Z0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJv
YXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50
KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZv
cm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+
IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0
YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRh
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpA
QCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hp
dmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAh
UExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xp
ZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwor
ICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAj
ZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXpl
OwpAQCAtMzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENs
aXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVz
LCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0
Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0
aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9y
VHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0
IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRl
eHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdh
ZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJp
bmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9t
RGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1
c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZl
clNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNv
ZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0
b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNv
ZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1
c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
aAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNl
YzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2
MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsg
bV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVi
b2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZy
b21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAg
IFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJh
ZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFm
OGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENv
bG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250
ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpA
QCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlw
ZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmco
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRl
bUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9h
cmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4g
dHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYg
Ly8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0
ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmlu
YWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21h
cnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3Jt
YXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAg
ICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9y
bWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAg
ICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNs
aWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERh
dGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVu
dERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEy
ZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcs
MTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBz
dHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVj
dCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRU
eXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUs
IEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3Ry
aW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkz
LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3Qg
UGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0
cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRs
ZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2Rm
NzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5
ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJl
dmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZp
ZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZv
aWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIs
NyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29u
dmVydGluZygqdGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBo
YXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNl
aXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2
aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7
CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNs
aWVudCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJi
Li4wNmI3NmY1OTg1MTgyYjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVu
dDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBA
QCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJv
cjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBt
X3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYz
Zjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9t
aXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAt
MzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAog
ICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
ZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uYmJlMzkyM2EyMDdhMGU5
MzYxMTczMDc0Zjk3NjA3ZmFkMDU4N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXpl
KGZpbGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikK
ICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9
KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVS
KQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRC
dWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1f
c2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRC
dWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBt
YXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNl
RmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAg
ICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFw
cGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNz
KQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGlj
IFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVm
ZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VS
VF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMg
dG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBp
bnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFy
ZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRz
LnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQor
ICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
Pihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50
cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigp
KTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50
cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAg
IEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNv
bnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21i
aW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEo
KSBjb25zdApAQCAtMTgxLDYgKzE1NiwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0
cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAor
c2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsK
K30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAh
c2l6ZSgpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBAIC0yMDIsMTAgKzE5Miw5IEBAIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFT
U0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5y
ZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAg
ICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50
LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6
ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1l
bnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7CkBAIC0yMTMsMjMgKzIwMiwyNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAg
ICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21f
c2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3Ip
KSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7
CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5k
KHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIo
KQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3Np
emU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21l
bnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykK
LSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2lu
UG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1f
c2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50
LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVy
biBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVm
ZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21l
bnRzOwpAQCAtMzU1LDggKzM0Miw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wg
U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVn
aW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1
cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0z
NzIsNyArMzU4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgp
IGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJl
ZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUo
KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAg
bV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7
CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1
b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNp
emUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0u
c2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkK
K3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBl
ZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBp
ZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAg
ICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNz
KTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQor
Citjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sK
KyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hh
ciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0
IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDcg
KzQyNyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEo
KSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7
CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxl
RGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0MzgsNyBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2Vu
ZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkg
Y29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29s
IFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAg
IGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAt
NDc1LDcgKzUxMSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkg
Y29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwog
fQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2Vn
bWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6
U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBw
b3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDog
bV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVu
dChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9z
ZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYgKzUzNSwy
MSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0No
YXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVy
IHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9
LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9Cisg
ICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwg
dGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKQEAgLTUzNCw3ICs1NzUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlh
ZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2
MjZmY2Q1ZTMzNWM1M2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC02MiwxNDYgKzYyLDEzMyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRC
dWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVk
IGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSBy
ZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUg
ZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7IH0KLQotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFll
cyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
PSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0
OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4m
Jik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNp
ZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lk
IGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
ICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9
CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgot
ICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUg
Y29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8g
SXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAg
ICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVw
bGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rv
cjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBT
aW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhl
IGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNo
YXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVh
dGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50
cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBi
dWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUo
KTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhf
dD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAg
ICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6
ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25z
dDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdt
ZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBv
dGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxv
Y2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0Owor
I2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQo
KTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsK
LSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAg
ICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29u
c3Q7CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2VuZGlmCisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBE
YXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElC
KQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEs
CisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBE
YXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21l
bnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUocHJvdmlkZXIpKSB7IH0KK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9
CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6
dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09S
RV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEq
KTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZE
YXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdC
eXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJl
ZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0g
ICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7
Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29w
eURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFk
IHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBW
ZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkg
Y29uc3Q7CisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRC
dWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0
YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVu
dHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTUgKzE5NywxNzYg
QEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdt
ZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFT
ZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21l
bnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQg
ZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBv
c2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50
TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRC
dWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJp
ZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3Rv
ciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBz
aXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsK
ICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYK
ICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3du
ZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0
TWFwcGVkT3duZWRCdWZmZXImKTsKKyNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVT
RShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsK
KyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRh
dGFSZWYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAogICAgIC8vIENvbWJpbmVzIGFs
bCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRl
ciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0
YSgpOwotCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAg
ICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNp
emVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBz
aXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdt
ZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNv
bWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
IGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29u
dGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHBy
ICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVv
Zi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVm
PERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29k
ZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsg
Tm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsK
KworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0Rh
dGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2Vu
ZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNy
ZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBP
UlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0
YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5v
dCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hh
cmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgor
ICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAg
ICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAg
ICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZm
ZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9u
Y2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAg
ICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFy
Z3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAg
ICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAg
dm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisg
ICAgeworICAgICAgICByZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsg
fQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAg
ICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisg
ICAgICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkp
CkBAIC0yNjgsMjEgKzM3NiwyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRh
VmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFy
ZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdT
aXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFB
c0NoYXJQdHIoKSBjb25zdDsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBS
ZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5
YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUx
MDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICsz
NDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8o
Ym9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUs
IGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0
d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0
byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmst
PmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1F
VHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93
UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXgg
NDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThj
MGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVu
Y29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29k
aW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0
YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJh
OWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAt
MzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5h
bDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25z
dCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYz
NDBiYjJmY2I5MS4uYTEyYTc0MWE1NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEs
NyArNDEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8v
IFVzaW5nIEZvdW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxl
bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24g
Zm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRh
dGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRh
dGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEg
PSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVu
dC0+bV9pbW11dGFibGVEYXRhKSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50
b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkg
ewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXgg
NmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5
ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAK
ICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZU
b1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewot
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdp
dGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFn
ZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZC
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0Rh
dGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmls
ZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShwbmdEYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBu
Z0RhdGEpOwogfQogI2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29h
VHlwZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMy
YjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZj
YTc4MTY3NWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBO
U0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50
ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50
IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQ
dHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50
OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50Owog
ICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02
MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0
YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlv
bjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5
OCwyMiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1
cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJp
ZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNT
RVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3Nl
Z21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsK
ICAgICBpZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZp
bGU6ZmlsZVBhdGhdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3Vy
Y2VEYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXNvdXJjZURhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcg
QEAgUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBj
b25zdAogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21l
bnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3Jl
U2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlv
bjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEy
YmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5
NjE3NzgwM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046
Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMg
YXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwCmluZGV4IGRkMzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJhZGRl
ZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAog
ICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwog
Ci0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJ
bml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNv
bnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGlu
aXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNz
aFNpemUgPSAwOwpAQCAtMTk2LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9t
Q2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRz
TWFwLmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAog
CiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAg
IGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAg
ICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRh
dGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1
b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAg
ICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRz
QXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpz
b25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFr
ZSgpOwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1J
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdl
Yk0gaW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXpl
KCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVy
biBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmpl
Y3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRo
ZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBr
ZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rp
bmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAg
ICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0
YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5n
KGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RG
TW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNP
TlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpz
b25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQo
anNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50
YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5n
bGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZi
N2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmlj
OjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNo
RW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIu
YnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4
ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJj
OWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJs
aWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBm
aW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBl
bmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0
YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2Jk
YjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXll
ZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rp
bmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZp
bmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFz
dCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50
ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRy
PEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgp
KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMx
ZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmlu
YWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVu
Y29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29u
c3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZh
N2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIx
MzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZl
ckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVz
PiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNp
emUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZm
ZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRo
aXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRh
KS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0
aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAo
ZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYx
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBz
aXplKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRz
LmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBi
OGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4
MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgs
NyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwg
b3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRh
KSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250
RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRo
ZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZl
cnRpY2FsRGF0YSkKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBm
b250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRv
IGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZh
Y2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0
Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVlMzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJh
Y2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNy
ZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNo
ZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAg
ICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sg
PSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6
T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNl
RGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4Mjlk
ZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2Ug
Y3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJs
ZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNv
bnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZv
bnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5
ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5
MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1p
bWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBl
KSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBk
YXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDog
bV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUp
KQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRl
MS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1v
ZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3Jl
YXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBT
dHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAg
IGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkg
KzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQ
dHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9k
ZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2Rh
dGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcg
KzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJs
OwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6
OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdU
Rk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEw
ZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2
MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRV
SW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFs
dWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9m
ZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0g
b2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVh
ZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2
YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRp
YyBib29sIHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZz
ZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBz
aXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihW
ZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1
aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wg
aXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90
IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1i
b29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+
JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3
b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50
LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50
KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBz
Zm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAg
LTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRG
b250OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkK
LSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRG
b250KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4
YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMw
LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZm
ZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNX
T0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUg
V09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNm
bnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90
aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2Zu
dC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVm
ZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZl
IHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMg
dHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFp
bHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1
NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3Rh
dGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8
YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVm
ZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAg
YXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYy
NWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMg
UmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVl
OjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAog
ICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5m
TmFtZSgpKQotICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAg
aWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXRE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklU
REFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2Vu
Y05hbWUoKSkgewotICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
Zyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3No
U3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9
IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNT
dHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVy
cm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5
KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJu
IGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
W1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRT
ZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBw
SWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAg
ICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNj
ZWVkZWQpOwogICAgICAgICByZXR1cm47CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAg
ICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldXTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNl
OltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VX
aXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3Np
bmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0
cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5
UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tl
eVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAg
ICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29u
dGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250
ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9u
c2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0K
IAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxi
YWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNj
ZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNl
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdl
ZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6
Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0
c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0
VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBs
YXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVz
VmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25E
YXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVk
U2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlm
aWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCkt
PmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVy
ID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
IEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3RE
YXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElk
ZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwg
TlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJy
b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3RE
YXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAog
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRp
ZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAog
ICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRv
ciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+
IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAg
ICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1
dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2Fk
ID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5
SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7
CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAg
ICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAg
ICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBA
IC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3Ig
KGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAg
ICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwog
ICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5m
aXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3Qg
bWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdl
dCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmls
IGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAo
TlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZN
b3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVu
dEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRp
ZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0
KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250
ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRh
aW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3Qg
bWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdl
dCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmls
IGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAo
TlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRh
ID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcy
OTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2
OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFW
Rk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xv
YWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Np
b24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9s
b2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsK
KyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNl
TG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9i
YWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fz
c2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRp
b25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBA
IC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENv
bnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVj
b2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxE
YXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lz
QWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIw
ODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNE
YXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1f
cGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0
eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhG
bGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5
MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lk
IGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2
ZjI0N2YwLi5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBA
IC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJj
ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAg
bV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5n
ZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0yMjgsNyArMjI1
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1f
cGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVx
dWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAg
ICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1
ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKQEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9h
ZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3Rd
OwogICAgIGlmICghZGF0YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5k
ZXggZGI0NTdhODFkM2VlODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3
OWU2MTMxN2MwZDExNmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaApAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0Zh
Y2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBGb250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4y
MDM1Yzk5YTdmNjhiNTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBA
IC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNv
cnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0o
Q09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8s
IHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFy
ZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8p
OworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1h
Z2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0
YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VH
ZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhE
YXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIs
IG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lk
KiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcw
LDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhl
IFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hh
cmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmls
aXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1
cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVk
QnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQo
KSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0lt
YWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQog
ICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250
aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNl
IHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQ
b2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUg
YSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0
IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhl
IEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJh
Y2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0
UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJv
dmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJl
Y3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlk
ZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0
aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNi
MjYzMTI4NDIxMjRlNmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudElt
YWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBk
YXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRh
KCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0
YShkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAg
bV9kb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRh
UHJvdmlkZXIuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4
IDg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZh
OWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2Eu
bW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1
YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1
YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3Qp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVm
ZDM3NWVkODJiN2I0YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWVi
NTA0MGY5OWZmOGM1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAt
MzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVu
dCh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZm
ZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24p
OworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4o
cmVmY29uKTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0
YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlh
YWE3MWYzOTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3
MDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0x
NTEsMTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpv
YmplY3RGb3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxp
dHlDaGVjayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFk
b3B0Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9u
Tm9PcHRpb25zKSkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5k
ZXggNTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFi
NTk4NWEzNDM4NjE5ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGlj
IGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlm
ICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMy
ZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3
YzEyNDYwMWQ1YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRp
YmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBl
RmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNh
aXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlw
ZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRU
YWJsZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYm
ICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXgg
MDE2MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2OTI0
ZDQyYmFhYzMzMzRmZjhkNWMzYjRhZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAK
QEAgLTQyMiw5ICs0MjIsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVh
dGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KQorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVh
dGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhp
cyk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9
CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBiYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYx
YjFjYjg3MWJlLi5kMDE0Y2M2YTVkYzdiMTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3Vp
bnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3du
ZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFl
N2NhOGE1MDY5Li4yOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBA
IEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpl
bmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpw
dXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBm
YWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3Ry
ZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgp
XSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyIiwgW3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZm
ZXIuc2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1f
aW5uZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDc5Nzk0
ODBmOTFjNTk3YWE5ZjkwMDk3YzE4ODMyYzZhMTVjMzJjZTguLmIzMjRjZjExNDY0N2IzMzc1ZTZh
NDViZmFiMTAzZTBhMjkwZmI4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEm
JiBpbml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250
YWluZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXRE
YXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMi
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAg
ICAgICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChp
bml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2Jj
MDdmN2MwMWI5YzMuLmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4
dFVzZXJEYXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHBzc2g7CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNl
Q29udGV4dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3Qg
Z2NoYXIqKiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBA
QCBzdGF0aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hh
ciogdGV4dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNz
aCkgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2
NERlY29kZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkp
Ci0gICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcx
LDkgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJv
ciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJr
dXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0
aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9h
ZCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBh
cnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAg
ICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4u
NjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJV
R19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRf
ZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBw
dWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBl
IHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIq
IGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9D
QVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVn
X2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3Rl
Y3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENl
bmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAg
ICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0
RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVu
ZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRh
KGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkK
ICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRy
YWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBh
eWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1f
cGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03Miwx
MCArNzUsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28g
YmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1J
ZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAg
ICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAg
ICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJl
dHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29u
c3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlw
ZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5
ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0
Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwg
c2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3Jp
cHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24p
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJE
YXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApp
bmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5
YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0
aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3
YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9p
ZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVu
dCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRh
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2Fs
bG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzky
M2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29y
cmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJl
Y3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3Jy
ZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJ
dGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5
cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90
KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1h
dGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBl
eHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2Vy
bkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNl
dDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhB
c3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQog
ICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBh
cnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+
JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBw
YXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tj
b3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24g
OiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVu
dDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFu
dENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlh
bnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykg
Y29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1
Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAg
ICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5
cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1i
bHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQ
YXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNl
dCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGds
eXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNl
dCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENv
dmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAg
IE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhl
cmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5k
IGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAg
IGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25z
dAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9u
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wg
aXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2
X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNP
ZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29u
c3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0
ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsy
MTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZv
KiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7
CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNv
bnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIx
ODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRo
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsx
MzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQ
dHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXgg
Yzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgx
YzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyAr
NzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAj
ZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQp
KSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikp
IDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+
c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyAr
ODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFi
bGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJv
dGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
cmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGlu
Y2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25z
dCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qg
b2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0
ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9m
ZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0K
QEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxl
IHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6
IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5
cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292
ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENv
dmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5k
ZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1h
dCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNi
ZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFk
ZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQg
dGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3Jp
dHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hp
Y2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0
Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wg
cmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsK
ICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25z
dCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4o
Zm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9y
PHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRh
dGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBm
b250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBm
b250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAg
aWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3
ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxG
b250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9u
dE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFj
YzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJm
ZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYs
NyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292
ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJh
Z2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRh
YmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VP
ZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vi
c3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07
CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNv
bWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1p
Y2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+
KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vi
c3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRT
dWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0
cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1
cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNv
bnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3Qg
aW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRl
eCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkp
CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxv
b2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0
IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9u
cyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwg
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0
cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQg
ZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRh
YmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJl
KHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBm
ZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChi
dWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0
dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZl
YXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0
dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVh
dHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1
NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFd
OwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVy
ZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRh
ZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVh
dHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0Owog
ICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1
bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExh
bmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3Vu
dF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsK
ICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFd
OwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNj
cmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMx
MCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBk
ZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlm
ICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIx
LDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0
T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJs
ZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVm
YXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDEx
ICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExp
c3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0
PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAg
ICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1
cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBG
ZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBm
ZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAg
Y29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNv
bnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlm
ICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAg
ICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVh
dHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVh
dHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFu
Z1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29u
c3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3
ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9u
cyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEds
eXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVU
YWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAg
ICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBH
U1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5j
ZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3Qg
T3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5U
eXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBl
VmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQg
T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMg
cmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2
aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVy
KTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2
b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0
aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5U
eXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6
R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0
aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0
ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdh
NzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcg
QEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnRO
YW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZv
bnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYu
LmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCog
Q0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0
aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlh
bnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGlu
dD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZv
bnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRl
YzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFt
ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250
TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0
ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBs
YXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVy
KSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVy
biBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3Bw
CmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYz
Yjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5j
cHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3Rv
cmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhH
RElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQg
c2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0
YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmpl
Y3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9u
RGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdl
M2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9j
YW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVw
bGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNl
dEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0g
V1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZN
b3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21E
YXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3Vz
dG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPElt
YWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJk
ODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODli
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpF
cnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsK
LSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50
cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1f
ZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAg
ICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
aWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1
b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29k
ZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAg
ICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRy
eURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmE0MmU1
YmM0YWNjZjM3MjJhNWFmOWM5MDU0NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2Vy
KGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsx
MV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9m
aWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGlu
Zm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRy
IG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4
dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+
ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXpl
KSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUp
OwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOwor
ICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAK
QEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9u
bHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBK
UEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3
YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJi
NzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsg
fQogI2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAx
NjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1
MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQog
ICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5
cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVi
b2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkK
IAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVu
dERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xp
ZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBl
c1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAg
ICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQt
PmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRT
dHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRl
ZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltO
U1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29u
dGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBl
cnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRl
ZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltO
U1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29u
dGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsK
ICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9t
RGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAog
ICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdl
dCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2Fy
ZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAg
ICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
ICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7
CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAg
IHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAg
ICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNT
dHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXpl
XTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpw
YXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9y
PFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0
ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRB
VElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3Vz
dG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdp
bigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRl
cmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUp
OwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJl
ZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9y
aWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRC
dWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxp
ZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdp
dGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBp
dGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFz
dGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1
c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4g
ZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5T
U3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+
IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49
IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bh
c3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRl
bSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXgg
NTQ0NjUzYzQ0MDNkMjYwNDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdk
MjBkNWI2ZTRjMmQ2NWZlNjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVy
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXImIHByb3ZpZGVyKQotICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkgfQorICAgIDogbV9wcmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBt
X3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHRO
UyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToq
dGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
aW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJj
MmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIq
IGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewot
ICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlN
RVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1J
TUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3
ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChj
b25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5z
dHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25z
dCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9h
cmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0
eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3km
IHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGlj
eSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgs
IHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBz
dHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
V3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEu
Ljg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEy
OCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVu
dC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQt
PmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEg
Y3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29u
dGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElV
bmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
KS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJ
dGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3
My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBA
IC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0
ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFtt
X3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBs
YXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRv
bVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9
IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSku
Z2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3Rv
bURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAg
ICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0
b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAg
W21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3Jt
VHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxT
dHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAg
ICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChh
dXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0
YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkp
CiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEu
Z2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAg
IH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYg
KCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZm
ZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2Fy
ZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBu
aWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3
IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUo
TlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0
SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5
cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0
ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAg
IFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4o
c3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1
MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAt
MTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1f
d3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2Zl
dGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3Jp
cHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNi
NmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2Yx
M2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRl
ci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5v
IGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9z
ZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRl
bGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0g
bnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2Zl
dGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVs
bHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAg
IExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAg
ICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRh
LmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9k
YXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4g
ZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAppbmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3
OTA1Li5jN2QxOGJlMWQ2YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0MTEs
MTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVy
biAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6
YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZv
cm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVj
dG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAog
VVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEw
YWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERP
TUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0
YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8
Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91
bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0
cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdh
eXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJl
YW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4
ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5S
ZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2Vp
dmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3
MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4
MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEg
ewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNl
KQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9y
aWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNw
b25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRh
c2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5
IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90
IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVz
cG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Np
b24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNw
b25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNo
TWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9w
dHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmln
aW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5n
IDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNz
ZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNv
dXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQog
dm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5S
YW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFy
c2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29u
dGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXpl
ID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0
byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9u
IGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2Fp
dCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25v
dyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4
cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJT
aXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVn
aW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZm
ZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsK
ICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZl
Qnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9
IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsK
KworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1
ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVy
YXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVu
bmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2
ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAg
ICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5k
ZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49
IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXpl
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0g
YnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJW
aWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29u
dGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNz
ZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5z
aXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhN
RTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVj
ayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJl
c3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3Ry
aW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBk
YXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZm
ZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVz
cG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3
MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpT
aGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2Ug
PT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltz
dHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewot
ICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRv
IG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsK
ICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8
TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdh
dGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5k
NjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3Nl
ZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9j
ZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBh
cnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7
CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUg
cHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsK
ICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6
cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFy
eVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7
CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0
YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZl
ci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9i
dWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5y
ZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5k
IHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJl
bW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5
MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2Qx
NDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJs
UmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVI
YW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwog
fQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNk
NDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBA
QCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCku
ZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZl
ciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlk
UmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92
ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3Jr
TG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3
OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5
ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEt
PmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5
KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBA
IHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwg
U3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRo
aXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBX
cml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAg
ICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+
c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBG
aWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwg
JndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAg
ICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5
Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYx
OTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAw
KTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyArNTMs
NyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAo
UmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1Jl
YWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1
bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBj
b250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWko
KS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThj
ZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCAr
MjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCks
IHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGln
dW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCBy
ZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0
cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAg
aWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RN
SW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3Rl
bUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxi
YWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRl
LT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNh
dGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShj
ZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0K
QEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmco
cmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJl
c3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEu
LjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIg
U2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNj
cmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9t
VVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2lu
Z2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBt
X2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5j
b250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVy
LmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21l
bnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFw
cGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3Ry
aW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwog
fQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRC
dWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMx
MzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li5kMWE3N2I1OGI2NDRhOTBiOTA0ZWZk
YzFmZWJjNmMwNjc0NGY5MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
QEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25z
dCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPiht
X2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQo
KSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVu
Y29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRh
aW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2
OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5lNWYzNDliNDgyNzQ2ZjllZGI5YzVmNjMxYmZh
ZDRiNDE5OThiYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwo
V1RGTW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21P
cGFxdWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpKQogewogfQogCkBAIC03OCw5ICs3OSwxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1
cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEs
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2Rh
dGEtPmdldCgpKQorICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShj
b250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAg
ICAgbV9kYXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3Vv
dXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAg
ICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJy
b3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjIsNiBAQCB2b2lkIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlm
Y2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDli
YjUxMDI2ZjU4M2EwOWIxODQ3YTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRD
cmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBi
b29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9l
cnJvck9jY3VycmVkICYmIG1fZGF0YS0+aXNOdWxsKCk7IH0KICAgICBib29sIGlzTG9hZGluZygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3Vy
cmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcg
Kzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRS
ZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkw
ZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThi
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRp
YyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVm
PEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5
KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRh
KSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUo
Zm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAg
ICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50
LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAz
YTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRy
aWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUg
Y2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBw
aW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBT
aGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBz
aG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZp
bGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0
b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNl
YTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZi
NDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChm
YWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkK
ICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6
OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxl
KCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGlt
ZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVj
ZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJh
Y2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAg
aWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5n
ZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAg
aWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmlu
ZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVz
cG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBk
ZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3Jt
YWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFT
U0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBB
U1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAw
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGlu
ZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNw
b25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51
bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNw
b25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUo
ZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4K
LSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkw
OWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGlj
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAg
LTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9y
bURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3Mg
VGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgs
NyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7
CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZm
ZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYy
ODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhz
bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAK
QEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3Qg
eG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
ICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJh
bWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIu
LmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
QEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJp
KQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3Njcy
ZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYg
cmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0
cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRv
KiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uNTRkYzIwYTlhMTk1ZDU5
ZTg4YWQ0NGRiNTQwNWU5MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBA
QCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNl
QnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3Bv
bnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAg
ICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsK
IApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3Vz
UmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDog
bV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24g
eyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5y
ZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9
CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwx
MCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVu
c2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5t
YXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0
eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMy
LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIp
OwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWRE
YXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hP
clhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNw
b25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBt
X3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVk
aWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gt
bWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAg
ICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAg
ICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJl
c2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAg
ICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlk
YXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVt
b3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVu
dHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0
KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0
dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBn
ZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRh
TGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7
CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJl
ZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVy
ZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+
Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1
cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAg
ICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0K
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291
cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVk
ZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgp
CiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWRE
YXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1f
YnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0
YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5n
ZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVt
cHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAg
LTEyNzksNyArMTI4MSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFz
Q2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hl
RW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxp
Z2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsK
ICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0
b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXND
cm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nv
bm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7
CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBT
dG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5w
cmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwo
KSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7
CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3Jpbmcg
ZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3Jr
TG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11
dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0
KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291
cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIz
NGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFk
Yjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAK
ICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5z
aWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNo
cm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBS
ZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdp
bGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBj
ZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4OTljMWMw
MmQwZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1f
Ym9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4
ZjFlYjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2sm
Jik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAg
IHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAg
ICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhl
ZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIw
N2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgp
KQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRh
KCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYy
NmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVm
NjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAg
LTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNv
cmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5Owog
ICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNv
cmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0g
ZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0p
OwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2Rl
KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAg
cmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3Jh
Z2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25z
ZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5i
b2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2
YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmICht
X2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNp
emUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVm
ZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAs
IGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZmU3NTlj
ZWRhMmQ3YmQyZWFlODc4OTk3ODNlZmYzMzk5MmE3M2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyArNDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1
bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1l
SQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQot
ICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAg
ICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAg
IEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkp
OwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNw
b25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFy
dCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3Vj
Y2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBN
b2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAg
LTEyNywxMCArMTI2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGlu
IGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM4LDExICsx
MzcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5h
bFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBb
XShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgIGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLmlzTnVsbCgpKSB7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1f
Y2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBD
cmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAg
IGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9j
YWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2Fj
aGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBj
NDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAg
Ym9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXgg
YjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgwN2Q3NDE3MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBm
M2YyYzVmYWY5ZjkxNDU5MWQzMWNhOWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3
ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6
Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3Qu
dXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBi
eXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVt
b3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2Vj
ZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdjMzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVk
QnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRh
LnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92
ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlm
Li5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQxMzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyArNDAsMTQg
QEAgcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkp
IHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBi
dWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAg
ICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0g
ICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02
MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBk
MjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZh
NjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVy
biBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNp
emUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwog
ICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJj
ZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIx
Zjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9
CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0g
cGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgp
OwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNp
emVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJ
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRl
eCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThh
OWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJl
bGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBk
YXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCku
Y3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNo
aXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAog
ICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNl
RGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4
N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAy
NmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2
OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRh
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJl
Y2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNj
cmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxG
b250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEu
dmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAg
YXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGln
dW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9u
OwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3
NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5
YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApA
QCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9M
T0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBz
aXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgog
Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVy
Q29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAg
ICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0g
fTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0
MTI4Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAg
Ym9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1
ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsg
KnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVm
IHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hh
cmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAg
IFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6
bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuaAppbmRleCBkYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1
MWUxNjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQ
Qzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hh
cmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6
CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3
cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBt
X3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0
Yy4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkx
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAg
ICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQ
dHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7
Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5k
bGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlw
ZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5
LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJl
ZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVj
b2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0
b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZv
ciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01D
YQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNv
ZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNv
cmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewor
ICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsK
ICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAg
fSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcg
QEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBA
IC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURh
dGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFs
dWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAh
dmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1E
YXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBz
dGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVu
dGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlk
ZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3Rk
OjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwg
IWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZm
ZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3Rk
OjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0
cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8
ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEy
Myw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3Jp
cHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYy
NGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5
ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFz
cyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307
CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVy
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3Jp
cHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3Vt
ZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3
N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwx
MCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxT
ZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+
KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVw
bGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMy
ZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFy
Z3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQ
bGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAg
IGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVj
b2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlk
NWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMs
MTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50Ojpl
bmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRj
My4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9C
SkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5j
bG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdl
ID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0g
ICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2ht
ZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2N2QzZGVl
OTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3Qg
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAg
ICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNv
bnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3Qg
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9v
bChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNh
MjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMz
Y2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9v
bCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIg
JiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFw
cGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBl
KQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2Vj
OWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTUs
NyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpB
cHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAg
dGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0g
YWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxp
Z2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0p
OworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9j
XSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAo
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBI
aWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBb
ZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQo
KSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5
NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApA
QCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50
JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBs
ZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2Rh
dGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5n
dGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkp
OworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0
aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQz
MWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgx
ZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNE
YXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25T
dGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpp
bmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAy
YmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0Vx
dWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAg
ICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RB
dEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBl
cyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVm
ZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBv
YmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdl
KiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1l
LCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAg
aWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVy
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZv
clR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJk
LCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDpt
X3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJ
bWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5n
ZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJh
eSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24o
TlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYg
KG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRh
KCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9w
cm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpu
aWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01Q
YXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAg
aGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3Rl
Ym9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigp
ID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3Vy
cmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29t
cGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4
MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIw
MWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcg
KzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBv
c2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFn
ZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmlu
Z1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURl
dGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdl
c3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIwNDUzOWQ2MDA1ZDU0M2Jj
NjJmYjg5MDU5OTY0Njg5MzJhMzNlOTIuLmYzYWQ1NzZiMzMzYTkzMjk1MDA2M2Y3YTNhOTRjZjU3
NzNiNDJjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc5
LDcgKzExNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5n
IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hu
b2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUx
ZDgwYzE2YmQxLi41ODU0N2Q4NDg4MWRjODMwZjY5NjlhMGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiAr
NTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhh
bmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUo
cGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3lu
Y0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAs
IG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNT
eW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRh
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9z
eW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAg
IH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9j
b21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBk
YXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAg
ICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9u
c2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7
CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hl
bWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVz
b3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBh
NDdmMmMxMzA4NTI2Ny4uYjA3YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
CiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAg
ICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0Zv
clJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3
M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFk
MjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBv
dmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJ
bWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9v
bCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6
OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
aG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0
MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZi
NjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBv
c2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107
CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVk
QnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAg
IFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQo
KSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFhODFjY2U0NDU1ZWIxYTcy
YjEwZThmMjQ3M2M2MGEyOTFlYTU4YmEuLjBjNjI1YzMwZDMwM2ZiZDk4NDliODRiNmU3YWFmYTM0
Y2Y3YzM0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTClj
YW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5k
ZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJv
YXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAq
ZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2lu
KQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTksNyArNjU5
OSw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJ
UGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgp
KS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwog
CkBAIC03NTcwLDcgKzc1NzAsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdl
YkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBm
aWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5n
KilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmls
ZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwot
ICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJl
RGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2Vs
ZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpi
b3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxd
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQppbmRleCBmODBjODI0OWRhNDY3Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZi
OWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJp
bmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCmluZGV4IGUwM2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5
OGRiNDYuLmE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcg
KzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkx
YmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMx
LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0
aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRG
cmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFs
c2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3
OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUz
NTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAt
NjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJv
Y2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9j
b250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2Fy
ZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRl
TWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxX
S1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAg
ICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQo
KSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIg
cGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdl
KS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBl
KSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRh
LmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlw
ZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3Njhl
MzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0
YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAg
ICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVh
dGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAot
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7
CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBw
ZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJh
eS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShp
dGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEu
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlk
OTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdh
MTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2Um
LCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hh
bmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQ
YWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNv
cmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGlu
YXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBh
NDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxl
YXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAg
IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1
b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAg
UmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAg
IHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEg
PSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFz
ZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9j
bGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0
b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdO
YW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5
MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0
ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVs
U291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdh
ZGYwYjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhh
bmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxl
UmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5
NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFh
ZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1By
b2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5k
IGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVO
TElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXIt
PmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
ICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0
ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkx
ZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQ
bHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYm
IHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgp
KSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVx
dWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJM
UmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZp
ZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAg
ICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAg
IGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEt
PmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3
ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1f
bWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAg
IG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3
aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1f
cGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJl
YW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1
cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51
YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3Ry
ZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVz
cG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJl
YW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0
cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdt
ZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAg
IH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpG
aW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3
NTM5OTBmNmZhOWJkNDc0NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0
aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNl
OwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5p
cXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsK
IAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hv
dWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5
NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93
YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlm
ICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURh
dGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9u
c2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAg
ICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAg
c3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDgg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51
bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmlu
aXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3Qg
U2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRG
aW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIw
NzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3
NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBA
IHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAg
ICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpG
b3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURh
dGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1
MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBt
X3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBh
c3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4
IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5
ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcg
Kzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0
ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJS
ZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4u
OTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWlu
UmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJl
c291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92
aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5j
ZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXgg
ZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uNmYzZjU2NmM1MmYxZTM5
ZGVmMDBiNWYzMTlmZWJhZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3Rl
Ym9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBG
aXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1
ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92
ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5
cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxs
YmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNv
bnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMzI0LDcg
KzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6
U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5k
bGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVu
dGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIw
Li4zZmYzNTU4MDhlMWQ2ZWIyYWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1
ZmQxM2M3NTRlMTAuLjc2YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsNyArNDUs
NyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1l
IH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAs
IG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2
OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQog
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwot
ICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5j
bGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5hZTA1
MGE5OTIzZWE3ZWY5NTU1Y2JhMTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsK
QEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsK
ICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5k
ZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3
ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2Uo
KTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5p
bWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5k
YXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAg
ICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1h
Z2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAg
ICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2
ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAg
ICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIu
Z2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5
YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0
cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGlu
ZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1h
aW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNB
c1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0
NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZy
YW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRv
cigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1l
bW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYx
Yjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
QEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0
c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQot
I2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAg
ICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0
c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25z
dAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRF
Uk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNl
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFl
MjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
CkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09M
KXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFn
ZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVs
ZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFm
YTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7
CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpE
T01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRG
b3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1
NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEy
NWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQy
LgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdl
YktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2
YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThl
NmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUs
MTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5k
aWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRl
bUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0
TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBh
NmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdl
dFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUp
OwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRC
dWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5
NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
QEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdl
YkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmlu
ZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZl
YWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAs
NyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRv
Y3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkg
eyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291
cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0
YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEz
MzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRk
NDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdl
LT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdl
IGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgp
IGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRk
T2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXIt
PnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVj
dGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdl
MzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMs
MjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRl
Y29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAg
IGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAg
ICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAg
IE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVu
Y29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
dXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1l
VHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7
CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVz
cG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwor
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURh
dGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNl
VVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJl
c291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2Rp
bmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAy
LDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
LT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAg
LSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0
aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxs
cHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8g
Y29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDAp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRl
eCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJm
YzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0o
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVh
bShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcg
QEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09N
UHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlT
dHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4
NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVh
bSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxN
ZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93
bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwx
MCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBN
ZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5
U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+
TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3
MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4
NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9v
cHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdl
dEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwor
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdl
dEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwog
CiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIp
KS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1
OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdm
NTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsy
NjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBj
MTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQx
NWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmln
Z2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5
N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdl
YkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAg
IGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1
cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0
YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJ
bnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5j
b3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRh
dGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1
Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJh
ZmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUs
NyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0
YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0
ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJl
ZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0
YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVT
VUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIg
bWltZVR5cGUsIF9Jbl8gQlNUUgogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5l
ZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJl
ZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcu
CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCks
IHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAg
ICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZm
ZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIu
c2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJl
ZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAg
IGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1l
LCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0
MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBX
ZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
Q09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJ
bnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNl
LmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1
YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZp
bmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291
cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBj
cmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBS
RUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk0NWVhZWI4MjMzMTk4ODcz
YzI2NDA0MTVhNzgwNjEyYTZiZDg3NDkuLjkyYjdkMjU1MWM3OWFlNTFlOTkyMmY0Y2I0M2Y1ODBk
OGM2ZDc1NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAg
ICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0x
MS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rp
bmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFu
ZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEt
MTItMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIFtHVEtdIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCBpbiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUy
ZjYzMjdiMjEyYzdjYTQ2OC4uMjIwYTM4MDA3ODIzMWE1ZGI1MzRlNzQzMGRjZDhlNzdjZDBmMDc3
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1
IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQzLDUyICs0Myw0NSBAQCBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygi
bm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygi
bm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVm
ZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50
c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBh
dGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNF
bXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVk
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCks
IDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwot
ICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXIt
PmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5k
YXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRf
Tk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJh
IiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAg
RVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCArODksMTAgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVz
dERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAg
IGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVz
dERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVz
dERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1
ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
dGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERh
dGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBl
eHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJU
X0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJy
YXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTEx
MSwxMCArMTA0LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1
ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAn
YicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9y
MSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVj
dG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFT
U0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAw
eDQwMDA7ICsraSkgewpAQCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwg
bnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5h
ciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFi
aXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
bGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOwor
ICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2Vn
bWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
bG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBj
bG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xv
bmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxk
ZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQ
RUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5v
dyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNo
YXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxk
ZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAg
ICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVy
MS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1
ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVD
VF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBp
ZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3Rh
dGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
TGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCArMjA0LDcwIEBAIHN0YXRp
YyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxl
bmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRh
KQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAg
IFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1
aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMx
KSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycs
ICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAg
IAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVE
YXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBp
amtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRT
b21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAg
ICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hp
amtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNv
bWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNo
ZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1
ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRh
dGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6
ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlq
a2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAg
Y2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIp
OworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNo
ZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBF
WFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRh
dGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIo
bC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
aXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVp
bnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAg
ICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWls
ZGVyLnRha2UoKTsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZl
cjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAn
YicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0p
LmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIx
KSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywg
J2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAg
RVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSku
Z2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7
CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0g
fSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkp
OworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9
IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7
Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIg
PSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAi
Iik7CiB9CiAKQEAgLTI0OSwxNiArMjg4LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBy
ZWFkKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxl
VGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0g
ICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2lt
cGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1
aWxkZXIuc2l6ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBp
ICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsK
LSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7
Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhU
TUwpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVk
NGViMTEwLi44YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5p
bCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAg
TlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6
NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMs
IGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVs
bG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxk
ZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAq
d29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAg
ICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZm
ZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVs
bG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRh
IF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0
YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwot
ICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxs
b0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxv
RGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5T
QXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAg
IE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5s
ZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBm
b3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2Vn
bWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQu
c2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVu
dENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21l
bnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNl
Z21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9u
KSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikg
eworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRT
b21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxE
YXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3Vu
dCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsK
ICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50
Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4
cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+
Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0
Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5n
Ok5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5
dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445711</attachid>
            <date>2021-12-02 04:36:12 -0800</date>
            <delta_ts>2021-12-03 03:06:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211202233611.patch</filename>
            <type>text/plain</type>
            <size>133085</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA5ZjUyMDk1NDIyMTZm
OGJhMzY3NzkxMmFhMTg1OGFmM2EyM2RlZi4uODA1MTAyZjYxYzVlYWQ0OTMwZjhhMmI4NDIyYjg2
OWFkYTEyYThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVu
dExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2NGZkZmMzNDQy
OGIxMzM1OTU3ZTNjZjIwZDhiNDY0MzI1Yjc3NGMuLjMzZTE4ZjNiZGVmZDk3ZDQ5NzQxNWIwNmVk
YmNiYjM1ZDVlNGIwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMTEtMjggIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojps
aXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVk
ZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZhaWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTI5NDkzMTk4MjhlNGUxNTYzODJiOTM3
YWY5YmMyY2E1ZWJlNDFjYy4uNzhjMzg1NmMxOWVjNGVkOTBjZjhjNGYzYWM1ODQ1N2Y5M2VjZDA2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEy
LTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3Vz
IFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0
YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA2
ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmLi5kYjNjMTM2NDY5NDliNWNm
ODRlZjkyMzM1ZWYxNDEwYWE1NDk2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChW
ZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNr
SGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNw
b25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2Vp
dmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9z
aXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJl
c3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNl
LmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hh
bmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVz
cG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZl
Y3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSBy
ZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3Jk
UG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVz
cG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAg
IH0KQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBp
bmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYg
KHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNw
b25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25z
ZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9u
c2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtl
UGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAK
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAg
ICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwg
Y2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhp
cy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IDEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBlMGI2YjEuLjExYTczZjM0
NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xl
YW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwog
ICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1f
c2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5r
KTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpj
cmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8q
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlw
ZSwgY29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZm
ZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7
Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQoreworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZURhdGEoKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAo
IW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIu
dGFrZSgpOwogfQogCiBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0FycmF5QnVmZmVyKCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAo
IW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRy
LCAwKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVy
OworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9
CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwg
VmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRU
eXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxw
dHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4g
YmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAg
IHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0
YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KCkKQEAgLTM2Miw4ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4
dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRl
eHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVz
ZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVm
PEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNv
dXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1f
YnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxs
cHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVl
KG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
aW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJiYmNlNzM0
N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0g
ICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdU
Rk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3ICs4
Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50
VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3Vt
ZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBt
X3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKaW5kZXggNzVkZWFkM2I5NjBiYTliYzUyYWNjNzIxZThhOTFjYjg0MjBhNjZmYS4uNjNm
MWMzY2JlMWVhODFjZmJmNDU0NjQ2MzIwY2RmN2ZhY2Y1OWMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJM
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEg
PSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFs
c2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBt
X2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAg
IG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JD
YW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5y
ZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRl
cmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAg
IH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNy
ZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6
Y3JlYXRlKG1fZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1p
bWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRs
ZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3
N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJk
MWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9t
b2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBi
b29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGQ3MGJhOWVmZjFjOTJhOGQzMDNm
MmVlNDc4ZjVkNDY4NWY0ZjE4NGMuLjhhNjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVk
MDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQo
cmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZl
cihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcg
KzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVt
b3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0Nv
bnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAg
ICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7
CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgp
CiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0
YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVy
ID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNp
emUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBl
bmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9k
YXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAg
ZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+
dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2Rl
ZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2Nv
bnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2Nv
bnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1
NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5
ZmU5N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdl
bnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSBy
ZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0K
ICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVz
cG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJl
ZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25z
dDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAt
MTE5LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFt
ZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YUJ1ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1
ZmZlcjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA5MDZkNjRmNTFmYjJiNzg4MDVlMGJm
MmM3YmQ1MDI5MTBmZTRmNTYwLi41ZWIwNjUzNjBiMTBkZjgxYjU2YmU2OTQ3NTFkY2Q5MzFlN2Ri
MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYg
Kzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxv
YWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAg
ICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5n
UG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFt
ZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0K
IHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3Vy
Y2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0g
bnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5
IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRh
dGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpE
b05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6Ondp
bGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyNCBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQ
YXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAg
bV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVz
b3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXls
b2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwog
ICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwog
fQogCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNv
dXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9y
ZXNvdXJjZURhdGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsK
IH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIx
NTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLmNmODIxNzRiZThlZDg2N2Q0NzgzZWNhYTEzNmI1Nzgz
OTJjMjgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1l
TG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0
cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAK
IERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsK
IGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9h
ZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9Cisg
ICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNs
ZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVl
c3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNv
dXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VE
YXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1
ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBm
MjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7
IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1f
ZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5l
bXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+
Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNv
cHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpA
QCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3
YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdl
OGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApA
QCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpy
ZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKaW5kZXggOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMw
ZmU3OS4uYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMzZDFmYzVlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQK
ICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklO
U0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9z
KTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
IAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0
eSgpKQpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAK
ICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3Jp
dGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRo
ZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQK
ICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
IHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAK
ICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCmluZGV4IDczMzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYuLjQw
MjViOTgwZTVlZTY4MmRiMDc2MmFmYTg2ZWNhOWQ5MmZlODU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBh
cnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7
CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAh
ZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9
IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0g
TUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWlt
ZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVz
IGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQot
ICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQu
YXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9y
KCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlm
IChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgw
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgp
IGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAo
c3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50
LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVI
ZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJl
YWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBp
biB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYg
dGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4i
LCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDEwICsxOTMsMTAgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7
CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAg
ICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0g
YmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7
CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRl
bnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVj
b2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVu
dCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1
LDExICsyMDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNl
TmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRh
ID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRl
bnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVh
ZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRh
KCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250
ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1I
VE1MIHBhcnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjYxYTk5YWU1NzZhMmI5MDhkY2Ew
OTY2NDQ0YmIwYWQ1ZmIxM2I0Zi4uOTBkMWM2YTJiYThjNGE0MmUxZmViZDgwMWU1Mjg3ODA1OTAx
MmI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFl
YThkOWFlNWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxz
dHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJM
LCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0
IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCmluZGV4IDY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAuLjlk
MmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgq
c2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxl
U2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3
YTEuLmQzN2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUs
NyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4
dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggZjY0MzMzZjA0MzM2YjM2YzYxMDdh
NDYzMGMwMjQxN2U0ODRhMjVjYy4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEz
MjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4o
Y2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRh
KSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAwYjdlZDliZjFjNjA5OWY1NzVhYWIz
MGU5NTM0MWYxNzZmODExODZkLi4xNTRkYjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5
NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTc0LDcg
Kzc0LDcgQEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNzJjMTlmNjU3YmQ0NzdjMTNhOThk
MDFkYjgwZWZjMDU3MGFkYzg5ZS4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2Vm
YTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBA
IC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQog
ICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdl
Ojp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
bV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGRE
ZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdl
RGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1h
Z2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
CiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU1NSw3ICs1
NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdl
Ojp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7
CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0K
IAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEp
OwogICAgIGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNS4uZDUx
M2UxNmNiYTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAg
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBt
X2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVI
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVp
Z2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNp
emVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91
bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVl
ZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJ
bWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwog
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZv
aWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFj
ZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDg3MzFlYjgyY2I4ZWYw
MWFkM2IxNDdkOTAwOTFlOThmOTkyNGJkMWMuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFk
ZmRjNjQ4MDQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
QwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQog
Ci12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9t
IG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlz
aExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5
Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRh
dGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5j
aHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMg
dXAgc3Bpbm5pbmcgYSBydW5sb29wLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1
M2UyOGJhNjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAt
NTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQo
Q2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFp
ciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3Qg
RGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9Owog
ICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExv
YWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKaW5kZXggZGU3OGFjYjIyMTBhMWZmNGVmYTk2YzA1Zjg0OTE5YjI2NWQwMWNhZC4uY2Y0
ZjAyYzVkNzQzNGNiNjVjYjNkMDMzOGFjN2ZhNzNhZjYxNjY4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNz
KTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikK
IHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlm
eShtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKaW5kZXggY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1Ny4uMjE4ZDc0
ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZp
cnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwog
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7
IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJl
Y2FmNjc0NjE5ZS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lk
IENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24n
dCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVs
b25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2
Mjk1YzUzZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMw
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4g
bV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBlZWRi
NmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQxYjgxZTYxLi5iODdhM2RiMDZmMDExNDdmMTli
OGY0MzI2OWZkNDcxZTg0ZTJlZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6
OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5
MjRiODRjYTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFh
YWRhOTcwNjlkOWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKaW5kZXggYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYS4u
NTQyNjZkZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKICAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNs
aWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZv
aWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRh
dGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
aW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3ODMy
MWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCmluZGV4IGMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAu
LmI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVl
MDA2NTRjZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAg
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNi
N2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDViYjdhZjkwZWJkYTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Owog
Y2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJl
dmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNzAsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0
ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2Ns
aWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNv
dXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5n
RGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNw
b25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJh
NTczNC4uNTJmZmQ1MzdiZmQ2MmZmNjdkZWNkNDY0YjY1ZmI2YzkwNTcwNjJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRp
ZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEt
PmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEtPnJlc2V0KCk7CiAgICAgcmVzb3VyY2VMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZl
cnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkg
fTsKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
b3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5M
ZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2Fj
eVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5
UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsg
UHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGll
bnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBt
X2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRl
ciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJh
bWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNGJl
YTRmMThlNGM3OWRlYjU3NDRmMjgwZTlmOGY5YmMxODNjNmYzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgY29uc3Qg
UmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKIAog
Y29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZp
ZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVz
b3VyY2UoKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5
VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2
aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlmICghbV9wcmV2
aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQu
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgp
KTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywg
Km1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252
ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZm
YWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIuLjA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRlYTlk
MzQ5YWI3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
cjsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVy
dGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNv
dXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5h
bFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDVlMjVhZTNlNDgxMTZhZjQ4
NDM5YzNmZjIzOGVlYmQ0MDVlNWFjOGYuLmJiZTM5MjNhMjA3YTBlOTM2MTE3MzA3NGY5NzYwN2Zh
ZDA1ODdkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAt
MTkyLDcgKzE5Miw2IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBt
X3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdt
ZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdt
ZW50cykgewogICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxl
bWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKQEAgLTIwMyw3ICsyMDIsNiBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAg
IEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAg
IHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1f
c2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwpAQCAtMjEzLDcg
KzIxMSw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGxlbmd0aCkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFT
aXplID0gZGF0YS5zaXplKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA1OWYwY2EyYzQ2YzAz
MjIwOGI2Nzg4MzFjMjQ2MWNmMWNiMDJjMGRmLi5hY2M2YTkzZjA4NDQ1ODQ4NmZiYTBhNTYyNmZj
ZDVlMzM1YzUzZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTE4MSwxOSArMTgxLDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKLSNpZiBVU0UoQ0YpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKLSNlbmRpZgotCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNo
YXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CkBAIC0yNDksNiArMjM2LDIwIEBAIHByb3RlY3RlZDoKICAgICBzaXpl
X3QgbV9zaXplIHsgMCB9OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGVhcigpOworCiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEg
VmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRC
dWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAg
ICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNp
emVfdCBwb3NpdGl0aW9uKSBjb25zdDsKQEAgLTI3NSwxMSArMjc2LDYgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5k
IG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4KLSAgICAvLyBXaGVuIGNhbGxl
ZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4KLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOwotCiAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKQEAgLTMw
Niw2ICszMDIsNzEgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKIH07CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
KSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRv
IHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVy
IHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBp
ZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBk
byBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxs
IFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRl
ZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBh
cmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVC
dWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1
ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9i
dWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNl
dCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAg
ICAgICByZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJu
IG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQg
ZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFy
ZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZh
MmU4MzIwMGY3Yi4uMmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBi
b29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7
CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBr
ZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENF
TkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0
dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIGNv
bnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgYXV0byog
ZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwpAQCAtMjI2LDE3ICsyMjYsMTcgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBX
VEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9K
U09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwg
anNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVu
ZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRz
LnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21X
ZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxp
ZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEu
c2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICBy
ZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0g
SlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjUxLDggKzI1MSw4IEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhCiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
IENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5
ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRG
aW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9w
YXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2
UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQppbmRleCBkZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4
Li5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMs
NyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9w
YXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZm
ZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5k
KGJ1ZmZlci5nZXQoKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVy
KCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
bV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9
CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRp
bmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1
ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggN2JiMjc0M2E4
MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1MWYzMmM1MC4uNjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFi
NTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0
X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQot
ICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0
RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVt
IGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShj
b25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRp
YV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJS
T1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0
YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2Fk
ID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVy
KCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5
c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQg
PyBwYXlsb2FkLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+KCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250
aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9h
ZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5k
KEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUsMTAgQEAgcHVibGljOgogICAgICAg
ICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBt
X3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFw
cGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5p
dERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQog
ICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtOTAsNyAr
OTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5
ZWZlYjZjN2Q0NDQ0Li5hNDJlNWJjNGFjY2YzNzIyYTVhZjljOTA1NDYyZDA4ZWQ4ODQxNjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0
aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVj
b21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBl
Z19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1h
cmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNz
X3N0cnVjdCogaW5mCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNp
Z25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0g
ICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1h
cmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVy
LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBp
Y2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNF
bXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIGJ1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2
NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1
YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYg
cHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9
CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJv
dmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtb
V2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlz
XSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5
OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAg
ICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9k
YXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1f
YXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1
ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwog
ICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3
cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlm
eSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAg
ICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAog
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBA
IC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21w
bGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9Owot
ICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICBy
ZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZh
NjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2
YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDgg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRh
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
IHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAg
ICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNw
b25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAg
c3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01
NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAg
ICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0g
Y2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGlu
Z0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3Rh
dGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisK
ICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6
OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNo
ZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcg
eyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJ
ZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywg
Y29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4
cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBi
dWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8g
YmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZG
b3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdl
IGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdl
IHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAg
ICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0
byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwg
cmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0g
ZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdl
dCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
YXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0
YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIo
dGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRh
IH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFz
a1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJh
bmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5y
YW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZl
QnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0
ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBi
dWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZm
ZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYg
KCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyAr
MTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4
cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRh
OjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEu
YnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAg
ICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgp
IHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcg
dGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5v
cmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0
KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBk
YXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9y
LT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkx
ZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2My
YTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51
dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwg
dXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYs
MTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1
cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmlu
ZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9i
dWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQu
c2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYx
LDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJv
b2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBt
X2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAg
IHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1f
YnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7
CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFw
cGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0
ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
cmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRj
NjY0Ni4uZDFhNzdiNThiNjQ0YTkwYjkwNGVmZGMxZmViYzZjMDY3NDRmOTIxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsK
IAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIqIGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3Jp
cHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVm
ZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsg
fQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRC
dWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDog
bnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZl
ciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250
YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQu
CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0
QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5jcHAKaW5kZXggYTRlMGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNy4u
ZTVmMzQ5YjQ4Mjc0NmY5ZWRiOWM1ZjYzMWJmYWQ0YjQxOTk4YmEwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZv
bnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzgsMTUgKzc5
LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAg
ICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAg
ICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKLSAgICAg
ICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOwotICAgICAgICAgICAgaWYgKGNvbnRpZ3Vv
dXNEYXRhKSB7Ci0gICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOwotICAgICAgICAgICAgfQorICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAgICAgICAg
ICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAg
ICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBlbmQoKmNv
bnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEyMSw5ICsxMjIsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFk
NWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDliYjUxMDI2ZjU4M2Ew
OWIxODQ3YTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9w
dGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRl
eHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBz
dHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91
cmw7IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9h
ZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGlu
ZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVk
ICYmIG1fZGF0YS0+aXNOdWxsKCk7IH0KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJp
dmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50
IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2Nv
bnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQx
NDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBA
IFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVh
ZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VU
eXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAg
ICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90
aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7
CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJv
bSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZp
Y2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVu
dFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5h
bE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3ht
bCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUp
OwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVl
c3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUo
KSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRF
cnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0g
bnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNO
dWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAg
IG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVs
bHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9
IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jl
c3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJj
YTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0
cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xh
c3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsK
IGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAg
ICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWls
ZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYjc3ODkzMmYyODFiNzEy
ZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMyZC4uNTRkYzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5
MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9p
ZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5
bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBz
eW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJz
KSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWRE
YXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmls
ZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJz
KSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRl
cnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlB
c2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMs
ICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
KSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5l
Y3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1f
cmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAg
ICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJv
bm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShy
ZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHko
KTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFy
YW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAg
ICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWRE
YXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3Bv
bnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICog
TUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAm
JiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1
ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWRE
YXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUg
PSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAK
ICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVp
cmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3Bv
bnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9idWZmZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011
bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hl
RW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9
IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQK
QEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NF
UlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7
CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBk
YXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25z
dCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4
OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5z
aXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2lu
UHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBP
UyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgog
ICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0g
ICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxs
KCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3Ro
OwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTEx
LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNo
cm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNo
cm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xv
YWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhl
IGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1
ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEt
PmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAg
ICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsK
KyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0
d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVE
YXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxF
QVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJl
Y2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlT
dG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEy
ODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXND
YWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7
Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENh
Y2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92
ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3Rv
cmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAg
bV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25z
ZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlz
IH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0
d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkp
IG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmICht
YXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5
N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4
IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3Mg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2Fk
RGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIg
bV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNo
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJv
b2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0
NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5mZTc1OWNlZGEyZDdiZDJlYWU4Nzg5
OTc4M2VmZjMzOTkyYTczYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CkBAIC00Niw3ICs0Niw2IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hl
JiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgOiBtX2NhY2hl
KGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hlRW50cnko
V1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hl
RW50cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMDksNyArMTA4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRS
ZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYg
KHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjYsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNo
ZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1p
bmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAx
MCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6
ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBt
YXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzgsMTEgKzEzNywxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKQogewogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJv
ZHkpIHsgfSk7CisgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgIW1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9v
cmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCks
IFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRp
YyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50
cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnko
bV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JD
YWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1f
b3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2Uo
KSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3
ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxl
dGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKaW5kZXggZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OC4u
NTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3NjcwMzU0ZmVhZDAwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2Vi
VVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5k
bGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMu
cmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1v
dmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRh
KG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNl
cHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0g
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIx
NywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0g
dHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9z
eW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsK
LQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsKKyAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3lu
Y1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBu
dWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigp
LCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAw
MDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVmZGFhYjdhNWExYmU2
YWRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBAIC00NCw2ICs0NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVp
bGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJpdmF0
ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFj
MjVkNTkxZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5W
aWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1
Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50
LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5n
VVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5k
aW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBs
dWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3Ojpt
YW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
CiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxT
dHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0g
ICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAg
ICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAg
ICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5W
aWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmll
dzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQg
fHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51
YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAg
ICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4g
bV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFu
dWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3Ry
ZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51
YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21h
bnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAg
IG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVu
dC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRy
OwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4z
NGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1
YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJl
c3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFt
RGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVj
dHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzVi
YTRkNjA5NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCAr
NzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAg
ICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNw
b25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
cmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkp
CisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAg
ICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCAr
MjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAg
ZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
LSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10o
Y29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVE
YXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAg
ICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFi
MWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZk
YjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4
Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2Fk
ZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVm
PFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJD
b3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNw
b25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4
NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi43NmM2MDI4ODgxMzUyMjA3MWEyMjc2OWQ3M2YyZDNl
ODA4YmFjM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRl
ckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5h
bWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBh
Z2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwg
bV9idWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQog
CkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5p
c2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdl
YlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVm
ZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFrZSgpLmdl
dCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAg
ICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZjMDdj
YjUzZGE4Ny4uYWUwNTBhOTkyM2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEzIEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViRnJhbWU7CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5n
IG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5
YjUuLjZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZyYW1l
Ojpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5
cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFt
KiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBf
SW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNU
QVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFH
X05PTkFNRSkpKSB7CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2Fk
RGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNU
UgogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxk
IGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAgICAg
ICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAo
U1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05H
PihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZl
ci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZm
ZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBl
LCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1
ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwog
ICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzgwODk0ZDA1Zjc2NzRlMzNkOTM3NzdmMmIzODQ3MGQwYmViN2Zj
NC4uOTJiN2QyNTUxYzc5YWU1MWU5OTIyZjRjYjQzZjU4MGQ4YzZkNzU1MSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJ
IHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAKaW5kZXggMWI3MzYzYTgyNzI1YzczODU0ZDQ5OTY4NDAzYmMwZmE0NTRhNjc2Ny4uMjIw
YTM4MDA3ODIzMWE1ZGI1MzRlNzQzMGRjZDhlNzdjZDBmMDc3ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKQEAgLTQ5LDcgKzQ5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwog
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKQEAgLTcyLDI0ICs3MiwxNiBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKICAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NF
UlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RS
VUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOwot
fQotCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOwotICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZl
ci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7
Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJs
ZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBi
dWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk3LDEwICs4OSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxs
byI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJb
XSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAs
IHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxl
bih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0
RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5n
ZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5h
dGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVj
dGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVD
VF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgp
LCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTEyLDEwICsxMDQsMTAgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50
cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxk
ZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUg
KyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50
IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBA
IC0xNTIsMTcgKzE0NCw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAi
bWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRp
cywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAg
ImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1
cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hh
cmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEw
MDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVm
ZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVm
ZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwot
ICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsK
LSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5n
dGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRl
cjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNv
cHkoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVy
MS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xv
bmUpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1Rf
RVEobGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIyLnRha2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIu
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBF
Q1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hh
cmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1
dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEw
LCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5y
ZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTgw
LDE5ICsyMDgsMjEgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAg
IFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKIAotICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMx
KSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczMpKTsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgw
KTsKICAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVE
YXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CiAgICAgYXV0byBnaDIgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7
CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwogICAg
IGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwpAQCAtMjAxLDYgKzIz
MSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBjaGVja0J1
ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVm
Z2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwogICAgIGNoZWNrQnVmZmVy
KGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoaWprbC5k
YXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKICAgICBFWFBFQ1RfRVEoZ2gxLnNpemUo
KSwgZ2gyLnNpemUoKSk7CiAgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwg
Z2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgp
LCAibCIpOwpAQCAtMjA5LDE2ICsyNDAsMTggQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdl
dFNvbWVEYXRhKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBh
dXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykg
ewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50
IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQp
KTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsK
ICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9
KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBi
dWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0g
ICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAn
ZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1
aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVy
LmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycs
ICdkJyB9IH0pLmdldCgpKTsKKwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwg
eyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9
LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAn
YScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0
KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKQEAgLTIyOCwxMSArMjYxLDEzIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4
NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVy
ID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJp
bmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVh
cigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsK
ICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKQEAgLTI1Mywx
NiArMjg4LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1dG8gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAg
ICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAx
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5p
c051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAwdSk7
CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hh
cmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAg
IEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVj
ayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpp
bmRleCA4NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3Li44YmZiODVlYzYx
ZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCwx
NiArNDgsMTcgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNE
YXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwor
ICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1w
dHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZl
ci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgp
OwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25z
dCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEs
IHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
IAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CkBAIC02OSwzMiArNzAsMzIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZU5TRGF0YUFycmF5KQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZv
ckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgp
OwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3
b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxs
b0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhl
bGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIg
c2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdl
dCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1
YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVn
ZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGls
ZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1l
bnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUg
KGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50
YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9u
ICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RC
eXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0
byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRv
RGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445826</attachid>
            <date>2021-12-03 03:06:10 -0800</date>
            <delta_ts>2021-12-03 03:40:24 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211203220607.patch</filename>
            <type>text/plain</type>
            <size>509367</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFlOTQxOTNkZmVkNjhi
NTg4ZDFlNDI1OGViNjk0OGVmMzJmZDFkYy4uMWMyYmJlMDRlZjI2ZmJmMTgyZjk2NWQyODI3NDkw
NjQ1ZTI5ZWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEludHJvZHVjZSBhIE1haW5UaHJlYWRCcmlkZ2UgY2xhc3MgaW5zaWRlIFdlYkxv
Y2tNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzZmUzMmQyYmRkYzJhZTEyYzJkNmNlNzg2MzNkOTM3MzVk
Y2EwOTguLmY1ZWM0NGIwNTYzNGFiNjQ1MTI3MmViNTY4N2MzNTM0OTkzYmM3ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTc4IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAg
ICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1
Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWls
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTAyICBSYWNoZWwgR2luc2JlcmcgIDxyZ2luc2JlcmdAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgZW51bSB2YWx1ZXMgY29uc2lzdGVuIGluIEFwcGxpY2F0aW9uTWFu
aWZlc3Q6Okljb246OlB1cnBvc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA3NmFh
NmFhZjg0ZGViMDgyZTRjODQzMjI0OTMzODBkODMzZGU5MmQxLi4wZjA4NmUzOWU1YmQ0NDU2MDJh
YWQyNjQzMTE1Y2U0ZGY2MzRiMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6
Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdl
RWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAo
LVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5j
b2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAg
ICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTAyICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gSG9vayB1
cCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwppbmRleCAwMmU5NDZiYzFmYjBiMzU2YmIxNWFiODM2MGU4NjE0NTU0NzI0N2NjLi4wYmE2Y2Vj
NWIwNjViOWZjNjk4MzQzNTczMTE5ZmVlZjk4NTUwMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRE
YXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1
MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0p
OgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVt
b3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNo
aXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
RGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAg
KiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2Up
OgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3Jr
IGFjcm9zcyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRk
YmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAg
LTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNs
aXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcg
bWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0
ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9T
YW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1
Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3
NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1h
Z2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVu
dC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRl
cyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVh
ZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5
MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZm
ZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFn
ZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAg
ICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VS
ZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEq
IG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1h
cEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDli
M2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1
NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBA
QCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNv
bnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAg
V1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChj
b25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZm
ZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFl
NzgzYTUyMDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLmRiM2MxMzY0Njk0OWI1Y2Y4NGVmOTIz
MzVlZjE0MTBhYTU0OTY2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxS
ZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVy
LT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBu
dWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNo
dW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2Ug
fV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcmVzcG9uc2UuY29uc3Vt
ZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciks
IHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9
IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTI5OSwxNSArMjk5LDE1IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8
UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+
ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQo
Y2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0
aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAKLXZvaWQg
RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4m
JiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VC
b2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRj
aFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhj
ZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
ZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsK
QEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2Fj
aGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3Bv
bnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwog
ICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZN
b3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdU
Rk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdU
Rk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJl
cXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21p
c2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAg
ICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VS
ZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNl
KSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBX
VEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0Fj
dGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAg
ICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNo
ZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2Us
IERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5r
ID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsg
V1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VE
YXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2Up
LCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFrZUNvbnRp
Z3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0
YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4
YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIq
IGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJl
c3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4m
JiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRp
b25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFz
cyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcg
UmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0
b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0
Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYy
YTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAg
IHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1
ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBh
bmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90
JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNw
b25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBj
b3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9
LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewor
ICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBS
ZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBb
XShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5
NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2
NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlD
YWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2Fj
aGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFy
eVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3Qg
Q2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25z
ZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4u
MmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5p
dGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9Owog
CiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYg
KCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmpl
Y3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFs
dWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXkt
PnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lk
cyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0
LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0
ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5
ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29u
c3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYg
KCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAg
ICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEo
KSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZl
clNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1
ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtl
eVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0
dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShw
YWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNv
dXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4o
V1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2
MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2ODJmYjQ5Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3
ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5h
c1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdU
Rk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgp
LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhE
YXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRo
ZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJs
b2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5
QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJu
ICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBk
YXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRl
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpj
cmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyAr
Mjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAg
YXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNo
Qm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0
YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhh
bmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhh
bmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNl
YXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhF
bmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNv
ZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVmZmVyKCkpCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZm
ZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmll
d0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdC
b2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkp
OwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0
Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0OwogCi0gICAgdXNp
bmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9ybURhdGEoUmVm
PEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBm
Y2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMWE3M2YzNDVlODJkOWU3
MDg1OThhYTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRp
YyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsK
LSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNl
dENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNs
ZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcm
IGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAg
ICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
dHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwg
dHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHBy
b21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRl
bnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0
YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgpLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShw
cm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9t
KCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA4LDcgQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNv
bnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZURhdGEoKTsK
LSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29u
dGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9y
bURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKICAg
ICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZv
cm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVF
cnJvcik7CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2Ut
PmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRh
dGEsIHNpemUpOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVy
LmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7
CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigp
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBh
cnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8Qmxv
Yj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRl
KGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUo
bV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVm
ZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0g
ICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRU
eXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+
ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJv
bVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIg
PSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGln
dW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRG
OChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQog
CkBAIC0zODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3Vt
ZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJv
ZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwot
ICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAg
ICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZl
ci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJi
MDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJm
NzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAg
IHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wg
aGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQg
c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRh
dGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
Jik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBw
cml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNl
OwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwog
ICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNGRmODQyNmM3MThiYTE2ZWNm
MGE0N2U3M2U5MDBkM2Y4NDhmNjRmMi4uYjkzNDM5MmE5MDNkNGE1ZmQxYzU0YWU4MTQ4YjJlNmU3
OWU3NmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
Ojpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0K
IApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVz
cG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAgICAg
ICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RG
TW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAg
ICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0ZDEzNjViZjVhNWJi
Li4zNzQ4YzhmNTkyNzI5MzBiYmMyZDE2NjZjNmFlYjU0N2ExYjVlZjA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBm
aW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3Bv
bnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHko
KTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6
ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRk
MDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyAr
NTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0
NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hs
aWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIK
IAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVj
b2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZl
ci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBk
YXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3
Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsK
ICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEz
ICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwg
Y29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBr
ZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktl
eVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4
X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVj
NGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2
YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCAr
MzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJp
YWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUs
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBib29s
IGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIz
MWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBi
b29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9y
ZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2Fj
dGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9i
ID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRo
QmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5
UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpA
QCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXgg
aW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRo
KGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAt
MTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNv
cmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBi
ZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRl
eCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUg
c3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4g
dGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFs
dWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVl
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVl
IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dy
ZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQg
dG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVz
cyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3Rl
bmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNh
Y3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAg
LTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVj
b3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4g
YW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQs
NyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlS
YW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJL
ZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsy
MTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBl
cktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjpt
YXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
dXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZv
ck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtl
eS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRl
eGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0
ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwog
CiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0
YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxv
d2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dl
ckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIg
SURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFu
Z2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkg
PSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdl
LnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFu
Z2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRp
b24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYw
NmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEw
MDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNR
TGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2Io
Y3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSki
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRl
SURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5k
QmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1l
bnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3Yjk0YzllN2ViMGJlNDhhZDM1ZGQ3MDc5Yzcw
YmIuLmNjNWE4NjU3MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNlMGI4NDA1YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQg
PSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0g
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdl
LmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3Nh
Z2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3Nh
Z2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAg
ICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4
ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApA
QCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xp
ZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRv
JiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3Nh
Z2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRp
ZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0
YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMzA5YzAyNjQz
ZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODllMC4uNjNmMWMzY2JlMWVhODFjZmJmNDU0NjQ2
MzIwY2RmN2ZhY2Y1OWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBA
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAg
ICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0
YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9yZXNv
dXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291
cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9k
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAogICAg
IG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVu
dCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhU
TUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2Rh
dGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5h
cHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAg
fTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAgIGlu
dmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsy
MDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBs
ZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5v
bk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAg
IG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCku
Z2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFs
aWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmlu
ZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIuLmNlMDA5ZDRlNWVk
YzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTMzLDcg
KzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAg
IFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3Jl
YWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtp
dE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4MmFjMjIxNjc5NmM5
ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3ZDdmZWIyMGJmMmIw
MzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0Qu
bW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVt
cG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgYXV0byBmaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxl
LCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFu
ZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVD
b3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMzMDgxOGYwY2E5MTZh
ODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBlZGZiOWVmZTc0ZTVj
MzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5k
bGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAg
ICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21w
aWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0
LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkp
OwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxl
ci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3Vy
Y2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYy
MmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1
ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAg
ICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwg
Km1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0g
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICgh
bV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBt
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNP
bmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCpt
X2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmlu
Z0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQot
ICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07Cisg
ICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAg
ICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3Jp
cHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBz
Y3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNj
cmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBt
X3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJp
bmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBjYWRjNGEwNTk0
YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQzOTk1NGYxOWJhNGI4MjM3YzllNWRh
ZWQ0MWU0YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3Rv
bVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVt
ZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFy
ZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNW
R1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVk
T1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKICAgICAgICAg
ICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
bV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAgICAgICAgICAgICAg
ICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1lZGlhdGVTb3VyY2Up
IHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0
ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkp
OworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVz
cygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21G
b250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBz
dWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uNmE4MmNm
MWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBG
b250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRp
b247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBG
b250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRp
bmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdz
OwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9y
PiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9h
ZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0
OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVx
dWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsK
ICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRlU291cmNlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxNzI0
Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0Li5mYTE0NjdkYjhlZDg3Mzc0N2Mw
NDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00
MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRB
dHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoZWxlbWVudCwgYWRkaXRpb25h
bFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmlu
ZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLmY1ZmNkY2NiNjY2
NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApA
QCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5z
ZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFz
cyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENvbW1hbmQ7CiBjbGFzcyBFZGl0
Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3IEBAIHB1YmxpYzoKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYK
IAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKSBjb25zdDsKQEAg
LTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRh
Rm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAjZW5kaWYKICNlbmRp
ZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hp
dmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0KCk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChF
bGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwm
KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
KTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lkIHBsYXRmb3JtRm9u
dEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2Vm
MDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4OWU5OThmN2U3NjIzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBA
IC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICBTdHJpbmcgbWlt
ZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1YjdhYTc1MjZiMmY3
YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4ODE4NzA0
OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0
ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAgICBh
dHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3Ry
aW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5sZW5n
dGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmli
dXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIg
YXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1
cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0
aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0
aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZv
aWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50
JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0
YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsKICAg
ICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CiAg
ICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0VHlw
ZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2Fy
ZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cgog
ICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCplbGVt
ZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQoV2Vi
QXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFw
cGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBFZGl0
b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVy
RGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUod2Vi
Q29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgpKTsK
ICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBubyBz
ZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMgYWx0
IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAtMjAx
LDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJM
JiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0
YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRl
Z2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5n
ZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1h
dChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9
IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFl
MzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcg
KzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChF
bGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291
cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYg
bWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxh
Y2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBm
aWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVX
cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
KHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5v
dEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0Zp
bGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwg
TlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0
cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgp
OwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAg
ICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNv
dXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMsNyArMjMyMyw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhU
TUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAoU2hhcmVkQnVmZmVy
KiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVu
ZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2
NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4MTY3OWY5ZjBmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgIHN0
cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZTsK
ICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAg
UmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0zMDksNyArMzA5LDcg
QEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBm
cmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIo
KSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZp
ZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0Vt
cHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAot
ICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCBy
ZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFn
ZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShu
YW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9i
amVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsK
QEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0
YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOwor
ICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCBy
ZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBh
dHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJl
ZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7
IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2
ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJp
bmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25O
dWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRp
b25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNPTGlzdFF1
aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5n
KT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgU3Ry
aW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVz
dGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChz
dWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJrdXBBbmRB
cmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5S
ZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5n
Ojpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAgICAgICAg
ICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVBcmNoaXZl
LmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRpemVNYXJr
dXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250ZW50
LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKIApAQCAt
NjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJ
bWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwog
ICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMCw3ICs2MzAs
NyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdl
dCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NDQs
NyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2Vz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRk
UmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpp
bmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJmMDliNzc3NTNkLi41ZjhiYzM0Nzdj
MWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFj
ZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChF
bGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAg
ICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7
CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+
cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAg
IC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2Un
ZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBB
cyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVt
ZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6
XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3NTIzMDE3YmE3
Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRjYTgxNGMyNjQ1
YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVj
dG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQ
YXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKICAg
ICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3VsdC5maWxl
U2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmlsZURhdGVT
dHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVu
dHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1w
bGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMgaW5saW5l
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0
YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1w
bGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRo
KCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0
b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVy
biBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2UKICAg
ICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRl
KCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERh
dGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5s
ZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0YSwgaXQg
d291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRlbXBsYXRlIGRh
dGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9yZSB0aGF0IGRv
Y3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVjdG9yeSBs
aXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUw
ZmY3My4uOGE2MTUwNDM5MTA5OWZmZTJlNGEwNmU3NDg5NmVmODg4ZWQwNDYwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC00
Nyw2ICs0Nyw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUgPSA1MCAqIDEwMDAgKiAxMDAwOyAvLyA1ME1CCiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCiAgICAg
LCBtX2xvYWRlcklkKGxvYWRlcklkKQorICAgICwgbV9kYXRhQnVmZmVyKG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNjQsNyArNjUsNyBAQCB1bnNpZ25l
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAg
ICBpZiAoaGFzRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICAg
ICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9
IG51bGxwdHI7CisgICAgICAgIG1fZGF0YUJ1ZmZlci0+cmVzZXQoKTsKICAgICB9CiAKICAgICBp
ZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODIsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVt
b3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAhbV9kYXRhQnVmZmVyLT5pc051bGwo
KTsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFM
ZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXIt
PnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwogfQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50
KCkpOwotICAgIGlmICghbV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
ZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci0+
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIHsKICAgICBBU1NFUlQo
IWhhc0NvbnRlbnQoKSk7CiAKLSAgICBzaXplX3QgZGF0YUxlbmd0aCA9IG1fZGF0YUJ1ZmZlci0+
c2l6ZSgpOworICAgIGF1dG8gYnVmZmVyID0gbV9kYXRhQnVmZmVyLT50YWtlKCktPm1ha2VDb250
aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUoKTsKIAogICAg
IGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAg
ICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5k
YXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVu
Z3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJu
IG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2Fl
MTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5kNzRlZTEwOTMzZDdlZTRlNWY3ZWY5Yjdj
NDA5MDlmZTk3ZDA3YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclBh
Z2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw2ICs0Miw3IEBAIGNs
YXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRS
ZXNvdXJjZURlY29kZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJC
dWlsZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC0xMDMsMTAgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxU
aW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFt
cDsgfQogICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsg
bV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVk
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1
ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9Cisg
ICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgp
IGNvbnN0OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7
CkBAIC0xMTksNyArMTIxLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rp
bmdOYW1lOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhQnVmZmVyOworICAgICAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9k
YXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAg
ICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4
Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAg
ICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291
cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291
cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1
bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBi
YXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
ICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVl
YWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWlu
UmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5n
KCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VB
Z2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29k
ZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNv
bnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAg
ICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRF
bmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQog
CiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdp
dGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFm
N2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENv
bnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
KQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVz
b3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNl
QnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAg
ICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsK
IH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5
NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2
MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBA
IHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVx
dWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRl
ci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2Fk
ZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlv
bnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2ZiMjE1
YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwOCwxMSArMTYw
OCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFk
ZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+
bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1h
aW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRh
dGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtl
Q29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1l
VHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXRE
YXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUo
KSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNv
dXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY1
Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2Vz
KCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1T
aGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitD
b250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEo
KSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAt
MjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5n
TXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7
CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNv
dXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURh
dGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQocmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsK
IH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4
NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBA
IGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJj
ZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwog
Y2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZl
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hp
dmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFt
ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VM
b2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAyLDcgKzYwMyw3
IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUp
IHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDlhNGQ0
YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1MWQ3
MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8v
IEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBv
cnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNv
dXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0
byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCmluZGV4IGMwODc4NWFmOGZjOTI0ZTM1M2ZmZDQ4M2RmN2I5NWRhMjQ0M2Fl
ODQuLjllOWYyOTQ2NzJmM2Q2MjI1MDNiMWU1NWIxNzk2ZjBjYTFlY2ZhNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9
CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwg
eyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdp
dGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYxMWZmYzMyZWE3
ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3NDY0NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAxLDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNs
aWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3Ry
aW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9m
cmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2lu
Z1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgp
Lm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1
ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0
LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0
aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlv
bklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRp
b25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4
IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3ZjkxYzYyNjIx
ZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hl
ZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAg
LTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFC
TEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2
ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7Cisg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hP
cHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6
bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgp
LCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRp
b24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFBy
aXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2
NjhlNDk1MTc2YWMyMzUuLjVlYjA2NTM2MGIxMGRmODFiNTZiZTY5NDc1MWRjZDkzMWU3ZGIwZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzYsNiArNzYs
NyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVy
KTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcihGcmFtZSYgZnJhbWUsIFJlc291cmNl
TG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9mcmFtZSB7ICZmcmFtZSB9CiAgICAgLCBt
X2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB9
CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBvcHRpb25zLmRlZmVyc0xvYWRpbmdQb2xp
Y3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nICYmIGZyYW1lLnBh
Z2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1fb3B0aW9ucyB7IG9wdGlvbnMgfQogewpA
QCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMo
KQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0gICAgbV9yZXNvdXJjZURhdGEgPSBudWxs
cHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0
YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQog
ICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90
QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBt
X3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3
aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwyNCArMzM1LDI0IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxv
YWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBtX3Jl
c291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJj
ZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRX
aG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKKwogICAgIGlm
IChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAgICAg
ZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAK
K2NvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsKK30KKwogdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAgIGlmIChtX3Jlc291cmNl
RGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgaWYgKCFtX3Jlc291
cmNlRGF0YS0+aXNOdWxsKCkpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwogfQog
CiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAgLTU3
MSw3ICs1NzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdp
dGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhh
cHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQg
bG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRD
YWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxv
YWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19j
YXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90
aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRm
ZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLmNmODIxNzRiZThlZDg2N2Q0
NzgzZWNhYTEzNmI1NzgzOTJjMjgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNz
IE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJl
c291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBw
cm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAg
ICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VE
YXRhLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25z
dDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29s
IGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
bV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYx
M2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywx
MSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJl
ZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFy
ZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVz
cG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgog
ICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQy
MGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhl
IHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJl
IGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBD
YWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNv
dWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5
MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNy
ZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxp
bmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiBy
ZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBh
IGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29w
eSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAg
ICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNl
LmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25D
YWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5v
cm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5v
dGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9y
IDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUg
bmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2Fk
KSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUg
ZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBp
ZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2Up
KSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAg
ICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkg
b25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAg
ICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4u
ZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAg
LTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1l
OwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5
YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3Qm
LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNh
Y2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFm
N2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlm
YzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0
YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0
aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0
aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1
MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVu
ZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAx
YjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5jNzcwZDc2NDEzNTA2NTJm
NWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3
ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJj
ZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRl
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRo
OwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRl
eHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2Ut
PmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAo
IWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50
KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEg
ZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVl
IHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlm
ICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7
CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJ
RChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJl
ZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hl
KHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVT
dGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAg
IGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5C
bG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0
cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcg
bG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0
ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAg
ICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQg
YnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7
CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0
byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAt
MTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5j
bHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYg
KCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0
YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgp
KSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwg
TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRh
LmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJl
c3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlz
dDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNw
b25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJl
c291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9
IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENG
U3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0g
Y3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9u
c2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1
NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7
Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwot
ICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNG
RGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7
Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yo
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRh
KDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7
CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBl
SUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMg
bm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFy
Y2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9u
YXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3Vy
Y2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJj
ZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAg
Ym9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJm
cmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBj
cmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJh
bWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJm
cmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6
OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBz
a2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0
byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgp
OwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8g
aXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgp
KQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9j
dW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAor
CiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNh
biBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2
ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJr
dXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2lu
aGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkg
KyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRj
YjJkMGJkYjgwMTVlLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAg
ICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3Vu
ZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBj
aGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVu
ZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNm
ZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBj
b250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOwor
ICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVh
ZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENo
YXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7
CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVj
aWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAg
ICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgo
KSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUu
bGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBm
b3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2Rl
ciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29udGVu
dC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxy
XG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5Myw5ICsxOTMs
MTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQo
Y29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVu
Y29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3Vz
Q29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYg
KCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBj
b250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6
QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAg
Ly8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3
ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMg
NSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1
NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVy
YXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgy
MDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li45MGQxYzZhMmJhOGM0YTQyZTFmZWJkODAx
ZTUyODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAg
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVmZmI2
OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0
ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBz
dGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxw
dHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rlcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2Yw
MDBiYTliMTc2Zi4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICBy
ZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29k
ZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0
IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsK
IH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZvaWQgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVl
dENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAg
IC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhl
IHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0g
ICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5j
b2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgp
CisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFy
IHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0
ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1
M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1
NjE2MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mOWFkNzcxM2M2
MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250
OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKG1f
ZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1LDcgQEAgU3Ry
aW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJl
dHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENh
Y2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wg
Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
ZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JPY2N1
cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBpbmc7
CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9
OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51
bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2Fj
aGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZvbnRD
bGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExvYWRl
ZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBj
ZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4xNTRkYjhjYmFiZjNkNWEz
OGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVk
c0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3Jh
cHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0
b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURh
dGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wg
aXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21G
b250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyArNzQsNyBA
QCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFG
cm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2
OTRlMGU2ZjZiNTQyLi43YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5
ICs0NjgsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91
cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEg
PSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5j
b2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywx
MiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRh
KCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRl
SW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFs
c1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0
U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkp
CisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRh
dGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BE
RihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UK
ICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRo
ZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWREYXRh
U3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJ
bnRlcm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdl
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJh
MGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZj
NzkzOTE1MTg2NmZhNDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZl
V2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBV
c2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURl
Y29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VE
YXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVl
ZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEp
IGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFT
dGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsK
QEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44
NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURh
dGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBhbnkg
dXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhhdmUg
dGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5jcmVt
ZW50YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAgIHdo
aWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTk2LDcgKzk2LDcgQEAg
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVu
Z3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1l
bnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3Vz
bHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlu
bmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0
YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0
ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVj
NGNiYWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAg
IHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0
dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQg
YWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJl
Y3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9h
ZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQyNWNkZGQxODAyMDky
MmY1ZWRiMjRkNGI5MTIwMDAyLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2FmNjE2
Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5
RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5z
aWduZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmco
ZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTEzLDcgKzkxMyw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRy
eVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7
CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw4ICs5MjcsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBu
ZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsK
KyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVm
ZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4
Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkgKzExMiw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9
CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0
YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1
bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBs
YWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0
cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAK
ICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJl
c291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hD
b3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkg
UGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVj
b2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmIwZjc2YTUw
OTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBA
IFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBt
X2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBh
IG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50
IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51
bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50
LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJp
Y3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5iMDEy
YmE5OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1
NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAg
ICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBt
X2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAg
ICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAt
OTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9u
dEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09U
RkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRl
ZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUo
KSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3
NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1
ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFs
aXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwog
ICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAg
UmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVs
ZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0
dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUu
LmI4N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAg
dW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRI
YXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2Ny
aXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVj
YzM0YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmlu
YWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJl
c291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEy
ODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5
NDJlOTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNo
ZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9u
SUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOwor
ICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3Vy
Y2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAg
IGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAK
LXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRh
dGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3
ODMyMWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRv
VXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQw
MGMuLmI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAg
LTYxLDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lk
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAg
IG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2Rl
ZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVu
Y29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsK
ICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3ZjYx
YjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEyNTRl
MmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmlu
YWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rlcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1
NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5
ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1
ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBw
cml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFM
OjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJj
ZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVx
dWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1
NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4
aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0
byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNv
bnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJv
bUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25z
ZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNo
ZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdT
dG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAt
MTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJM
UmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwg
YmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0Nh
Y2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJh
Y2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFj
a2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0
byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0
KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXgg
NTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDViYjdh
ZjkwZWJkYTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUg
UHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxM
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9v
cmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRl
cjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1
MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNTJmZmQ1MzdiZmQ2MmZmNjdkZWNk
NDY0YjY1ZmI2YzkwNTcwNjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJl
dmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29u
dmVydGVyJiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRS
ZXNwb25zZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERh
dGEtPnJlc2V0KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFBy
ZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2Ug
eyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZv
aWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVN
YWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9
PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRy
KCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7
CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZh
dWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2
aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmll
d0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJl
c3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9j
b252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9
Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwg
bV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBv
bGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNp
ZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYw
MzMzY2YuLmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IGYzN2QwNTliMGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMuLjZkNTFjNWU1
MTZhM2RiZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MTk1Miw3ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNv
bnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRp
bmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVu
dCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8v
IGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgp
OworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcAppbmRleCAxYTEyMTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5k
NzUwY2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05v
ZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1J
TUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwg
VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAg
Zm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIg
YSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9u
ZS4KICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50
cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsK
LSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9
CiB9CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jl
c291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJk
MTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJp
bmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBs
aWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRk
OWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdG
aWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmls
ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsK
ICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdh
ZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hh
cmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQog
ICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1
dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZm
ZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1l
ID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJy
YXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hh
cmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFy
Kys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+
KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fk
cy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhj
aGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXll
ZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYu
LjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3Vi
bGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNv
ZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBT
dHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRl
eCA3ZDI0N2RjZDFhMTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2Rj
Y2ExM2Q3MzkzNGFhMDQzNmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAg
LTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNP
UkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3Jp
Z2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1h
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0
cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVj
dCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2Uo
KTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBk
YXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJv
YXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4p
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1J
TUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShM
aXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUp
OwogICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwog
ICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25z
dCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3
YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1
MWQwMGQ2ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+
JiYgZGF0YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBj
b25zdGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9
IDE7CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdp
bjsKICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5j
b2RlciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZm
ZXJTaXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVj
b2RlcikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVi
b2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkw
MjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3Yzhj
NWZiZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFz
dGVib2FyZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJv
bVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRC
dWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJj
Li5hNzg4ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0
b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlm
CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0
cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25E
YXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5
MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0
MTIxZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1
MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250
ZW50T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAg
IFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9y
bWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJh
MzEwMDc0MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhi
M2Y2ZjBiY2E1NDM2NGFmYzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2Fy
ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rp
b25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0
cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQ
YXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZv
cm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1
ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJv
YXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVh
ZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0
NzY4Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBA
QCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBj
b25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRh
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4g
Km1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0
ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xp
ZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYg
KCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0Rh
dGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRh
KCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3
OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1
OTM5NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVy
Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNo
ZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdE
YXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwog
ICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5o
CmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1
YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlv
bmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFs
RGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1Yjlh
ZmQzOTAwMzUzNTM4NWQuLmJiZTM5MjNhMjA3YTBlOTM2MTE3MzA3NGY5NzYwN2ZhZDA1ODdkZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMgKzUw
LDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAg
bV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0
YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6
ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFwcGVu
ZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOworfQorCiAjaWYgVVNFKEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7CkBA
IC03MywyNiArNzgsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUo
bWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsg
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBw
ZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAg
aWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAg
ICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vz
cyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7
Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNl
Z21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50
cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAg
LTEwMywzMCArOTIsMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29t
YmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50
KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBX
ZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0
aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRl
ciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNp
bmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRy
dWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0
dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0
aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIq
Pih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEg
PSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50
cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkg
PT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVT
ZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVy
biBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rvcjx1
aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE4MSw2ICsxNTYsMjEg
QEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjpp
c0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFyZWRC
dWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91czsK
K30KKwogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpAQCAt
MjAyLDEwICsxOTIsOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50
b09uZVNlZ21lbnQpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMu
c2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVm
KCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9
CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDIsMjYg
QEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAK
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0
aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRh
LnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFT
aXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAg
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsK
K30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpAQCAt
MjQzLDE3ICsyMzUsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkg
Y29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRz
LnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7
IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAg
ICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3Zp
ZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHBy
b3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3Qg
RnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QK
IHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTM1NSw4ICszNDIsNyBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVu
dCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVu
ZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7
CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkK
K3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisK
K0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3VzQnVm
ZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAg
ICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3VvdXNC
dWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBj
b250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOworICAg
IG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
IDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1
ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBp
bmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgs
IG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3Vj
Y2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5z
ZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKCkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0
YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBkYXRhLmRhdGEoKTsgfSwKQEAgLTM5MSw3ICs0MjcsNyBAQCBjb25zdCB1aW50OF90KiBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxl
RGF0YSk7CiB9CkBAIC00MDIsNyArNDM4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1v
cnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAgIHJl
dHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkg
fX07CiB9CkBAIC00NTYsNyArNDkyLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0o
Y29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90IERh
dGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVf
dCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MTEsNyBAQCBzaXplX3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlz
aXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNl
Z21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxE
YXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQp
KQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQog
ICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25X
aXRoaW5TZWdtZW50KQpAQCAtNDk5LDE2ICs1MzUsMjEgQEAgY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEo
KSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNoYXIq
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBz
ZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdt
ZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRh
dGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUg
PSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7
IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBh
IGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0
IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNTc1LDcgQEAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9
CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIu
ZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5
MzY4YWQuLmFjYzZhOTNmMDg0NDU4NDg2ZmJhMGE1NjI2ZmNkNWUzMzVjNTNlM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMzMg
QEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
aGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBi
ZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3Rz
LgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFT
ZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNzIE1h
eVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgZGF0
YS5zaHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0
YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJy
YXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlm
CiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNv
bnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAg
ICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0
cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRC
dWZmZXImKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVz
ZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlm
IHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5n
IGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxs
IHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBp
ZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3Qg
Y2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25z
dDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQogCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBh
dm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBz
YWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90
PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29w
aWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVm
ZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIu
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0Owot
Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9
Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigp
OworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3Qq
KCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAg
ICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJl
Y2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBt
b2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0g
ICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNl
Z21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBj
b25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7
Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBi
b29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShH
TElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0
ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRh
KQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgog
I2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQotCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25z
dCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFBy
b3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQo
UHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShw
cm92aWRlcikpIHsgfQogCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAg
ICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1Jl
ZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisgICAg
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11
dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VO
REFUSU9OKQorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3Ig
Y3JlYXRlQ0ZEYXRhCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9Owor
CitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVk
QnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
cHJvdmlkZXIpKSk7IH0KIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAor
I2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5
PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0g
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVT
RShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0
TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAg
ICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7
CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciYmKTsKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5n
IGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFy
ZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRh
KCk7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIC8vIENyZWF0ZXMgYW4g
QXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRo
YXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMg
aW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNp
emVfdCBzaXplKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBj
b25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5n
dGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0
aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1
c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3
YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAK
ICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdp
blBvc2l0aW9uOwpAQCAtMjEwLDU1ICsxOTcsMTc2IEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRh
U2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFz
T25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVu
dCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0
YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0
YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJp
bmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhT
dHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25z
dDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50
OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNp
emVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMo
KSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1f
Y29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisjZW5k
aWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0gICAgdm9p
ZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CiAKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0
b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZl
ci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9y
RW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAK
LSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBt
dXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFs
c2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07
CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFs
bG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJl
bGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hh
cmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAg
ICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7Cisg
ICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAg
ICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNs
YXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBw
aW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
KyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdF
QkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9
OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNl
IHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRh
YmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgYnVm
ZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZm
ZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFr
ZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hv
dWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChi
dWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RG
TW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBt
X2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
KSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5k
KEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAg
IG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisK
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9
CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkg
OiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0g
bnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAg
ICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsK
KyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisg
ICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY4LDIxICszNzYsMjEgQEAgaW5s
aW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3Qg
cG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0
ZDo6bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYm
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3
U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hh
cmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBj
b25zdDsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciog
ZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lm
IFVTRShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNv
bnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7
CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNp
emVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0
IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29u
c3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBl
Li43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAg
ICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0
d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0Fy
dHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5n
ZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdv
cmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29y
a0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5o
YXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdi
ZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAg
LTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBt
X2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0g
YWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9y
b290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAs
IG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
aAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZj
YmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAg
IH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lk
IGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4
IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5
ZmMyMjhhNmQ5YWJiYzMyMGVmN2Y2YzhiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBm
b3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9u
LAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAh
VVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9
PSAxKSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENG
RGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigp
IGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0g
ICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQo
IW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBl
bmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUg
Kz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFl
NDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVz
Rm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVm
ZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5H
KFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
W05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFn
ZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJl
c2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0z
MTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNl
Y3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNv
bnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZl
ckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAu
LmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwx
MSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJm
YWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdl
YkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3Np
dGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJD
b3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsK
ICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxs
b2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERh
dGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNp
emUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpE
YXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6
ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRh
KSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsK
IH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBj
b25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAo
IW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUo
bnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAx
KTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVO
U0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRh
ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWlu
UHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29u
c3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGlu
aXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4u
NjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9v
dCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAg
ICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4
NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVm
ODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4
LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNM
b2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgp
IHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0
YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsK
ICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcs
NyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRz
TWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAg
ICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUs
MTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRh
IGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3Vz
SW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBj
b250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0
ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAg
IG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0
cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlk
cy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVy
biBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8g
Q2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0
RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4g
a2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1
LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21X
ZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0
IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAg
Ly8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRo
ZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBj
b250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmco
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkp
KTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhp
bml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5
SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xl
YXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4
IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNi
ZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEz
OSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2Rl
ciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5j
b2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRk
MzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtl
eSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4
Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAK
QEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQog
ICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19h
c3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7
CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgm
bV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRf
Z2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9k
YXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNf
Z2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9k
YXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNf
Z2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBl
NTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFj
MTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
fktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9p
ZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
ZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkx
N2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdS
ZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRy
PEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsK
ICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRl
c19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAg
fSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2Fz
dDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3Rf
Y2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0
NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6
OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmln
aW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3Jp
Z2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50
aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3Jp
Z2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9u
dDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9u
dDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQog
ewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGlu
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJl
YmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1
ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmls
aXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6
Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3Rp
dGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5
OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8s
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9w
dCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxs
cHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRD
YWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApp
bmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0
ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBA
IGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBp
cyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91
bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlv
bkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmlu
ZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRN
ZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJm
YzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2Rl
bD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwo
V1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1N
b2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwg
dXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAg
ICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJs
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3
OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0
MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9k
ZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3Ry
aW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYp
OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJp
bmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBl
OwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1f
bWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVm
UHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RG
TW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUo
KnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4
ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZh
ODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50
MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQz
MihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJf
dCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6
ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBA
IC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkK
IHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAg
IGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1
LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVp
bnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4
Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBz
aXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2
LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFy
ZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZU
b1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyAr
MjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6
ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAK
ICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZU
b1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAg
ICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4
NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdh
OThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBp
c1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVy
Jik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQg
b3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNv
bnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3
cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50
KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVy
dFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+
JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhl
IGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250
cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3
YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJl
IHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJl
MTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkw
MjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBK
U09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9
IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5n
IGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6
cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3
OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VK
U09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5p
bmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAt
NzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6
YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBI
QVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERh
dGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBw
c3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERh
dGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkp
OwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRh
V2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9u
czpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpA
QCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8g
ZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1
dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsK
LSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Np
b25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Np
b25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURp
cmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAg
ICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9j
ZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3Mo
KSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6
cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3Jl
cXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFtt
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtl
eVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5
UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRh
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1
ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJv
YmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29u
dGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5
MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0
YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFz
cygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVu
dGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxh
eWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAg
ICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50
aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVS
TF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAg
ICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlE
cy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRL
ZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250
ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRh
aW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3Qg
bWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdl
dCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmls
IGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAo
TlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRh
ID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJ
ZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZl
ckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBW
ZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+
OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZp
cnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAg
ICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmco
a2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0
cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5n
KCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5
bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0
KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5
SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRv
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAg
YXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250
ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQg
PSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3RE
YXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdU
Rk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtl
eVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFi
bGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
IGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkp
OwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmly
c3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50
aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250
ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3RE
YXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0
cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRk
ZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFy
ZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlz
XSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107
CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRl
ci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BS
SU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3Vz
bHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0
ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVw
ZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2
ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChh
bGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2Yjkx
YTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMs
NyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
QygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYm
IHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwg
QXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRh
a2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxh
Z3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBl
bmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3Ry
ZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2Ey
ZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTVi
NmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0
cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIy
YTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcy
ZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6
CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdl
YWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBA
IC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2Fk
RmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
OwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwot
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAg
IG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4
LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1
bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVy
OjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAg
ICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEp
KTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRp
bmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1
ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTli
YTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZm
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250
ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAg
LTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1f
Zm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlm
ZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3
MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMo
Q0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
aW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAg
ICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMs
NyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1
dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRl
Q0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYg
KHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBl
SWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNH
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAg
Ly8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3Jl
dGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAg
ICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUg
Q0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAg
Ly8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNl
VXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0
KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92
aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNE
YXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNh
bGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRC
dWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0
ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8v
IGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4K
ICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsg
MCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxl
YXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnBy
b3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNE
YXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92
aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApp
bmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlk
NjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5
LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJv
b2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERG
RG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBm
YjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9m
b250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZj
N2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6
ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0g
cmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+
ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0
ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRy
PENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNv
bnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYg
KFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZv
bnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBj
Y2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxp
YnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3Rh
dGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVG
cmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBj
NDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAg
ICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3Jv
bWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZv
bnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIu
ZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAo
ZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4
ZTg0YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9y
PHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1
cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2lu
QXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXgg
YmJiOGMxMzk2ZjAwM2Q2NDI2ODg5NzlhNjg0YzY2MWIxY2I4NzFiZS4uZDAxNGNjNmE1ZGM3YjE3
ZTM5OTYwMDZiZjZlYTY4YThiYzk5NGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAt
MzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5l
IGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3Vp
bnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVh
cmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
OwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVy
PiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXgg
OWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2
MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAog
CiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZm
ZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhy
ZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lu
bmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUo
KnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAg
fSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3OTc5NDgwZjkxYzU5N2FhOWY5MDA5N2MxODgzMmM2
YTE1YzMyY2U4Li5iMzI0Y2YxMTQ2NDdiMzM3NWU2YTQ1YmZhYjEwM2UwYTI5MGZiOGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY5
Miw3ICszNjkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVC
VUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Yg
c2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCks
CiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9N
RU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5p
dERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Cisg
ICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBp
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5
cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRl
eCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5
OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1Bh
cnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQg
bWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxl
bWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRh
UHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChH
TWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgK
ICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7
CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBz
c2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1
c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpw
c3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVy
cm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdN
YXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRF
bGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJ
bml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9h
ZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBh
eWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQw
OWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUw
YWM0OWRiNTg0NWQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaApAQCAtMzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9t
ZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAg
ICAgICAgOiBtX3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERh
dGEoKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBm
b3Igc3lzdGVtIHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29u
c3QgU3RyaW5nJiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwx
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFf
Y29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9S
LCBudWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
Ci0gICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEt
PmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9
IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
KSkKKyAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0
ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBh
eWxvYWQpKSkKICAgICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAo
YXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29u
dGlndW91cygpKSkKKyAgICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxv
YWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVu
ZChJbml0RGF0YSYmIGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgLy8gaXQncyBub3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAg
bV9zeXN0ZW1JZCA9IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5h
cHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmlu
aXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAg
ICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0K
ICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTg2LDEx
ICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9w
YXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3Mg
UHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5k
ZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1
ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVy
biBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50
YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCks
ICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2
NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJm
MDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsK
IAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3
YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2Yx
NDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3Vt
ZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBp
bml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50
UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5
MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZl
MWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHN0cnVjdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2Ugewog
ICAgIE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlw
ZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRh
bGljc0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQx
Nl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBo
IGdseXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50
XSkpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292
ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3Qg
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJl
Y3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9
IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBA
IC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAg
ICAgICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3Nl
bWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRo
RGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlz
VmFsaWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBA
QCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3Bl
blR5cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50
UmVjb3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVj
b3JkJ3MuCiAKLSAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFy
aWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+
JiB2YXJpYW50cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFu
dENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFu
dFJlY29yZHNbY291bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29u
c3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEds
eXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0
QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBl
TWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBn
ZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0Owog
ICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZz
ZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0
cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBob3Jpem9udGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlw
aENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQg
dmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0
aWNhbCBnbHlwaCBjb250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rp
b24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5
cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25z
dHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1
aW50MTZfdChob3Jpem9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyAr
MjA0LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlh
bnRzT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBt
YXRoQ29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAg
ICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0
IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAt
MjIwLDcgKzIyMCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJp
YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFy
aWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZz
ZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5
MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2
ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAs
NyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxP
cGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBs
aWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVO
QUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZl
cjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2Vs
aWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUw
NTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5
cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNo
MiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNo
MykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkp
KQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUo
Y29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkK
IHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9z
aXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAs
NyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNp
emUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAg
ICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0
aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05
OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGlu
dDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0
IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01B
VEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgot
ICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJh
Z2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5
cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAg
c3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8v
IENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIx
NmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJl
MTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApA
QCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQog
CiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3Jp
dGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMg
dGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0
aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50
OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1
aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNp
emUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYs
NyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBm
b250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRy
PEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9y
eVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwg
Zm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmlu
ZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1
YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5k
aWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVm
aXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01
NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7
CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29s
IHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYs
IFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4u
NzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0
dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZv
cm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3Qg
Q292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VP
ZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxD
b3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNp
bmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEz
MSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5U
eXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYg
bWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgs
IHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJz
dGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwg
R2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50Owog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3Vi
VGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFz
ZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVp
bnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQo
YnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVj
dCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3Vw
Q291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBi
b29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3Vw
cywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3Vw
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhb
Y291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJh
c2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0
dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRl
eCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAo
aW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkK
QEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0
dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAg
ICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5m
ZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxl
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBP
cGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBm
ZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVh
dHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVy
ZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3
LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwog
Ci0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lz
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRF
bmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBz
dHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQg
c2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxl
KiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlw
dExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25z
dCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBj
b3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRU
YWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0
IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAg
ICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2Ny
aXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0
KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1
ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3Vw
TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0
IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNj
cmlwdExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAg
Y29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZl
ciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVs
dExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFu
Z1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0g
c2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4
LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3Jp
cHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlw
ZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1
bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9
IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJv
b2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGlj
YWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpW
ZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJs
ZSkKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAog
c3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEg
PSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwog
ICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBA
IE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2Fk
TWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8g
TG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1
cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBi
dWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAg
ICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRh
YmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAg
ICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lk
IE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VC
VGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3Bl
blR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBp
ZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1f
dmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJl
MWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5p
cXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnRO
YW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVm
ZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJk
MDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3
MTFmNTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICsz
NiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNv
dXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVk
Q2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7
CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBA
IC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRh
dGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRl
eCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdj
ODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1
ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFt
ZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZl
ciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWEx
ZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3
MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVh
bChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VH
REkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRh
YmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJi
NDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdm
NzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9u
dFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZs
b2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmpl
Y3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRh
YmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElf
RVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERX
T1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEo
KSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7
Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwor
ICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBjZjJiNTFmNmYwMjgz
N2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1
OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Vs
ZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25E
YXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBs
YWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRS
ZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2Nh
blNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQotICAgIFNo
YXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQo
KTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0
YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9j
dXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9
IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJp
bmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1f
Y2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1
c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0
YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUw
YzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0
YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZm
ZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdz
IG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21l
bnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBk
YXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgp
KQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQu
Y29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0
YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9t
U2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5
NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5hNDJlNWJjNGFjY2YzNzIyYTVhZjljOTA1NDYyZDA4
ZWQ4ODQxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw5ICsy
MjAsOSBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFy
a2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0
KiBpbmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsK
ICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlz
dDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01h
cmtlcihtYXJrZXIpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBA
QCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXBy
ZXNzX3N0cnVjdCogaW5mbykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAg
IHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6
ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBi
dWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0
YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBK
UEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJv
ZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rl
cjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4u
YzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikg
eyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAg
dm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lk
IHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlm
CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0
ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFjNGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Omdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3Ry
aW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0
YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGll
bnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50
LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGll
bnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQu
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0g
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3
ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAg
ICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlm
IChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2
ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJp
YnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlm
IChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2
ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJp
YnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVs
bHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNl
bnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29u
dGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0
b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9h
cmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsK
IH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0g
cGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBk
YXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBp
ZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291
cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRV
VEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1J
TUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1h
Z2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlv
blNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5h
bWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYg
Ly8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQog
CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
KSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7
CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSku
Z2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAg
ICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJ
dGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5s
aW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEu
b3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRC
dWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAg
ICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAg
IC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVh
bURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAg
ICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxv
YWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAg
ICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVk
IHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMs
NyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0K
IAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1
ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlw
ZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAg
LTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5n
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilp
bmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRl
bXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFz
dGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAK
IFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkz
NjkxYmZlZGNjOTJiNDIuLjdhNGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJl
dmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJl
dmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEg
eyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5h
bFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAg
ICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYy
ZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2Mz
MTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYg
Y29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0
byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZp
bGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwu
dXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFw
cGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyBy
ZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJl
ZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
aWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0z
NjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
IHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAg
ICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lS
VEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAg
dGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0
ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2Yjkw
Y2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1
NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndl
YkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJp
bmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGll
bnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRh
OndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07
CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnRE
YXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwog
CiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3Rv
bURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFzdGVi
b2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFk
eVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwog
ICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4
MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUx
YTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlw
ZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBh
c3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtk
YXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9m
RmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBv
CiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYg
KE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBl
OkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBk
YXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlm
IChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBl
IDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlw
ZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0
Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAg
ICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBA
IC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdy
aXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9
IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2Fy
ZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShw
YXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURh
dGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRl
RGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVd
OwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
Y2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVN
SU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1U
eQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAg
TlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0
ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYg
KE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8g
bnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4g
Y3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0
YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAg
YXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjEx
Zjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUy
MzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRh
TG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsK
IAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNm
NS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3
LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAv
LyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0
YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhv
dXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVy
RGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUs
MTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEo
KQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9j
ayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+
YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0
YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEg
PSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50
YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggYTM3YTBk
ODc0ZjcyYmY5MWJkNTJjM2FjNmI1ODVkMzMzZjBmY2EzYy4uYjE3NDk3NDQ1NGJmNzM5ODkwOWNj
OGJlYTRkMGEzYjk1NzlhNzg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjps
ZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBj
b25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAg
aWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRh
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2
ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQx
NjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
VGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjks
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYg
Ym91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZl
cigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fs
d2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFt
KSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4
IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3
YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVE
YXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMz
NWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVj
dCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQor
ICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2Uo
JnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4
IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90
U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlv
bkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZ
ZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVm
ZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNs
YXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9
OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIy
ICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRh
dGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRh
dGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAg
Ly8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBh
ICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdl
cy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBs
ZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20g
dGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsK
ICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tE
YXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRh
aW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdl
bmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFz
ayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRh
ID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3Rh
dGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVz
cG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0
byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRh
c2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAg
ICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUlu
ZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4g
cmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMp
Ci0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0
YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpl
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVk
Q29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0g
bV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJh
bmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEw
YTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4
MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcg
KzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYu
c2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNl
bGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRh
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9m
Qnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRh
dGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4p
c3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlk
UmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4
M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkz
NmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3
IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAg
cmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGlu
Zy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0x
MzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAg
ICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBh
cmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1
c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9i
dWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRp
cGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsK
ICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwx
MyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAg
ICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkg
JiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBm
aW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0
Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNo
KSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxN
YXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhl
cmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwg
cHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91
bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRh
cnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1f
Ym91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5
OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAg
IGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmls
ZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xv
c2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5k
ZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkz
MjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUK
ICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
QnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1
cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZl
ci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERp
ZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0
NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi5jNDYwZjVmYTQwZGRhMjFkZWI0
NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDggQEAgc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1v
cnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRh
dGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayht
ZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAog
ICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdP
UkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAg
ICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9
IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3
cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBX
cml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xv
c2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRl
ZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1
MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7
CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9S
ZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0g
R2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAg
IERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZl
ci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBi
eXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFz
dEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7
CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmlu
ZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFi
Y2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1
dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3Rl
cnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3Ry
aW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3Bv
bnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlu
cyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NE
TUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRp
ZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNl
cnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6
ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNh
bGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFs
aWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNl
LT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3Ig
PSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNp
emUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJp
bmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQx
YzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5
M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2Ny
aXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmlu
Zy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAt
NDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICBy
ZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0
cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAg
bV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21l
bnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAg
LTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAK
IGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAm
JiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwor
ICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYm
IG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRh
KCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIt
PmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5k
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMx
MzRjNjY0Ni4uMzdmMWE0ODdmOGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
KTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAK
LSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVm
ZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBu
dWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVy
biBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5j
b3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2Rl
ZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29u
c3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQw
NGQ0YmQ0NS4uODVlNzYzODNkYWIzNTNhNGZjNGIwOWQxMjc3MTg1YTAwZTllMjM5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAt
NDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2Ug
bG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAs
IG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwg
bV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAt
NzUsMTIgKzc2LDIxIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJl
cXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0
Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJy
b3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOworfQorCiBib29sIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAg
aWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9p
c0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEp
OwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQor
ICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0
YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5h
cHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3Vy
bC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9
IHRydWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFk
NWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uMWIzZDc4NzBmMTI4YmZlNTM4ZWU2Yzk4NTljZGFh
ZTgxZTQ1ZTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9w
dGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRl
eHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBz
dHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91
cmw7IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9h
ZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGlu
ZygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0xvYWRpbmc7IH0KICAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2YXRlOgog
ICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxs
cHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAKaW5kZXggOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRlNTI0MC4u
MGJjZDk3NmVkYTlkNGE3ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3Bv
bnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMK
ICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRj
aE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50
LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0s
IFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAg
IH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1
ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2Mjhk
NTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4
IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdl
IG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZp
bmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNo
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNl
RmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5n
KCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6
WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAg
ICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0
MWNjNWUyOWNlOTZiNC4uZmNjYzJhOWVkMjBkNzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAg
WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFk
eVN0YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAg
ICwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpKQogICAgICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3Rp
bWVvdXRUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsK
QEAgLTIwNyw4ICsyMDgsOCBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYigpCiAKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9t
IE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmlj
aWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT5pc051bGwoKSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT50YWtlKCktPmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50
VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFs
TUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1s
IHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7
CiB9CkBAIC0yMTgsOCArMjE5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgp
ID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVy
cm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVm
ZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBu
dWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051
bGwoKSA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJl
c3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAg
bV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxs
cHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+cmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0g
ZmFsc2U7CiB9CiAKQEAgLTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVz
cG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBl
bHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+YXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCmluZGV4IDcyODk0YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNh
OTVhZWI3NTQ0ODliZDZjZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRw
UmVxdWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFz
cyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwog
Y2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAz
NjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBA
IHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAg
ICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxs
b3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hl
ZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3Qo
dXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThj
M2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMx
ZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBA
IHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAm
Z2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmVi
ZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApA
QCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJl
ZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVy
LT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byog
cG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1
ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRp
bWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5
MWRiMWU1YWJkODQxODRjNjMzNmM4Li41NGRjMjBhOWExOTVkNTllODhhZDQ0ZGI1NDA1ZTkyOTMz
MTM4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25v
dXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1
ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFw
cGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
CiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxO
ZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDEx
IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZN
b3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAg
ICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRp
YWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5n
VGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxl
ZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAg
IGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1l
ID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYg
KGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJh
bWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlm
ICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAg
ICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZElu
Zm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVt
QnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdU
aW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJp
bmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91
cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmICht
X3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAg
ICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0
aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0
IE5vdCBNb2RpZmllZApAQCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXAKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ug
b2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUu
CiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+
Y2FwYWNpdHkoKSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXpl
KCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQogICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKICAgICB9CiAgICAgaWYg
KGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6
IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNv
dXJjZSBoYW5kbGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVy
LT5zaXplKCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhLT5pc051bGwoKSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5j
b2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwpA
QCAtOTA5LDExICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdv
cmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLT5nZXQoKS5nZXQoKSwgbmV0d29y
a0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYm
ICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVl
IG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNl
bmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCpt
X2J1ZmZlcmVkRGF0YS0+Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2Fk
TWV0cmljcykpOwogICAgIH0KQEAgLTEyNTQsMTUgKzEyNTYsMTUgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQobV9i
dWZmZXJlZERhdGEpOworICAgIEFTU0VSVCghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKTsKICAg
ICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEtPmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI3OSw3ICsxMjgxLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3Jpbmcg
Y2FjaGUgZW50cnkgYmVjYXVzZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICBMT0FERVJfUkVM
RUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBi
ZWNhdXNlIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTI4NywxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2go
KSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1By
b2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJl
ZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9y
ZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9u
c2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Np
b24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtl
KCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sg
Y2FjaGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVy
ID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNo
ZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0
byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkK
ICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkp
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUw
Yzc3MzcwYTlmMTU5NTk3Zjk3Li4zNDVjMmZiYTc5OGM2ZGI2YWRiNzcyMTEzMGJlMDRmMGRmNDQx
NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQ2LDYgKzQ3LDggQEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9y
bURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIyNSw3ICsyMjgsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291
bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9z
eW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6
OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlk
YXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2Fj
aGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAw
NTU1ZjU3MjE2MWMzYzJmNC4uM2E1NTE3NDkwMWQ0Nzg5OWMxYzAyZDBkMjdhODg4YTdjYmRhNWQ2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92
ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2Fs
bGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5k
ZXggMWU3OGMyY2VmYTE1NDg0MTA0MDYwZjNiMTlkYzUwZTZjYjhmMWViNC4uNWM0YzhlNzFkNGRk
MzgzNWMxZDU3MjJiODFjYzdiNTk4NDBlOGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAg
dm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5
KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIz
ZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0
MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9
CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAg
ICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZm
NDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUy
Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0
b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNv
cmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihy
ZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwg
WyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
ICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAg
fSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcg
QEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVj
b3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBy
ZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3Rv
cmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdl
LmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmlu
ZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZh
MzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEs
OCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3Jk
KCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBi
b2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1f
YnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAg
IH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0g
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5
YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5kNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJj
OGM3YzQxODNjZWMxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNl
ID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkp
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVk
ZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlm
aWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3
LDEwICsxMjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2Fz
ZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0
KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIt
PnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkg
ewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVz
dCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8m
IG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3Jl
KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdl
dCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50
aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNo
ZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVu
dHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRy
eShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50
YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZl
Li42NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENv
bXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0
Zjk1YWQ4ZjBiNzgwN2Q3NDE3MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5Zjkx
NDU5MWQzMWNhOWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERh
dGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3Vs
dC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVH
Qnl0ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0
cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2Vm
NzEuLjExN2JjMTdjMzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApp
bmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEw
YzdiYjZkMTU4ZjQxMzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgog
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+KCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0K
KyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNo
YXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAg
ICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0g
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZm
ZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0K
IAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMx
MWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODVi
NjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBA
IC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1v
cnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBT
aGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJh
YjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5
MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3
ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGlu
IGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7
CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3
MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2
ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNo
aXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8
QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRh
KCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFu
Y2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBD
RlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3
MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBh
ODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkg
dGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIg
aXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0
YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZv
bnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBk
ZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFi
MWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEw
NSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5
ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVu
Y29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJu
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
b250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFj
OWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUm
IGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0o
KSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFy
ZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsK
ICAgICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaAppbmRleCBkYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVk
MDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3Vy
Y2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVh
YmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRC
dWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3Jh
cEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9y
eTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAz
NDA1NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+
PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
U2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQw
LDcgKzI0MCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09
IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBA
IHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
ZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAg
ICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3Qg
aSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29k
ZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29y
ZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VC
b2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dp
dGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRp
b25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICho
YXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1
ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVl
OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1
ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFs
PFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxp
emVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RG
TW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMx
LDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxS
ZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5v
bk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
K3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKwor
c3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1No
YXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRm
MWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiAr
MTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsK
IGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsK
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShE
ZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVk
OWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBA
IHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRh
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0
b21EYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9t
RGF0YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsK
KyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5j
cHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRh
NTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3
ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8
UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6
OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRl
c0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250
RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5j
OTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBA
QCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFn
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5n
JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgK
aW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVj
OTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNG
aWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
QEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2Uo
Ym9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9z
aW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKaW5kZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0
NmFjOTA0MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0x
NDAsNyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5
KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+
KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0
IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMx
OWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5
NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50
Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdy
YXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+
ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0
YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRh
Y2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCBjNGVlNTI1MDc2NDJkYjRlNTRjZmFkZjdmZWUzYmYxYjdjMGQzZDNjLi4wMWM4
MTAyNzhlZjYzNTkxNzJmOGU2NWI1MmNmY2IwYjUyMWI3ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBA
IC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQm
KWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hs
aWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19X
S0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdo
dC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8g
d2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhp
Z2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5O
ZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dl
YlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3Vw
OmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcAppbmRleCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1
NmFhNDE3YjUxZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIx
MSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24s
IEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAg
ICAgIGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFf
d2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAg
ICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAg
ICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2
YjFlNjQ1OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICgh
bmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8
aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
OworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJW
aWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3
YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRm
NDRlMDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5
ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29y
ZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2Fy
ZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlw
ZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3Bh
Z2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsK
KyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdElu
ZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4
OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNT
dHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24s
IHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVC
dWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92
aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAq
dAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1h
Z2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0
byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBl
OnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0lt
cGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BE
ZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJ
bWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgp
XSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0g
b3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1
ODQsNyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFz
dGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5p
ZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJh
bFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklk
ZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9h
cmREYXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJD
b3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2
OWQ2OTJhODI0MDkyOC4uNTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
LCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3Jt
YXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29u
c3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9y
UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5n
VGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIwNDUzOWQ2MDA1ZDU0M2JjNjJmYjg5MDU5OTY0
Njg5MzJhMzNlOTIuLmYzYWQ1NzZiMzMzYTkzMjk1MDA2M2Y3YTNhOTRjZjU3NzNiNDJjNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc5LDcgKzExNzksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBt
YWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmly
c3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi41
ODU0N2Q4NDg4MWRjODMwZjY5NjlhMGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJV
UkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRs
ZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5y
ZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92
ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2Vw
dGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAg
ICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3
LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0
cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5
bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBz
aXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9
IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsK
ICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBX
VEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29t
cGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJ
RCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2
Ny4uYjA3YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRD
b21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJj
NDE1ZDU2ZTA2NzhjMzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVj
ZmU5NjdhYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rp
b25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAg
ICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJ
bWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmlu
Z1BvbGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVj
dG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3
YmU5ZjBhMTAyNTA4Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3Jt
YXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29u
dGVudFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGlt
YWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxO
U0RhdGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUlt
YWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxM
LCBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFhODFjY2U0NDU1ZWIxYTcyYjEwZThmMjQ3M2M2
MGEyOTFlYTU4YmEuLjBjNjI1YzMwZDMwM2ZiZDk4NDliODRiNmU3YWFmYTM0Y2Y3YzM0OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0
aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAg
ICBOU0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQ
YXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSkgaW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxD
dXN0b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAg
ICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1
ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAg
ICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTksNyArNjU5OSw3IEBAIHN0YXRp
YyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAq
cGFzdGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAh
PSBvcmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTcwLDcg
Kzc1NzAsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNz
aXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RS
SU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZv
ciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0
YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJ
bWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9
IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJ
SW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJl
U2hlZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3Qg
dG9WaWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBj
ODI0OWRhNDY3Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1
NWFhMDdkYjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVBy
b3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCmluZGV4IGUwM2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLmE3ZmI0
YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0
cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94
eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
CmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTll
NzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBO
b2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0
IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0
ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdv
U3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNv
bnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAw
MWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBj
M2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3
IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVk
aXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5f
ZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdl
YktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3
ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQ
bHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRh
QnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERh
dGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwog
ICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAg
ICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBw
YXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5
VHlwZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwog
ICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTEx
ZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxX
cml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53
aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFu
Z2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFn
ZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewog
ICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdL
QXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0
cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNP
ZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygp
LCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2
ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJp
bmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9u
KFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZv
aWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7
CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50
RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wg
aXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2
OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVl
c3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVm
ZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2Vk
IGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRh
UmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFt
ZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAt
NzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExv
YWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6
RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZl
ci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVy
LT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6
OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZl
ciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExv
YWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdl
dCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSks
IHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRh
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1
OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21h
Yy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBA
IHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29y
ZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEo
KS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4
Yi4uZGRkNDljNDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFu
ZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVk
M2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVl
YjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3
b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwg
d2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50
ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIo
KSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9p
bnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3Jl
TG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdl
OWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkxZWNmNGRmNDYxNTg1
MmEwMjA4N2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhU
TUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwog
ICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1f
cGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1l
ckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9
CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51
YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51
YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRl
cywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2
b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFt
U3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVu
ZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0g
ICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxT
dHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJl
YW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRh
LT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsx
MjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBt
YW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAg
ICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0g
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisg
ICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkp
OwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlm
IChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2
ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJk
NDc0NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBt
b3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRo
aXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVn
aW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBt
X3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYu
Ljc2ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAg
ICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jl
c3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hh
cmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgp
CiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsK
ICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAg
fSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2
ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVy
QnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkp
OwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAg
ICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3
MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29s
IG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07
Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVu
aXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9v
bCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3
NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0y
NjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJh
bmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgp
LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBl
cywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4
ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4
MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChX
ZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJD
b3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVm
OTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURh
dGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+
c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNp
emUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXIt
PnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2
YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uNmYzZjU2NmM1MmYxZTM5ZGVmMDBiNWYzMTlm
ZWJhZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEz
MiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBw
YWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Okdl
dFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0
aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBp
ZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdl
dERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRl
QnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3Zl
cnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNz
YWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMzI0LDcgKzMyNCw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0
ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGlu
ZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4zZmYzNTU4MDhl
MWQ2ZWIyYWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9y
PFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmlu
Z3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
bGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNl
bmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
PiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAu
Ljc2YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1f
dXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lk
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2Vi
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVy
LT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAg
IG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRp
ZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAw
NDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5hZTA1MGE5OTIzZWE3ZWY5
NTU1Y2JhMTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTU0LDcgKzU5
LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBT
dHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7
Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIz
YzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNj
YmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUw
LDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNl
ICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRh
KCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAg
c2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJl
ZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpA
QCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVt
b3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwog
ICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBh
cmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBO
U0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVm
ZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAg
ICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXgg
OWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3
MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJGcmFt
ZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VE
YXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5S
ZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rl
ci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZSht
YWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURh
dGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNv
bnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li4y
ZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcg
KzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlv
bigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXgg
ZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNj
ODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSAr
MjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlL
SVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRy
dWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyAr
MjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4u
NjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyAr
Mzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0
YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VC
dWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1
ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNi
MzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJl
dHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFh
NGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJk
ZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJp
bmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4x
MTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVz
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5
LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgs
IHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIu
LmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0
NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3Jl
bGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVw
cmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVm
NDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJm
M2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAg
LSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNl
CiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAg
IAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5k
YXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAg
IGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVu
dExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFy
Y2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2
MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2Ex
ZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4g
Y3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAg
ICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYg
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0g
ICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0
V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZm
ZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5n
ZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3Vy
Y2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYTAx
MWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZv
aWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291
cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRh
dGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwg
PSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmls
LCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwot
ICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3Vy
Y2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAg
ICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZy
YW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNv
dXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVy
IGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAg
ICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5
cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5Oldl
YlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNE
YXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcg
Kilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2Rpbmco
KTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJl
dHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURh
dGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNp
emUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFj
Y2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4
NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5j
cHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9y
eVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3Ry
ZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9y
eVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0
cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92
ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXgg
MmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2Ri
MTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1
YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+
IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0
YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCBy
aWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09N
X091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0o
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFt
KCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6
ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5
ZmUxYTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5
YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2
NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0q
KiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZE
YXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZE
YXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJu
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8o
c3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYx
Y2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNm
YjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+Jiwg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBjMTY3Y2EyOTIyM2Vl
YTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAz
NjUxMjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZp
bmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rp
b25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXgg
YjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBi
MWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6
OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2Fk
ZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVm
VG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3Ry
ZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091
dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBl
NjgyMzE5YjUuLjZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdl
YkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIg
bWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJ
U3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdO
YW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAog
ICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNU
QVRGTEFHX05PTkFNRSkpKSB7CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1l
Ojpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9J
bl8gQlNUUgogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHks
IHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAg
ICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAg
ICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0
PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0
YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1p
bWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNo
YXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxw
dHIpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4u
MmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6
fldlYlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNl
Iik7CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9y
eVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZN
b3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZl
Yjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4
OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5oCkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGlj
IElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJ
bnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5j
ZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwg
X0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBiYWY3ZjcwZmYzYTdhNTk4MmY3ZjRiYTY1ZTQy
YjAxMjc0Y2U0YTIuLjRlYzM0YTY0ODMwZGNmNzI3ZjU2ODI5NThlNjM3ZGRmYTE0OTJhMWYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0MSBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIENvbXBpbGF0aW9uIGVycm9yIG9uIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzk3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2MDAw
NTY5CisKKyAgICAgICAgVW5yZXZpZXdlZCBBUEkgdGVzdCBidWlsZCBmaXguCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisKKzIw
MjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkg
dGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJl
ZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMw
CisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTExLTI5ICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbcmVzdWx0c2RicHldIE1ha2UgUHl0aG9u
IDMuMTAgY29tcGF0aWJsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2Iy
MTJjN2NhNDY4Li4yMjBhMzgwMDc4MjMxYTVkYjUzNGU3NDMwZGNkOGU3N2NkMGYwNzdkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24g
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQzLDQ1IEBAIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhD
b250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhp
c3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhp
c3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwog
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0g
U3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNT
RVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAg
ICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29w
eSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwog
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVk
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIo
KTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFi
dWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwg
Y29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSAr
IDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
KTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5n
ZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDEwICs4OSwxMCBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBb
XSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0
ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTAp
KTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEp
KTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIp
KTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0
ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0
YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0
cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
YnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVk
Q29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3Ry
bGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZl
ci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTExLDEwICsx
MDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFy
Z2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0g
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VR
KDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsg
KytpKSB7CkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29w
eSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0
LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1
cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2Us
IHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVz
dERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVp
bGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0
RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAg
ICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6
ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0g
c2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5z
aXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVm
ZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3Ro
ICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6
ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsKKyAgICBFWFBFQ1RfRVEo
bGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5
LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
K30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0
RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0
RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNO
dWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8g
Y29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2Uo
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0
cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNv
cHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNh
bAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
KyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwor
ICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9p
ZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgs
IGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc1LDYwICsyMDQsNzAgQEAgc3RhdGljIHZvaWQg
Y2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBj
b25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+
IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsK
KyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RG
TW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAg
YXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVy
LT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7
CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRh
KDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8g
Z2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVE
YXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZm
ZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdo
LmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBn
aDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJo
Iik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwog
ICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1
ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CisgICAg
Y2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZm
ZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIEVYUEVDVF9F
UShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBn
aDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEo
KSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFs
VG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+
JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAo
YXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFr
ZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAn
YycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywg
J2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQo
KSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2Mn
LCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNU
X0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtl
QnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0p
LmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBt
YWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkp
OworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYics
ICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1Rf
RVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQo
KSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEg
PSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAg
YXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVy
LT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBi
dWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0K
IApAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0
KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7
Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVY
UEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAu
LjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwo
TlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAg
YnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWls
ZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEg
KmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9E
YXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEg
XSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Cisg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRn
ZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEg
XSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05T
RGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxs
b0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAg
IGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5
dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5h
cHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAq
ZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50
ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsK
IAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0
byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDog
KmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50
LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQr
K11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50
KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENv
dW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAg
ICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3Np
dGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAg
ICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRh
KHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3Jl
YXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7
CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAg
ICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7
CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRT
aXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21l
RGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNy
ZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJ
SVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXpl
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCAzZTA5NWYzOGQ1YWQzOGQ2ZjcyYjY1OTVlOTM2
Mzc5NmUxYmNlNmNlLi43YmExZjI0N2Y3OTY5YWQ4OGQ4MzY0OWUxMTdjMjJhNWRlZWE2NGE2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hE
YWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQ
dXNoRGFlbW9uLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZlYXR1
cmUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
PgorI2ltcG9ydCA8YXJyYXk+CiAjaW1wb3J0IDxtYWNoL21hY2hfaW5pdC5oPgogI2ltcG9ydCA8
bWFjaC90YXNrLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445827</attachid>
            <date>2021-12-03 03:06:48 -0800</date>
            <delta_ts>2021-12-03 03:40:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211203220646.patch</filename>
            <type>text/plain</type>
            <size>132970</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQyNzI1MThjNDFiN2Yy
YzM0YTZmMDMwOTNiOGI5OTljMzkzZGE4My4uMWMyYmJlMDRlZjI2ZmJmMTgyZjk2NWQyODI3NDkw
NjQ1ZTI5ZWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZGZhMmI4MjM0MWI3YjZjNWUwYmUwOTlm
ZmM1OTdiMjI2M2E5NjFiLi5mNWVjNDRiMDU2MzRhYjY0NTEyNzJlYjU2ODdjMzUzNDk5M2JjN2Uw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZiNWM0ZjJiMGZk
ZWUuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0
ZjU2MC4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRh
ID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikK
ICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hh
cmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5p
c051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVz
b3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2
NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4NjdkNDc4M2VjYWExMzZiNTc4MzkyYzI4MGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
QEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBS
ZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50
IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJl
c291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0
YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7
CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jl
cXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUg
cmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0
OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0
ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAt
MzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0K
KyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2Iz
ZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0Yzcx
MjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRh
KCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Ut
PmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkuLmM3NzBkNzY0
MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRh
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNo
ZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcg
ZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3Mywx
MiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVj
dXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJj
ZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBk
YXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVt
b3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0
YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2Ut
PnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA3
MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmLi40MDI1Yjk4MGU1ZWU2ODJk
YjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNF
bXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBj
b250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5k
YXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBp
ZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJp
bmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVu
dC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3Zl
KHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVy
LnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUu
YXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBs
aW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUu
dXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVu
ZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1p
bWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQ
cmludGFibGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0
aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFz
IHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGlu
ZXMuCi0gICAgICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAg
ICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTE5MywxMCArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIs
CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgYXV0byBjb250aWd1b3Vz
Q29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBjb250aWd1b3Vz
Q29udGVudCA9IGNvbnRlbnQudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAo
bWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVh
ZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShj
b250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAg
ICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBh
cnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNSwxMSArMjA1LDExIEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5k
YXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5Ogot
ICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY2MWE5OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZi
MTNiNGYuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsK
IH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChk
YXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIx
NGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBk
b2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VE
ZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
ZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA2
NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwLi45ZDJkYzczNjQ4MDJkMGQ2
MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2Vk
U3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAg
IGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApp
bmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2Mw
MTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCmluZGV4IGY2NDMzM2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0
YTI1Y2MuLmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
dm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVu
dCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExv
YWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmgKaW5kZXggMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2Zjgx
MTg2ZC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZh
dGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29u
c3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENs
aWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCmluZGV4IDcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBh
ZGM4OWUuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2OCw3
IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUlt
YWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50
ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
SW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBA
IC01MjMsNyArNTIzLDcgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFn
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RV
cGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50
ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1
ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVk
SW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9k
YXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDVj
MzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUuLmQ1MTNlMTZjYmE1YTk3MDdj
MzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFz
UmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVs
YXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAg
ICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAg
ICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJ
bWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAg
ICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJD
b250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA4NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkx
ZTk4Zjk5MjRiZDFjLi44NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4g
Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4g
ZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgLy8gU2tpcCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9v
cHMuIFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAg
IGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwog
fQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0
YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9t
IHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEg
cnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdm
ZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wg
c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIs
NyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25P
dmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hM
b2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBS
ZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlv
bmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGRl
NzhhY2IyMjEwYTFmZjRlZmE5NmMwNWY4NDkxOWIyNjVkMDFjYWQuLmNmNGYwMmM1ZDc0MzRjYjY1
Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAg
ICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGNjZTU4
MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcuLjIxOGQ3NGYyNzc2YTk2NWZjZWE0
OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZp
cnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0
UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJy
b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCmluZGV4IGRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUuLmIw
Zjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIs
NyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVh
dGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBh
cmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3
ZWFhLi5iMDEyYmE5OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyAr
NDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggZWVkYjZiMzdlNDIyMWI4Zjk4
MjY5NGViMDk2YTAyOWZkMWI4MWU2MS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4
NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKQEAgLTk2LDcgKzk2LDcgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkK
ICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChk
YXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZl
MzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZj
MmM3ZTYzNDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4
IGFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEuLjU0MjY2ZGQ5MDgxOWMz
NGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZFRleHRU
cmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBB
TDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9kYXRh
ID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0
ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBk
YXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEp
OwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4
dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwog
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIw
NjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNm
NGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRl
eCBjMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwLi5iOWE2NTg3NTNjZTlm
N2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4u
YzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBt
X2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1
MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYg
KzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmlu
YWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcy
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRl
cjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1f
cmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVy
dGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
CmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZkNTM3
YmZkNjJmZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1f
aGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAg
IG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBh
dXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3
ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclBy
ZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVy
Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIs
ICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3Jp
Z2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+
Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xv
YWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVy
Ojp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6
OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0
ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVu
dChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnBy
ZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9z
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdz
KCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRj
YjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1
NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3Im
IFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7
CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIy
Miw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRp
ZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1w
dHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRh
LT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFz
Q2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJh
NjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgyYjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJE
YXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3
ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3By
ZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJk
NDA1ZTVhYzhmLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQwNTg3ZGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTE5Miw3ICsxOTIsNiBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNl
cnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKICAgICAg
ICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5j
b3B5UmVmKCkgfSk7CkBAIC0yMDMsNyArMjAyLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1fY29u
dGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKQEAgLTIxMyw3ICsyMTEsNiBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6
ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNTlmMGNhMmM0NmMwMzIyMDhiNjc4ODMxYzI0
NjFjZjFjYjAyYzBkZi4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2MjZmY2Q1ZTMzNWM1M2UzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xODEsMTkg
KzE4MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3Vz
KCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRC
dWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwg
c2l6ZV90KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8
dWludDhfdD4mJik7Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCi0jaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xlYXIoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNv
cHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwpAQCAtMjQ5LDYgKzIzNiwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Cisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRh
ICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
KwogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0
dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlv
bikgY29uc3Q7CkBAIC0yNzUsMTEgKzI3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0K
IAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCi0gICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFz
ZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKLQogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CkBAIC0zMDYsNiArMzAyLDcxIEBA
IHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
CiB9OwogCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0Owor
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJl
bmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpi
dWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8g
dGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIg
c2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlm
IChidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQo
V1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAg
OiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBw
ZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAg
ICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgp
OyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5
KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVy
ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAg
IHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigp
CisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IuLjJh
ZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtl
eUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgog
ICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7Cisg
ICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3VzSW5pdERh
dGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBjb250aWd1
b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5
SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtl
eUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0
YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsK
KyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogCiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5
SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xl
YXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2
YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRj
MTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAog
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJl
dGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5k
ZXggZGY2MmIzZDczNjNlZWU2OWVlZTI3MjJhNGNkMDZhMmRhNDlhNjBlOC4uYjZlMjM3YjVkZjVk
ZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07
CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
Ojpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkp
OwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZv
aWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
QVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVx
dWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5ZWRk
NzkzM2YzN2M0NTFmMzJjNTAuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0NWQw
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgs
OCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25f
ZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBtX3Bh
eWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1
bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1
aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5
cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAi
Y2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1f
cGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAg
ICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAg
ICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFr
ZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7
CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXls
b2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAg
ICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGlu
aXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3Qg
dmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGlu
aXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRh
LnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQo
KSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBj
b25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXls
b2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5
bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTkwLDcgKzkzLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07
CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NC4u
YTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NN
YXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0
KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2Vy
X3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXIt
Pm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtlcihtYXJrZXIpKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZgog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6
ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXIt
PmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBp
Y2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSks
IG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5t
YWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBh
NTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZlNjNl
ZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdD
b252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdD
b252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAg
IDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9wcmV2
aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlk
ZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252
ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjEx
Zjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUy
MzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRh
TG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsK
IAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNm
NS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3
LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAv
LyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0
YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhv
dXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVy
RGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUs
MTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEo
KQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9j
ayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+
YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0
YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEg
PSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50
YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNm
MmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAg
ICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5h
bFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2Up
CiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0
YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBz
dHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0
Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNl
U3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBT
ZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VT
dGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxS
ZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRh
c2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxS
ZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJv
b2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+
IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJl
cXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRM
ZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVz
dCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vz
bid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50
aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhl
IGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdl
dCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAg
aWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVz
VG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFr
UHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAg
ICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIs
IGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3Ig
PSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAg
IGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4Owog
ICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZm
ZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5z
aXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRM
ZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgp
OworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVy
ZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7
CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNl
VG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3
NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAK
IFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBT
Y3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZl
ciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVy
Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAg
IH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAg
U3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZl
cjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2lu
KCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZm
ZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+
YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNj
cmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9i
dWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBh
dXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRh
KCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRm
OC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3
ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVy
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBT
Y3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1f
YnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIp
OyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZm
ZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1f
YnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5n
bGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmlu
ZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBD
b250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAog
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CmluZGV4IGE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcuLjg1ZTc2Mzgz
ZGFiMzUzYTRmYzRiMDlkMTI3NzE4NWEwMGU5ZTIzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJl
cXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFx
dWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc1LDE4ICs3NiwyMyBAQCB2
b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2Vy
R2xvYmFsU2NvcGUpCiAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9w
dGlvbnMpOwogfQogCitib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9k
YXRhLT5pc051bGwoKTsKK30KKwogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAg
ICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAg
ICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwotICAgICAg
ICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7Ci0gICAgICAgICAgICBpZiAoY29udGlndW91
c0RhdGEpIHsKLSAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAg
ICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAg
ICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29u
dGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTIxLDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1
ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFl
ODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0
cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Vy
bDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2Fk
aW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5n
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxw
dHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5
Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRw
UmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
ICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkp
CiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRp
bWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3
LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9i
KCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29y
a1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50Lgog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIs
IG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRh
a2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0g
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlw
ZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2gg
bWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAg
LTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVz
cG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkp
OwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNy
ZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7
CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6
IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VC
dWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0
ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0g
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsK
IH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1
aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2Ugewog
ICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBl
bmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5k
ZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1
NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJv
dHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBV
UkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jl
c3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGI3Nzg5MzJmMjgxYjcxMmUwMGZmN2Fm
MjY2YWEzOWJkZDIwMWMzMmQuLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhm
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJl
cGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91
c0xvYWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25v
dXNSZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAg
ICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVu
Y2VzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAg
LCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVu
dENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAg
ICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5j
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNl
TG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpA
QCAtMzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29u
c3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8
fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkp
Ci0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAg
fQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7
CkBAIC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAg
ICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi9vY3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAg
IGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAg
ICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRp
YU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1w
dHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9h
ZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8g
Rm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0
cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNp
YWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011
bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQo
KSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9y
VmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYs
MjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2Nh
Y2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAg
ICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQg
bGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNo
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3Nl
bWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNp
Z25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmICht
X2J1ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAg
ICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAg
ICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygp
KQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xv
YWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAg
ICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwg
bV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVs
c2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVk
IGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERh
dGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwg
LTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAt
MTI1NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZm
ZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZl
cmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNT
RVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2Fk
KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEo
eyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICpt
X2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkp
OwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1f
YnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5n
dGggPSAwOwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJl
cXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0Nh
Y2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsx
Mjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRy
eSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9y
ZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAg
ICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJl
bnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0
b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNw
b25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUt
PnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1v
dmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRv
JiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2Fk
LT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50
YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxl
IHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9k
eS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0
NWMyZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFz
cyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5n
dGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERh
dGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVy
ZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBA
IC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVy
aW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFG
b3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpF
bnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNX
YWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJm
ZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0
MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJl
Y2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0g
bV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAog
ICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCAr
MTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Yg
c3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsK
KyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXpl
KCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAg
ICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1f
cmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBw
ZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29y
aWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwg
W10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGlj
IGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRy
eSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeSht
X29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9v
cmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgp
KTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4
MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0
ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCBmOTRkZTkzM2ZkMGNkNDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4Li41
ODU0N2Q4NDg4MWRjODMwZjY5NjlhMGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJV
UkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRs
ZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5y
ZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92
ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2Vw
dGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAg
ICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3
LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0
cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5
bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9Owot
CisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5j
UmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51
bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
UkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCks
IG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAw
OTNkZDBhNDdmMmMxMzA4NTI2Ny4uYjA3YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZh
ZGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRl
OgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2Fp
dGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCBkNTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li41OGMxYzlmZWJmYWMy
NWQ1OTFlY2Y0ZGY0NjE1ODUyYTAyMDg3Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZp
ZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVn
aW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQu
Z2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdV
UkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRp
bmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1
Z2luVmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAg
ICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFt
RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NDM3LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAg
ICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjcsOCBAQCB2b2lkIFBsdWdpblZp
ZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3
OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8
fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVh
bFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAg
IHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0
YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBt
X21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJl
YW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVh
bFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFu
dWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAg
bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50
LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7
CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3Rh
dGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjM0
YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBkYjNjZDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVh
bGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMjUyLDcgKzI1Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVz
cG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJlYW1E
YXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0
cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJh
NGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3
Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAg
ICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3Bv
bnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9y
ZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkK
KyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAg
ICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsy
MDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0
ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBk
aWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewot
ICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShj
b25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURh
dGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAg
IGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIx
YTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRi
NTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgz
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRl
cjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNv
cmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3Bv
bnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3
NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc2YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4
MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApA
QCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFt
ZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFn
ZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBt
X2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAK
QEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlz
aExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2Vi
UGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZm
ZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0
KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAg
IG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2Ni
NTNkYTg3Li5hZTA1MGE5OTIzZWE3ZWY5NTU1Y2JhMTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJGcmFtZTsKQEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcg
bV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1f
YnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTli
NS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6
OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlw
ZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0q
IGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9J
bl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RB
VFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdf
Tk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRE
YXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RS
CiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQg
YmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAg
ICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChT
VUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+
KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVy
LnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAg
fQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUs
IHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVm
ZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBlNmJjMGE2YWYyMzhiY2QxNTNjNDdjMTcxMmQzMDcwZGExMzc0NTEx
Li4wMmM0MmExNTY5NDFjMGYwNjYxMTA1OTg2MDM4Y2I5OWY5NGU5NGYzIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkg
dGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJl
ZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0
eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcAppbmRleCAxYjczNjNhODI3MjVjNzM4NTRkNDk5Njg0MDNiYzBmYTQ1NGE2NzY3Li4yMjBh
MzgwMDc4MjMxYTVkYjUzNGU3NDMwZGNkOGU3N2NkMGYwNzdkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtNDksNyArNDksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpKTsKICAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwpAQCAtNzIsMjQgKzcyLDE2IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJV
RSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7Ci19
Ci0KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKLSAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7Ci0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxs
KCkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsK
LSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1
aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTcsMTAgKzg5LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxv
IjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltd
ID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwg
c3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVu
KHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3RE
YXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdl
dCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0
aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0
ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCks
IHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTIsMTAgKzEwNCwxMCBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWls
ZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRl
ci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSAr
IDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQg
cG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAg
LTE1MiwxNyArMTQ0LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJt
YXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlz
LCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAi
YXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVz
IHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0g
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFy
ZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAw
MCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZm
ZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZm
ZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
aGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwot
ICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVy
MS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29w
eSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIx
LmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9u
ZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9F
UShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRl
cjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7Cisg
ICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5z
aXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
YnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAg
IEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxk
ZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1
dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFy
ZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0
IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAs
IHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJl
c2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xODAs
MTkgKzIwOCwyMSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKICAgICBWZWN0b3I8
dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OwogCi0gICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEp
KTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMykpOwotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsK
KyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWls
ZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDAp
OwogICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBi
dWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOworICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRvIGFi
Y2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKICAgICBhdXRvIGdoMiA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVy
LT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsK
ICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7CiAgICAg
Y2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CkBAIC0yMDEsNiArMjMx
LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIGNoZWNrQnVm
ZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZn
aGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CiAgICAgY2hlY2tCdWZmZXIo
Z2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRh
dGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOwogICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgp
LCBnaDIuc2l6ZSgpKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBn
aDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCks
ICJsIik7CkBAIC0yMDksMTYgKzI0MCwxOCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1
dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQg
OiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkp
OwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RG
TW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9Owog
ICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0p
OwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1
ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAg
ICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdk
JywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIu
Z2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywg
J2QnIH0gfSkuZ2V0KCkpOworCiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7
ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0s
IHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQo
KSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwpAQCAtMjI4LDExICsyNjEsMTMgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1
LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIg
PSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmlu
ZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFy
KCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwog
ICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjUzLDE2
ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxl
VGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlz
TnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsK
IAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFy
ZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAg
RVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNr
KGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmlu
ZGV4IDg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcuLjhiZmI4NWVjNjFk
MzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDE2
ICs0OCwxNyBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0Rh
dGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0
eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVy
LT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5k
KChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwg
d29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKQEAgLTY5LDMyICs3MCwzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9y
RGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Indv
cmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJl
Zil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxv
RGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVs
bG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBz
ZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0
KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVh
bFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9F
UShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdl
ciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxl
IChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAo
YnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0Rh
dGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24g
Kz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5
dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRv
IGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAg
ICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445832</attachid>
            <date>2021-12-03 03:40:39 -0800</date>
            <delta_ts>2021-12-03 04:24:33 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211203224035.patch</filename>
            <type>text/plain</type>
            <size>508524</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW01TRV0gRml4IGVyYXNlIHJhbmdlIHRvIHByZXZlbnQgYWNjaWRl
bnRhbCBkZWxldGlvbiBpbiBmaWxlcyB3aXRoIGNoYW5naW5nIGR1cmF0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1NmVhMWU0MGJiNGI3MTYzNTc1MTQ0NTllYmJmY2QwZGM0ODVmMjhlLi4wNDdlNDA3ZmQ2NGY1
NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAor
MjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVy
OjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6
YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpk
YXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNv
ZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAg
ICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BU
YXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3Rl
Ym9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
Y3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0Rl
bGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBEZXJpdmVkU291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4
MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1
bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
IChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1
YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1
NTAyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAy
MS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAg
IChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJB
cmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoK
KwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXSzJdIE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRl
eCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGEx
MzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewog
ICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5p
dGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6
OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41
OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9
IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jl
c3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVU
eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5k
ZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdl
MzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVU
eXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmls
IGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRp
b24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNn
SW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVz
OkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5
NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAg
ICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFT
aXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFk
NDI0Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90
IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNv
cmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVz
cG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0
YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hh
bmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25l
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVy
LT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEp
KTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNv
cmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
IHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRo
UmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRj
aFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7
CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVs
ZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7
CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkg
PSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVz
dC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICsz
NzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0Jv
ZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3Bv
bnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNd
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAg
LTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBS
ZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAg
ICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAg
ICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNj
YmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhj
ZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwg
UmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4m
Jik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNi
ZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJl
c3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkp
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAg
IH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91
c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhi
YThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJl
Njg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5
YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFs
dWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChh
dXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFl
YzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0
Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0
byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5k
YXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlh
S2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsx
MDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJz
dC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5m
aXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAg
IHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29u
ZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5k
ZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4
MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNo
YXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIu
Y29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywg
bG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVm
UHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAo
aXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3Jt
RGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0
YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFr
ZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkg
ewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYg
KGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBh
cmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwog
CiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAg
IGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5i
YXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNi
NzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5
M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlB
c0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsK
IAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEg
PSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlk
OGI3OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAo
bV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsy
NjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAg
ICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1U
b1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEo
V1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBA
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVm
ZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1f
YnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewot
ICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVy
KCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1
ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0
YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURh
dGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBl
KTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4
ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIg
PSBtX2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3Qg
RXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODli
NzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApA
QCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFt
X2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5
QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsK
ICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZl
cnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4g
bV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0
MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBi
b2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0s
Ci0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0
aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQz
YzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2
YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0o
KSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VE
YXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hh
cmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owog
ICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVz
cG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcw
YWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFi
OTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGln
aGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7
CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlh
NjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZl
MjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYs
OCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUw
NDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwog
ICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1
ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFh
MWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwg
U3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5j
b2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAg
fQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXko
ZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25z
dCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3
MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFh
Y2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0
aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3
ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGlu
IGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRl
IGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5
KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExP
RyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlu
ZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkp
OwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2
NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmpl
Y3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBA
IC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0
ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBV
TlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUg
cmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9u
bHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0
b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFu
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXku
aXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
ICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkp
CiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Il9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAg
ICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBp
bmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2Uu
bG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8g
SURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAg
ICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAg
aWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0
ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRz
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAg
ICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
Y3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywg
KmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJp
bmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZm
YjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYx
ZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlU
b1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0
YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRh
KCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXgg
M2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5
NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2Fn
ZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBk
YXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwg
WyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdE
YXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4
OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxl
dGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVl
KCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBA
QCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRG
YWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3Jr
TG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9k
YXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2
MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVS
TCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAg
IFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRh
Q29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4x
MzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBt
b2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3
YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBA
QCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3Jt
RGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3Jl
YXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwog
ICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNm
YmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4
ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVy
ICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAg
ICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAg
ICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAg
ICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5n
KSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRv
U3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250
aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOwor
ICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1
ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRh
YmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJh
ZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQg
Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAg
ICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVu
dD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAg
IGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dl
bmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwg
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
fSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGlu
ZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
bV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0
ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5n
KCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPiht
X2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgy
ZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4
NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3Mg
Q1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3
ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBT
VkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0
aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVt
b3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywg
YSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNi
NzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3
MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNo
aXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29t
bWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3Rl
cDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBj
bGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYs
NyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5n
U3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2
b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25S
YW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxl
Y3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2Vi
QXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5n
IHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
ICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
Rm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAy
ODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5
YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5k
MGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFG
b3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykK
K3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNo
aXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRp
dG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkp
OworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0
cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUx
MWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2Vl
NDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRl
cjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmws
IEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJj
ZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlw
ZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4
dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIz
MDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJM
KERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1l
IHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVU
eXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFw
cGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsK
ICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgp
KSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEz
Y2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBj
NjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
IHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7
Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50
OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJj
ZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVu
ZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICgh
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVU
eXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBA
IC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNo
b3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBy
ZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZl
JiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpA
QCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hp
dmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8g
c3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5h
dGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBj
YW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5k
QWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRp
bmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2
MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSAr
MTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2Vy
dGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZl
LT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQo
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8g
dGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0
aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBv
bmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3Vw
cG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4
YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkg
QEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5l
KGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9j
ZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwg
cmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRp
bmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykK
IHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBA
QCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5z
dGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3
ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRl
IERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5l
dmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2
ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7
IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAg
LCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewog
fQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNp
emUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2
ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpl
dmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9k
YXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIp
Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBt
X2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBk
YXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4
ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9u
c2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsg
fQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
QnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4g
aGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7
CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVu
c2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hl
ZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0
MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYy
NzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIg
QEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAg
ICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29k
ZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdO
YW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVk
ID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2
NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3
ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
ZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
YXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUz
YjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUw
YTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291
cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2Ex
YTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAg
IFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFBy
ZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5y
ZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxv
YWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5
MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6
Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNo
aXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYg
bWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRB
cmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIu
c2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJh
bWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRh
KCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2Vk
QXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNl
RGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFy
c2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFt
ZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNp
emUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpz
dGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0
ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFt
ZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8
QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0
cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xp
ZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYz
ZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1p
bmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0
cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzA4Nzg1YWY4
ZmM5MjRlMzUzZmZkNDgzZGY3Yjk1ZGEyNDQzYWU4NC4uOWU5ZjI5NDY3MmYzZDYyMjUwM2IxZTU1
YjE3OTZmMGNhMWVjZmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJl
ZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRh
dGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
NTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3
NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
IH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
bV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGlj
eTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9s
aWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMx
NDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdS
ZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5l
d1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsK
ICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJj
ZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAg
IChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNl
TG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1
MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3Mg
Q2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNl
OwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBA
IC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xh
c3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZl
cnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9
IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50
KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBz
dGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEw
ZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNl
TG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAg
OiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGlu
ZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpB
bGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAg
ICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJl
c2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApA
QCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQ
b2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNl
dCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRh
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURh
dGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNl
RGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3Vy
Y2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMg
UmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURh
dGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3Jl
IHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdl
ZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJl
ZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5
NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYx
MDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVk
QnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQo
KSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9k
YXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2Rh
dGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJs
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4
NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1
YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFt
YW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sg
b2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJz
ZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
QXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBz
dGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4
ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMy
NjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBA
IFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBh
dGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRp
YyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJj
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBD
bGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgot
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsK
KyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVz
b3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7
CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3Vs
ZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAg
LTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJl
ZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBh
IGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxl
bnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0
aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRo
ZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4
OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJh
Y2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0g
cmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9h
Ymx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIg
d2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcz
NmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1
NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDgg
KzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291
cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXli
ZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9p
ZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVk
MGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3Bv
bnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlw
ZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0
MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRp
b25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIw
YmQzMGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVu
c2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/
LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgp
LmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFT
dGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5n
ZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1h
bmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAg
ICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkg
d3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNl
IHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91
bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7
CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAg
ICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAg
ICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJs
b2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+
Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRl
eCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2Rm
OGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVt
cHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBh
dXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVS
TCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBm
b3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZE
YXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVBy
b3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwog
ICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAg
ICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+
KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVm
IE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAg
ICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFy
eSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291
cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8g
bWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
QEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnks
IGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0
byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAg
ICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1
YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFk
ZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVz
cG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNw
b25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4K
ICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
RnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAg
ICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBk
b2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5v
dGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMg
b3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwi
bm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIg
aGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4
IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjQwMjViOTgwZTVlZTY4
MmRiMDc2MmFmYTg2ZWNhOWQ5MmZlODU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5p
c0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRv
IGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91
bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAg
IGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6
QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0
Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250
ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1v
dmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFk
ZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVI
ZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGlu
ZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIs
IGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGlu
ZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAo
bWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3Rl
ZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVz
IHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2Ug
YXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBs
aW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAg
ICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVy
LAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91
c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2gg
KG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUo
Y29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWRE
YXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXND
b250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFk
ZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFk
ZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29k
ZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90
ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0Nv
bnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2
ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5k
KGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQo
Y29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBl
bmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlN
RSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlz
LgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0
cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQg
RmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3
MDQuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewog
fQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENh
Y2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIx
NGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBk
b2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VE
ZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
ZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1
OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2
MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0
IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQg
bWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAK
ICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hl
YXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAg
ICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05
NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20o
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVT
aGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQg
b3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNo
ZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2Rl
IHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4
dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1
bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJl
Z2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2Ex
Li5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1
YmNlMjcxZDA3NzYzM2FlOTQuLmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIw
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0
LDEwICs2NCwxNSBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4o
Y2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkg
OiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJp
Y3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRl
bUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRh
dGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENh
Y2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICBy
ZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBi
b29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
eXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsK
LSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5
dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZm
ZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpi
dWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBA
QCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
CiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGll
bnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQo
KSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZk
OGVjNGJlZjQyMTAuLjE1NGRiOGNiYWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21G
b250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
Zyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0
Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0
IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0
ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJ
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3Jl
YXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNv
bnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0
aW9uKCkgY29uc3Q7CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RV
RV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4
IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4
NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hl
ZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0K
IAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBk
YXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAg
ICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFn
ZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3Rv
bmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1
cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1h
Z2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICBy
ZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNP
REVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6
Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNo
b3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNv
bnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01NTMsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUlt
YWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2
OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZElt
YWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5l
ZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1
MjAzZjQuLmQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1
YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhh
c1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNS
ZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVl
ZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJ
bWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwog
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZv
aWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFj
ZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0
NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFk
ZmRjNjQ4MDQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
QwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQog
Ci12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9t
IG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlz
aExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRh
U2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNE
YXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAv
LyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRo
ZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiAr
MTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZl
cmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0
byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkg
ewotICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGlu
Y3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgewor
ICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
IGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5r
KGRhdGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFs
RGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhi
YTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkg
KzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAog
ICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRl
OwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAs
IENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5
ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5n
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmNmNGYwMmM1
ZDc0MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAg
ICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0
cmljcyk7CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6
OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVm
ZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAg
cmV0dXJuOwpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAh
PSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAg
ICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZl
ciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNj
MTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEz
MjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwg
dm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0K
QEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAK
LSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3
ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5
dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICsz
MzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGll
bnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6
CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBh
ICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgz
OWI3MDZhMGIxYjMzMWYyYzgzOS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4
MjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBk
b2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1
bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2Uo
KS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3Vt
ZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhi
MzRkMzk2Mjk1YzUzZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAz
NDc0YzMwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBv
dmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1
bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNv
ZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmlu
ZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRh
OGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRT
VkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
CiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJ
blNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29u
dGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+
c2F3RXJyb3IoKTsKICAgICAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZH
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQog
ICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShy
ZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBj
b252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVt
ZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRl
ZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRG
b250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50
ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5o
CmluZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBl
MTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAg
IFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJz
dEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJu
YWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVt
ZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5
ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlm
ZDQ3MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlw
dEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0g
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgp
IDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgw
KTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmlj
cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRl
eCA5MjRiODRjYTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1Nzll
MzFhYWRhOTcwNjlkOWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2
MS4uNTQyNjZkZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0
MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0
VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7
CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2
ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigm
ZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6Zmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2
NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5
Mjk2ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5
VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2
NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEy
Zjc0ZTdjYzllYTM5ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+
ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgewor
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7Cisg
ICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0
ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAg
ICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VE
ZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNv
ZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRv
ckNvY29hLmgKaW5kZXggY2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4u
ZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIs
MTcgKzMyLDE3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tD
YWNoZU1vbml0b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2lu
Z1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZik7CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJik7CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZh
NGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEy
NDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xs
IHRyeSB0byB3YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBm
b3JnZXQgdGhlIHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JU
aW1lb3V0ID0gMjA7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRy
eUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNl
KQogewogICAgIGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0
YShjYWNoZWRSZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNo
ZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9u
aXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBB
TDo6U2Vzc2lvbkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRD
YWxsQmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
ZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lv
bklEKTsKICAgICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4
M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7
CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQ
cmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2
YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZl
cnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1f
Y2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJl
c291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRp
bmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJl
c3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2Vm
MmE1NzM0Li41MmZmZDUzN2JmZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1NzA2MmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0x
MDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0
YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxv
YWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29u
dmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2Uo
KSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0
ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9V
TlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
bV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6
fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVn
YWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIg
eyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2Ns
aWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCks
IG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9h
ZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5m
cmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xv
b2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRl
NzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZj
ZGZjY2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0z
OCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBA
IC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5n
UmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZjM3ZDA1OWIwZWI1MjZjNTQ5YzBk
N2RlYjRlYTVhMDg4MGZmMGQ4Yy4uNmQ1MWM1ZTUxNmEzZGJmYmI3NDc2ZWQ5NGIwNDFlNmU1NmY3
M2MwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUyLDcgKzE5NTIsNyBAQCBjb25zdCBTdHJp
bmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQg
aGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QK
ICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9z
ZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRv
IGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQ
YXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2Nk
OTUyMGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEuLmQ3NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcy
OWQyY2RlODA0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0x
OTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUq
IGZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11
bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFs
aXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5k
KHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3Rl
ZE1JTUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rpbmcu
ZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9y
ZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpA
QCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxl
U2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVk
IGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4
dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNT
RVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVu
Y29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkg
fSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRv
U3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1f
cmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwg
UmVuZGVyRWxlbWVudCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3Zl
KGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNl
VVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4
IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5
Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAg
ICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxS
ZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUz
MWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZi
N2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1
Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2
YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0
ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRh
UmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25P
cjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDog
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAK
KwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcx
LDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5k
ZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0Zp
bGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3
RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAg
ICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUo
ZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVz
UmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkp
IHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7
IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFl
OGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2
ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91Ymxl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBm
aW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0
YTczNTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3Mg
RHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0
ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250
ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlP
ckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRN
TEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJp
bmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50
RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnRE
YXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2lu
OwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VC
Q09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldl
YkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNp
ZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRh
OworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7
CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VT
aXplOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRN
TENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5
cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQ
bGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVz
V2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
Rm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNv
bnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENv
bnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2Nm
NjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04
MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShT
dHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAor
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3Vz
dG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdp
bkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1
ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShl
bmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRD
dXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBh
c3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VE
ZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2Fy
ZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29k
ZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFm
YzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4
ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4p
IHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFz
dGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAog
ICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNl
MDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQw
MTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRD
b250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRh
OwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5n
c0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRp
bmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwg
U3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5k
aWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4
Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEg
ZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2Fu
U21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldl
YkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRG
b3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
KyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZE
Rm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
Rm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0
cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAg
ICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVu
dERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNs
aWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4
NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyAr
NDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0
cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAt
NzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9h
cmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5
cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBh
bGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAg
LTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29u
c3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0
aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFl
N2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4
MGU5ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZp
ZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3By
ZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAK
IHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsy
MjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZygqdGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAm
JiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5w
cmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQo
KSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50
KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhj
ZTJiLi4wNmI3NmY1OTg1MTgyYjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmll
dzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNs
aWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAs
NyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdF
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0
ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4
ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2Nl
NzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2ht
ZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVu
dEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpA
QCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYK
IAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5k
ZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uYmJlMzkyM2EyMDdh
MGU5MzYxMTczMDc0Zjk3NjA3ZmFkMDU4N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9z
aXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRl
cikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIp
KSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVB
TUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3du
ZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBw
ZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGlu
ZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5
VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwg
bWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNj
ZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3Rh
dGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVk
QnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRo
aXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFs
bCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5
IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21l
bnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3Vz
KQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdt
ZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJl
ZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdt
ZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5h
cHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwot
ICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0
YSgpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShj
b21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURh
dGEoKSBjb25zdApAQCAtMTgxLDYgKzE1NiwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hl
eFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0K
IAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6
ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVy
biAhc2l6ZSgpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBAIC0yMDIsMTAgKzE5Miw5IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAg
IEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50
cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsK
LSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1f
c2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVs
ZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CkBAIC0yMTMsMjMgKzIwMiwyNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNC
ZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsK
ICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
e21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29u
c2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVu
dCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xl
YXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBt
X3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50
cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJl
Z2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUt
Pm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVt
ZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJl
dHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVk
QnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3Nl
Z21lbnRzOwpAQCAtMzU1LDggKzM0Miw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJv
b2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0g
YmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICBy
ZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBA
IC0zNzIsNyArMzU4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCog
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNp
emUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIp
Cit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250
aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXIt
PnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAg
ICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNb
MF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKwor
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRh
KSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1h
cHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAg
ICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAg
ICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNj
ZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwor
fQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QK
K3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3Qg
Y2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2Nv
bnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkx
LDcgKzQyNyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0
YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRh
KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0MzgsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQog
I2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVy
KCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTIsNyBAQCBi
b29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewog
ICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApA
QCAtNDc1LDcgKzUxMSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXpl
KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDog
bV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYgKzUz
NSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7
CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFB
c0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRh
OyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9
CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBh
bGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKQEAgLTUzNCw3ICs1NzUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVk
NjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uYWNjNmE5M2YwODQ0NTg0ODZmYmEw
YTU2MjZmY2Q1ZTMzNWM1M2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC02MiwxNDYgKzYyLDEzMyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFw
cGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBi
ZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0
aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7IH0KLQotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8s
IFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGlu
ZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNv
bnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhf
dD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAK
LSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25z
dDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2
b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Cisg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYg
ZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7
IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29u
c3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRp
ZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8g
YmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAg
Ly8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4K
LSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQg
cmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZl
Y3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFk
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAv
LyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2Ug
dGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90
IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBD
cmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250
ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRl
ZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNp
emUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAg
ICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248
c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFT
ZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBi
eSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBh
bGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBX
RUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0
OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9G
aXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgp
IGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBV
U0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2VuZGlmCisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9v
bCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1
aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRh
dGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShH
TElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQ
dHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdt
ZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAg
ICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNl
Z21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUocHJvdmlkZXIpKSB7IH0KK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0
ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0Rh
dGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Q0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRy
PEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAg
IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlm
Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFBy
b3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8g
Y29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0
ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAg
ICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21l
bnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29u
c3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZp
eCkgY29uc3Q7CisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMg
U2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhv
dXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNv
bnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6
RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5n
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTUgKzE5Nywx
NzYgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFT
ZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERh
dGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3Nl
Z21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBh
bmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90
IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAot
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAg
ZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZl
Y3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVf
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
LCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0
b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5k
aWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlm
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVk
T3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07
CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lm
IFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAq
KTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChD
RkRhdGFSZWYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAogICAgIC8vIENvbWJpbmVz
IGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBh
ZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtl
RGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7
CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9u
KHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAg
ICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9z
ZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMg
Y29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNp
emVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywg
UmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0
YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29s
IHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxO
U0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0Owor
I2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+
IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9F
WFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8
RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRl
cihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRv
IG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwg
U2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVk
LgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAg
ICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAg
ICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRC
dWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8v
IG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAg
ICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0K
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
KEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAg
ICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisg
ICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgp
CisgICAgeworICAgICAgICByZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9
CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
cjsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAg
ICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIp
CisgICAgICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1
aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVm
KCkpCkBAIC0yNjgsMjEgKzM3NiwyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1
ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJE
YXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZm
ZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21l
bnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBu
ZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRh
dGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAg
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25z
dCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlv
bldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5
MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3
ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3
ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0lu
Zm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRp
bWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8u
YXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAg
YXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdv
cmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtN
SU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIo
bm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5k
ZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0
OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXll
ZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVu
Y29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRl
RGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9w
ZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3Mjgz
ZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0
Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChj
b25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQz
NDYzNDBiYjJmY2I5MS4uYTEyYTc0MWE1NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkK
IC8vIFVzaW5nIEZvdW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGlt
cGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNp
b24gZm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxD
RkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxD
RkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRh
dGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2Vn
bWVudC0+bV9pbW11dGFibGVEYXRhKSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZm
ZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0
YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5k
ZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZl
YWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVj
dG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9
CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJ
RkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQog
ewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5p
dFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBp
bWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRp
ZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBO
U0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5H
RmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHBuZ0RhdGEpOwogfQogI2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5n
PiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNv
Y29hVHlwZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNl
Y3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5
cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5
NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZh
NWZjYTc4MTY3NWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2Nv
Y29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEg
OiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNV
SW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdt
ZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsK
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBS
ZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdt
ZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50
OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBA
IC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0K
IAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2Vy
KXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3Np
dGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0
ICs5OCwyMiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICBy
ZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
YnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJp
bmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAg
IHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAg
QVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdCht
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
IHsKICAgICBpZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZXNvdXJjZURhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0
LDcgQEAgUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXko
KSBjb25zdAogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNl
Z21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJD
b3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3Np
dGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGVi
OWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5
YmY5NjE3NzgwM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpT
T046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVu
dHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9Owor
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJh
ZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25z
dAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFw
OwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9
IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9
IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQg
cHNzaFNpemUgPSAwOwpAQCAtMTk2LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5
SWRzTWFwLmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgog
ICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7Cisg
ICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRh
LmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250
aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwog
CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5
SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdU
Rk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMu
dGFrZSgpOwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdl
Yk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlk
IFdlYk0gaW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBv
YmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBK
U09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5n
IHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBv
ZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5j
b2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4K
LSAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0
RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3Ry
aW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwg
V1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRv
SlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBl
bmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlk
cy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5Ojpz
aW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5
YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5l
cmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29k
ZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBl
OTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1
ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcw
ZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNj
N2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBL
ZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3Qo
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5j
b2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6
OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2su
bGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJp
YW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVm
UHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50Lmdl
dCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJi
NGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2
YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkg
ZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhl
OWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0
OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5
dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCks
IHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+
KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihk
YXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
Pih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBp
ZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcg
KzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgp
LCBzaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRl
bnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVk
ZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNm
NDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAt
NjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0
eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxE
YXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBm
b250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZv
clZlcnRpY2FsRGF0YSkKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250
U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hl
KiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBh
dXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9u
dEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFi
NmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVlMzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFs
bGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+
IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRD
YWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAg
ICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJh
Y2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9u
dDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4
MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMw
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9u
Y2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2
YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigp
IGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExB
VEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5
ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4
NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5n
IG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVU
eXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAg
IDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5
cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBk
MDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4g
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
LCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAg
ICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQog
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5
LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBS
ZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2Rl
bChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYw
LDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
bV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1f
dXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9k
ZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSks
IFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JU
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2Rl
bCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
bGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcu
LmEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0
ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJl
YWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYg
dmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJH
KG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgp
IC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wg
cmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90
JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0
YXRpYyBib29sIHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBv
ZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQg
PCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQx
NihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25z
dCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJv
b2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQz
Ml90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgog
Ci1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4
X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBz
Zm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9T
Zm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVy
biBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsK
QEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0
ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250
KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0
ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51
bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUu
Ljc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkg
KzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBi
dWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wg
aXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0
aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRv
IHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSku
IE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8g
c2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8
dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4g
YnVmZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0
aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24g
ZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZh
Zjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
c3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjog
WyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAg
ICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1
ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEw
YmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0
aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVm
ZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSku
Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsK
IAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
aW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZp
ZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAg
ICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmlu
aXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19J
TklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6
Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0
cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBw
c3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0
YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAo
TlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVk
IGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0Fy
cmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0
dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGly
ZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6
YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAg
ICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBT
dWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxv
YWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwot
ICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3Bv
bnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9u
c2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVC
VUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nl
c3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1
ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50
S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWlu
Z0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07Cisg
ICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNz
Q29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBj
b250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVz
cG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAg
IH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNh
bGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBz
dWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNl
bnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hh
bmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BB
TDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVw
b3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9y
eUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcg
KlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyAr
OTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3Rh
dHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Np
b25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBp
cmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0
b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2Vy
dGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVx
dWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsx
MDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIo
ZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVl
c3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkK
IAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNl
cnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
IAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVn
YXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0
b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAg
ICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAg
IGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXls
b2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygi
a2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgp
KSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRv
U3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsK
ICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0
cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAg
ICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9
CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBm
b3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewog
ICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkp
OwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlE
cy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5
SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVl
c3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVy
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9y
XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBX
VEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29u
dGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNl
cnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1
ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVl
c3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVy
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3RE
YXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUx
MjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZj
NTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2Rl
ckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBt
X2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNl
c3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBb
bV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5P
XTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291
cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFtt
X2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBs
ZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7
CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3Rl
ZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdl
RGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTph
bGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBt
X2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVl
YTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgz
NjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8g
bnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYg
KG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGlu
dWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdp
dGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAg
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4
ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2
b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVy
KFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3
MmE2ZjI0N2YwLi5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNv
dXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAg
ICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZl
ci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0yMjgsNyAr
MjI1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIm
IG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNl
TWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUo
cmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsK
ICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShy
ZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0K
IAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIHsKQEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFy
ZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVl
c3RdOwogICAgIGlmICghZGF0YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggZGI0NTdhODFkM2VlODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcx
MmU3OWU2MTMxN2MwZDExNmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaApAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZU
X0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2
Li4yMDM1Yzk5YTdmNjhiNTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0
eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGlu
Zm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBT
aGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGlu
Zm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19j
YXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6
ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXpl
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6
SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAo
ZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdp
dGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2
b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSAr
NTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUg
dGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUg
U2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBh
YmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBl
bnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hh
cmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5n
ZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBD
R0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxz
ZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZl
ci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VD
b250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2Ug
dXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5
dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3Zp
ZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0
IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcg
dGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2Fs
bGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRl
c0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVE
aXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRh
aW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJv
dmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQp
OwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3
MTNiMjYzMTI4NDIxMjRlNmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdj
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdl
OjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVm
PiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShk
YXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3Zp
ZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENG
RGF0YShkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAg
ICAgbV9kb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihk
YXRhUHJvdmlkZXIuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmlu
ZGV4IDg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2Fk
ZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29j
b2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlz
RXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENG
RXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0
MTVmZDM3NWVkODJiN2I0YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUw
NWViNTA0MGY5OWZmOGM1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApA
QCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2Vn
bWVudCh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBi
dWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZj
b24pOworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50
Kj4ocmVmY29uKTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3Jt
RGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBj
NjlhYWE3MWYzOTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1
NDk3MDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBA
IC0xNTEsMTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRh
OjpvYmplY3RGb3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1
YWxpdHlDaGVjayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9
IGFkb3B0Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0
aW9uTm9PcHRpb25zKSkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
aW5kZXggNTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRh
MTFiNTk4NWEzNDM4NjE5ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAg
IGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2Nzll
NjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgw
Njk3YzEyNDYwMWQ1YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21w
YXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVU
eXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2Vy
IGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVl
VHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0
ZWRUYWJsZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlop
ICYmICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5k
ZXggMDE2MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2
OTI0ZDQyYmFhYzMzMzRmZjhkNWMzYjRhZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKQEAgLTQyMiw5ICs0MjIsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpj
cmVhdGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKQorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpj
cmVhdGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgq
dGhpcyk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7
CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBiYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRj
NjYxYjFjYjg3MWJlLi5kMDE0Y2M2YTVkYzdiMTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24o
Z3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVk
T3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVm
ODFlN2NhOGE1MDY5Li4yOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5
IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVy
OjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3Mg
PSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJH
U3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6
ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBi
dWZmZXIuc2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAg
IG1faW5uZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDc5
Nzk0ODBmOTFjNTk3YWE5ZjkwMDk3YzE4ODMyYzZhMTVjMzJjZTguLmIzMjRjZjExNDY0N2IzMzc1
ZTZhNDViZmFiMTAzZTBhMjkwZmI4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERh
dGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRD
b250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxv
YWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGlu
aXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0
YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsK
ICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJk
N2JjMDdmN2MwMWI5YzMuLmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29u
dGV4dFVzZXJEYXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHBzc2g7CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBh
cnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29u
c3QgZ2NoYXIqKiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcs
NyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBn
Y2hhciogdGV4dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5n
UHNzaCkgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJh
c2U2NERlY29kZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVl
KCkpCi0gICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkg
KzcxLDkgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdF
cnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBt
YXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBh
c3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0
YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5
bG9hZCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVk
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1
bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQog
ICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJm
MS4uNjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9E
RUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5
cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7
CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0
eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZm
ZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdT
VF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2Rl
YnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHBy
b3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFj
dENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJ
bml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9h
ZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChl
eHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYg
KHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0
Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAg
IG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03
MiwxMCArNzUsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwg
c28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0
ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsK
KyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAK
LSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7
IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVy
VHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMz
YTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQo
KSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVz
Y3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZm
ZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2Njdl
NDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4
YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1
bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpk
YXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMo
W2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQx
NzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNz
Q29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0Nv
cnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBj
b3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBn
ZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
R2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQx
Nl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0
IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
S2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBt
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09m
ZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5
cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgw
MQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJs
eVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBh
cnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jk
c1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJl
bWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFy
aWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZh
cmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50
cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcg
KzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAg
ICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50
R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNz
ZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1i
bHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkq
IGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9m
ZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0
aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50Owog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8g
VGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMg
YW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAot
ICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBj
b25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0
aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJv
b2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWlu
dDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlv
bnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRo
Q29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zm
c2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3
ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5m
byhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJ
bmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZz
ZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0
YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVN
YXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3
ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlx
dWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5k
ZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkw
YzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMs
NyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7
CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShj
aDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNo
MikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZl
ci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIs
NyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
VGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2Ugewog
cHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRF
bmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3Np
dGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlz
IGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRF
bmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
b25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2
X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxp
ZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90
IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZm
ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAg
IH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRh
YmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFn
ZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwg
R2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0
Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdl
SW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZv
cm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2Ez
ZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RI
ZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZv
bnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJl
d3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAo
d2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFi
b3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jv
b2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkK
IHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBj
b25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVy
Kj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVj
dG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250
IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAg
ICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIx
NWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJj
ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25z
dCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8
Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2
OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIz
OGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0x
MTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQg
Y292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292
ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFn
ZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJh
Z2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDog
U3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNb
MV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxk
IGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHlu
YW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5
cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0
U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBA
IHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxv
b2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAg
IGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2
X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChp
bmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50
XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2
IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNv
bnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0
aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBA
IHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZz
ZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0
dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVu
ZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBG
ZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmlu
ZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBm
ZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAm
ZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcg
KzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4
WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVh
dHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6
OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
ZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRh
YmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0
OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lz
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tj
b3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNl
IHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRz
WzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUq
IHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAg
LTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxl
KiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAg
IGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAt
MzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2Ny
aXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0g
ZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2
LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1
cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRM
aXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3Qq
IGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2
YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0K
LSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxv
b2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25z
dCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVy
LCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0g
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAg
IGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7
CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcg
ZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2
NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0
dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFw
PEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1
cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAg
ICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVj
dCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2
YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIg
PSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29u
c3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9w
ZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5U
eXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZv
aWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUg
aXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxl
KiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBA
QCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRW
ZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxh
dGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9w
ZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlw
ZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRW
ZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2Zl
NjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJj
ODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2
LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZv
bnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5n
IGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJj
ZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0
ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9u
dCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2Ny
aXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
c3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZh
cmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdz
PGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2
NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250
TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBm
b250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2Ug
PSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJv
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYy
MDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90
aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJl
dHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNm
ODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1E
YXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJl
c3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAg
IEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdP
UkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRj
LCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RP
YmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEu
LjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsg
bV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0
UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lk
IHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRh
ID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRh
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0
b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFy
Q3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRy
PEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2
MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3
ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVz
OjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkp
IHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdt
ZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAg
IG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250
aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2Vu
Y29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAg
ICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAg
IHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmE0
MmU1YmM0YWNjZjM3MjJhNWFmOWM5MDU0NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFy
a2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0
YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQ
cm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3Qq
IGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+
bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtl
ci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJT
aXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNp
emUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVy
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVy
OworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlm
CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29s
IG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9p
ZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0
MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3
MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlv
bjsgfQogI2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRl
eCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1
NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
KQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2Fy
ZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFz
dGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVu
dCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNs
aWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQu
Y2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRU
eXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAg
ICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0
ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmli
dXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2Vz
OltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6
Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmli
dXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2Vz
OltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6
Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5n
XTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3Vz
dG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3Rv
bURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsK
IAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
LmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9p
ZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVi
b2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsK
ICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5
cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAg
ICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAg
ICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZToo
TlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VT
aXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFt
ZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVj
dG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNF
TlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVk
Q3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9y
aWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5v
cmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5
cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2Vi
UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2Ft
ZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFy
ZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3Vw
cGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5
IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBv
ZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUg
cGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhl
IGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdo
ZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiBy
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4
ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICgh
W3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBd
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJk
SXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6
cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5k
ZXggNTQ0NjUzYzQ0MDNkMjYwNDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJm
YTdkMjBkNWI2ZTRjMmQ2NWZlNjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVu
ZAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJv
dmlkZXImIHByb3ZpZGVyKQotICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkgfQorICAgIDogbV9wcmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAg
LCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRv
cHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0
ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2Qy
MjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBw
ZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQog
ewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRo
TUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMz
MCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRl
eChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVn
eS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChj
b25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3Rl
Ym9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5n
JiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRl
Z3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1
cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBh
c3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1Bv
bGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZl
ckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5k
ZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmlu
ZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4
ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEg
KzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0
IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29u
dGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRl
bnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURh
dGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+
Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9V
VElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9h
cmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0
Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
CkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9w
YXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9
IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50
IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01U
b1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+
IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0
YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0
YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1
c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAg
ICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0
LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRD
dXN0b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAg
ICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRm
b3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6Omdl
dDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEp
CiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlm
IChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0g
ZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURh
dGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwog
ICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAg
aWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpi
dWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVi
b2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRh
OmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
OiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0
Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5
cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRl
bUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZv
clR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAg
ICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBl
XTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3Ry
aW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmlu
Zz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0
ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApA
QCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+
IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBt
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVz
Y3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUz
MTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVk
N2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dy
aXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxk
IG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBj
bG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRl
ckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRh
ID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZSht
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAg
ICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9k
YXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1
cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBhMzdhMGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNm
MGZjYTNjLi5iMTc0OTc0NDU0YmY3Mzk4OTA5Y2M4YmVhNGQwYTNiOTU3OWE3ODgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0
MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJl
dHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0
YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0K
IAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5
NDEwYWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNz
IERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3Jt
RGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0
b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRz
OyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFz
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5
c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRB
bHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNT
dHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3
MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6
On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJl
Y2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgx
OTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAy
OWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAs
IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShy
ZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0
IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1
NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6
ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3Mg
UmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNl
c3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBS
ZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBI
YXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1
ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBv
cmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2Fk
aW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNr
KQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVz
SW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3Qg
UGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVk
Q29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJT
aXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJs
ZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0
aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qg
d2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwg
a25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAo
IWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZm
ZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2Uu
YmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5i
dWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNr
KTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBn
aXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0
YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayks
IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdl
bmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRl
UnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsK
ICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVy
SW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4
ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJT
aXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZm
ZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcg
QEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVk
Q29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVy
LT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBG
SVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3Vs
ZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBj
aGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5h
bFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJs
U3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5i
dWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZl
UmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5
ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZToo
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3Jl
OjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9u
OltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0g
ewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUo
KTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAo
aWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVs
ZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEy
Li5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNs
b3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChw
cm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0
aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5k
KSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0
aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgot
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVu
ZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRs
ZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3Vu
ZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5k
KSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwg
ZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1
ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3Ig
ZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgot
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVy
LnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAg
IG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBl
ODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRi
N2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBD
dXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZp
bGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNl
NWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDks
OSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1
ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCku
ZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RG
TW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3
b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJj
YjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4Niw4
ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRh
dGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVt
b3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAzOCw4
IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVy
bCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRv
IHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRl
bXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAg
ICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0
YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRl
bXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUo
KSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAg
ICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4
IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJmMDNj
NWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxl
LCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyAr
NTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBp
ZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRl
c1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3Vs
dCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVh
ZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNj
aWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5
ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywx
MCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRh
KCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29u
dGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25z
ZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9
IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAg
ICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3Mp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNh
bGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmlj
YXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlm
aWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNl
cnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsK
IH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJp
bmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYg
KHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewog
ICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1
MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZm
ZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVy
IFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmco
KSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpm
cm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3Jp
cHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5z
U2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAm
JiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50
LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVm
ZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNl
Z21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6
OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAg
ICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0g
c3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3Jp
cHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlk
OWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUyYjQ0ZWEy
NDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVy
LmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVk
QnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVy
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6
ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0
eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBl
ZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhl
IFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7
IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQx
NmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li44NWU3NjM4M2RhYjM1M2E0ZmM0
YjA5ZDEyNzcxODVhMDBlOWUyMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYm
IHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAg
IDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxv
YWRlZEZyb21PcGFxdWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC03NSwxMiArNzYsMjEgQEAgdm9pZCBXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3Bl
KQogICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
d29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUocmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKIH0K
IAorYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZygpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmIG1fZGF0YS0+aXNOdWxs
KCk7Cit9CisKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAgIGlmIChtX2RhdGEpIHsKLSAg
ICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsK
KyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9
IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNE
YXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGlndW91c0RhdGEpOworICAg
ICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAg
ICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkg
KzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4x
YjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFlODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBA
QAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
Y2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
OwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYg
IW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wg
ZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQog
CkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBt
X2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1
ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEw
OGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEs
NyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4
cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5j
b25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+
JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlz
aChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
ewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNk
MTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3Rv
cmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGlu
ZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3Jz
IG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRV
c2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGlu
Zzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQg
U1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRl
eCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3
NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNo
ZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVz
cG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciht
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZl
bnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJl
cXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9i
PiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBX
ZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2Vu
ZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0
ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0
YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAg
ICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsK
ICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRl
bnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNl
TUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShk
YXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVy
KCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZl
cik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQg
PSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAg
ICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAh
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUo
bnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3Bv
bnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwog
ICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwog
ICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1
LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmlu
YXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAg
ICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVl
NzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0
Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdl
c3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZh
cmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2Rl
cjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0y
MzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25z
ZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2
ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMx
NzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJG
dW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VM
b2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFs
bG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFm
NmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0
IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3
ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4
YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNv
ZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEo
KSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAg
ICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2YzguLjU0ZGMy
MGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0
LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90
PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAg
ICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJl
Y2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZSht
ZXRyaWNzKSk7CiAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQK
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBs
eSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9j
b25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGNv
bm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRl
bnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3Jl
ZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9z
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElE
IHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAtMzA2
LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xv
YWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNh
bmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3Bh
cmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQogCiAg
ICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03
MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlmICht
X2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAm
JiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVU
eXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsK
ICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3Ry
YXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11
bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxs
ZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFu
ZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFy
dCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRh
dGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAgKzg2
OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Cisg
ICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQ
cmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQg
c2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3
ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBl
bmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZl
cmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAg
IG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3Rh
cnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAg
ICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRh
LCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2Vu
ZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZm
ZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2Ugewot
ICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEg
c2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0x
KTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwog
ICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRG
aW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwx
NSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdU
aW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1Rp
bWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFt
X2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAog
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9i
dWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZl
cmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0g
ICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVy
ZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAw
OwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0
b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3Qg
aXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlz
TnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEy
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAg
ICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2Fj
aGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAg
c2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1
ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFG
b3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1f
bmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSks
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5
OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBw
ZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJy
ZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCks
IFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNp
ZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0NWMyZmJh
Nzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjI1
LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAw
IH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRh
OwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAs
NyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGlt
ZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlx
dWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNo
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5n
Q29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApp
bmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNjMmY0Li4zYTU1MTc0OTAx
ZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQot
ICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2Ix
OWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0MGU4YWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxi
YWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25z
ZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9y
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0
ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZm
ZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1
ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
CmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQz
NTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUo
Y29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERh
dGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0
IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBT
dG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2Fj
aGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNv
cmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNv
cmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJu
IHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3
OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3Jk
IEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIo
ZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsK
LSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1f
YnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIg
PSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1f
dGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgx
OTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAg
aWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsK
IAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2Nl
ZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAg
ICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7
Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNp
emUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIu
Z2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsK
ICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAg
aWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRy
eSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1f
Y2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9u
c2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsg
fSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4n
dCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVh
YmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9j
YWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3Bv
bnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29t
cGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFj
NDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3
YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUs
NyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERh
dGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1f
Y2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhmMGI3ODA3ZDc0MTcxYWRjNTIwNWEz
Li5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRp
ZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgogICAg
IH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2Uo
bV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0ZXMg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0
ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJlYW0g
PSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVzLmdl
dCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0
M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYxNDYyNjZiODgyODEw
MWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4
ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFkNjBi
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgK
QEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVm
YXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAg
ICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAgICAgU2hhcmVkQnVm
ZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZm
ZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkg
eyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1
cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Cisg
ICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0K
ICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNp
emUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2Rl
ciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUu
LmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAor
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6
ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAg
ICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3Rl
ZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3
M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVk
IHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
V2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZl
NWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcg
QEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hh
ciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJj
ZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZl
UmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VX
ZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQu
LjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAg
aWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRo
ZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAg
ICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5z
aXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZh
bHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1
MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4Mzhl
NWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFj
a2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5
dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5n
ZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5
MTBmYmI2Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0
Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAg
LTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVk
QnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJj
ZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAg
ICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAg
ICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQog
ICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZl
cigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNo
YXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVlZTBhZDYyY2IzNDg0
YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRm
NjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGlj
OgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5
PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJl
ZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdl
NjBlMjFiZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgx
OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAot
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBA
QCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxz
ZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQ
dHI8U2hhcmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNB
bmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29u
c3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29k
ZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQog
ewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIg
PDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmRE
YXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAg
ICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYg
ZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5k
RGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBA
QCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29k
ZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5z
aXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1
ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZm
ZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VD
b3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBX
VEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBb
Jl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAg
ZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
QEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFz
dGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5
NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVy
biB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1
cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9
IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3
ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
Z2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1
ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVy
OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAg
cmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rl
cik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVm
MDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNi
MGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlh
bDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03
NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhi
NWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdl
ODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRh
PiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9t
RGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAg
IGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJi
MmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJh
ZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFy
Z3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9u
dFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEg
PSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250
RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRm
MWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFk
MmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2ht
ZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2
ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRk
ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAg
LTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0
cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1f
aGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5j
bG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktp
dDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5YjQxOTJmMTlhYTFjMWMw
YzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2ZjhjNzlkMTM1MDQ1OThiODZj
NWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHZv
aWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3Qg
RnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2
b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5j
dGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZv
aWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAg
ICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5t
bQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3
NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1
OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVy
biAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewog
ICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAg
KzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0
cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7
CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1
NGNmYWRmN2ZlZTNiZjFiN2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBi
NTIxYjdkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6
KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdo
dC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1
dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0
aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0
OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tB
cHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpu
aWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5B
cHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0
OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2Vi
Q29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZElu
QXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdo
dFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5
NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0
NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRh
UmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5z
aWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9
IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsK
ICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNl
dEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3Rv
bURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19j
YXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4
IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2
YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0
ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
OmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5
MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5
NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bh
c3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmpl
Y3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlw
ZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmls
IGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAt
NDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5k
VVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFz
dGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0
YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9
IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0
YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUw
MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3Rl
Ym9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJ
bWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRh
ICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcg
KzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9w
cGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5n
SW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6
OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRh
ICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAg
aWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZl
ci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2Ut
PmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVy
YWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6
OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRl
eCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li41NTE2NjY2YzVhMzEx
NzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0Zv
Y3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUlt
YWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2Vi
Q29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElk
ZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
YjA0NTM5ZDYwMDVkNTQzYmM2MmZiODkwNTk5NjQ2ODkzMmEzM2U5Mi4uZjNhZDU3NmIzMzNhOTMy
OTUwMDYzZjdhM2E5NGNmNTc3M2I0MmM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTExNzksNyArMTE3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVs
ZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBi
b29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZv
aWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2Yy
YWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjU4NTQ3ZDg0ODgxZGM4MzBmNjk2OWEwY2E5NzY3
MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRh
c2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwCiAgICAgLCBt
X3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwgbV9mcmFtZUluZm8o
QVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBh
Z2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzeW5jQ29tcGxldGlv
bkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTE4Nywx
MCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1
ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAg
ICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5
bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
blR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2No
ZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2Vw
dGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygp
KSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0
YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+
c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7Cisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFu
ZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5
bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlk
ZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIx
Mjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRh
YWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAt
NDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3
IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBs
ZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9u
c2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBV
bmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAg
IGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFs
c2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5
ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAg
IGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJv
b2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRp
ZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVt
ZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRl
eCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMy
YjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlv
bkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZm
ZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxi
dW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
MWE4MWNjZTQ0NTVlYjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYS4uMGM2MjVjMzBkMzAzZmJk
OTg0OWI4NGI2ZTdhYWZhMzRjZjdjMzQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4
MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdp
dGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9h
cmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAg
ICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1
c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAg
fQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1Pcmln
aW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBp
ZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAg
ICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAsNyArNzU3MCw3IEBAIC0gKHZvaWQpYWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVt
ZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7
CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
QC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0
IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhw
bGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2Up
KSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdl
KSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtz
ZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBs
ZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGY4MGM4MjQ5ZGE0NjdiOTQyMDM1ZTQ2MDZlODk5YmNi
NjRlZGJjNmMuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4
LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTAzZTA4MGFlZTA4MzgwYjQ2
ZmZlODlkZDhlNjFiNjZiNTk4ZGI0Ni4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5
NDBkZDAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4
Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFl
MmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNl
bGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9
CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBX
ZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBi
b29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgw
NDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVn
YXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcK
ICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0
ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdl
dCgpKV07CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRp
bmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGlu
Z0RlbGVnCiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRp
dGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOm1fY29udHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0Ojpj
cmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0
eXBlIGluIGRhdGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBw
ZW5kKHR5cGUpOwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAg
ICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXgg
MzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1
ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgm
cGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFn
ZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBA
IC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBh
c3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0
byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwg
aXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAg
ICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAz
MWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgy
OTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7
CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90
aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7
Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRl
VG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJv
cChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNp
bXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1
YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZh
NDA3MmI5ZjdkZTNhODljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMK
IHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZv
aWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8
U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0
YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRh
KSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3
aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2Us
IGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRC
dWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQ
STo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJl
ZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZl
ciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYo
KTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0
IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZl
ci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsK
ICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwg
dG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkp
LCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3Ry
aW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4
ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2
MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAg
aWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5z
aXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRo
ID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdk
MzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMx
ZmUyNzBjOGEzOWYxMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsy
NzUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRs
ZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZm
ZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44
NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2Vz
cyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNl
Iik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0
aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAg
ICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9j
b3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlk
UmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERh
dGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li41
OGMxYzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0NjE1ODUyYTAyMDg3Zjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3
IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1l
bnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3Bs
dWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAg
LCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdp
blZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVh
bURhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2Vi
UGFnZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VS
VChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJl
c3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBt
X21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6
ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpG
aW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBt
X21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEt
PnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjcsOCBAQCB2
b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0
YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkK
LSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAg
ICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3Ojpy
ZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2Uo
bV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAg
IGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+
aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRh
a2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQog
ICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0
YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNk
NjgwMjNmMjMuLjM0YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBkYjNjZDYwMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJ
WE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMjUyLDcg
KzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFu
dWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0
cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3Ry
ZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9t
YW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lk
IHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgog
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4
ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJi
MGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAK
QEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZl
ci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAg
ICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVz
cG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNl
RGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0
YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAg
ICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkK
ICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBm
b3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdj
YWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4
NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+
IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+
LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAg
IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
ciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUy
MWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxs
V3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2Ut
PmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgq
bV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJh
Ni4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGlu
ZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAg
CiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAg
ICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNl
YTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2Ni
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0
YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3Vy
Y2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9y
Q3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFt
ZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmEx
Li42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0
ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBl
cyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpz
aGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIp
KTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0
aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNI
YW5kbGU7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcg
QEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJv
YXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0
MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgwOGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRl
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJp
dmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVl
NzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNm
MmQzZTgwOGJhYzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdM
b2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2Zp
bGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQg
eyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAg
ICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsK
IH0KIApAQCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
RmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSht
X2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2Uo
KS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7
Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZv
aWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2
YzA3Y2I1M2RhODcuLmFlMDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYkZyYW1lOwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0
cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMy
ZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xp
ZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNl
KCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
QnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
aW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZm
ZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJE
cmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwog
ICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0
byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAq
KWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAg
ICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9y
eUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3
YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0z
NDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVz
b3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJu
IGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdl
YkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNj
MzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDcz
ZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRE
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENv
bXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2Fy
ZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFt
ZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwog
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpi
dWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMx
MzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwog
I2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJl
dHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2Ny
ZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUo
VUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJl
dHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYx
M2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3
MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVw
cmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdl
RGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWlt
ZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMz
MmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVu
ZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNj
ZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNz
UmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0
MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAy
ZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEz
LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2Vi
S2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRl
ZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5k
ZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJl
NmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90
IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+
IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBl
KFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBh
bGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJl
OWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgw
ODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsx
MDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAg
ICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlw
ZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5j
b3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkx
MzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3Yzdm
YTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWlu
UmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3Vy
Y2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0Mzdm
YTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUK
IC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxh
eWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFy
c2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+
cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBb
X3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEo
KTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRh
OnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBk
M2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RS
ZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6
YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAg
ICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRo
RGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhp
dFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3
OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdi
MWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVz
b3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENv
ZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIg
KillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
LmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxO
U0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5
cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsK
LSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7Cisg
ICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBl
ID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNl
LT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFt
ZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9u
c2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJl
c291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9y
S2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBm
b3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1l
VHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2Rl
T2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5
XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2
YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2
YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwor
ICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAg
LTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNv
ZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciog
Y29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxs
cHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29k
aW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3Jl
RGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYx
OWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJl
YW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0
cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1v
cnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBy
ZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMw
YWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAog
Y2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsK
IAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2
T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwog
CiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcg
bV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3Bw
CmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4
MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpk
YXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
Y2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
Y2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5
YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEu
LjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkg
ZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZv
aWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2
b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIw
Y2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3
NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJl
YW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBF
Q1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1v
cnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1h
a2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFT
b3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVz
ZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBh
NWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQz
ZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQg
V2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1l
VHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAg
YXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChT
VUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwx
MSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0q
IGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhN
RTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmln
aHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVj
dG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChk
YXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwg
JnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAg
ICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0
PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWRE
YXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVy
bCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUs
IHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1Yzhi
MGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2Yx
NWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBA
IC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJl
c291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3Vy
Y2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1v
cnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3
OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xh
c3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0
aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NDg2OGQyZTIzNjVmZWU3NTEwNDFmNDRmZjNlNjQwZmMwZGJhZGJhZC4uOTRmMDYzY2MwNTJhODhj
MjE2NGU0MzIxZTY1OGY0MzljYWM3MzQ1OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKwogMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgogCiAgICAgICAgIENvbXBpbGF0aW9uIGVycm9yIG9uIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2Ix
ZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4yMjBhMzgwMDc4MjMxYTVkYjUzNGU3NDMwZGNkOGU3
N2NkMGYwNzdkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQz
LDQ1IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
U3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
U3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1w
dHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZl
ckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXIt
PnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNp
emUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xl
YXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAg
IGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAg
IEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChi
dWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAg
IEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0g
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0
YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJs
ZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5h
cHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
KTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDEwICs4OSwx
MCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAg
Y2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3Js
ZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0
cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0
cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0
cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
c2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVy
LmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAg
ICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAg
ICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0
aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkp
OwpAQCAtMTExLDEwICsxMDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0
ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgw
eDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RG
TW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5h
ciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0s
IHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFj
ZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxk
ZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUg
dGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRf
RVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9u
ZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBF
WFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1
aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICog
NSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxk
ZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7
CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFM
U0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5
KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5w
dHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisg
ICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250
ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwog
fQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc1LDYwICsyMDQsNzAg
QEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdk
J307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCi0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAn
YicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cn
LCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9
OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtl
KCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBh
dXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAg
ICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0
YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7
CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAg
IGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEo
KSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6
ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wi
KTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVm
Z2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7
CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIp
OworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVj
a0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxW
ZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0
dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZl
cih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVy
KHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQo
KSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+
KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1h
a2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQo
KSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0p
LmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3sn
YScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywg
J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30s
IHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3Zl
KGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdi
JywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7
CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAn
ZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0p
LmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2In
LCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7
ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcg
cmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIx
MTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAg
IGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3Ry
aW5nKCksICIiKTsKIH0KIApAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxl
VGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVO
QUJMRShNSFRNTCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4
Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3Nzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0
YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAog
ICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8i
IGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0
YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9E
YXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEg
XSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAg
TlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6
NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRh
KTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRh
IF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3
b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0
aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgp
XSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAg
ICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5n
dGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0
ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hh
ciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEg
KndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAg
ICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsK
ICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29y
bGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0g
ICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChh
dXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShb
c2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0
YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3Vu
dCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAg
ICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4g
cG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBv
c2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0
KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNy
ZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2Vn
bWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEu
c2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQs
IHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVy
LmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5n
RW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxV
LCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>
<flag name="commit-queue"
          id="471121"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445833</attachid>
            <date>2021-12-03 03:41:44 -0800</date>
            <delta_ts>2021-12-03 04:01:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211203224142.patch</filename>
            <type>text/plain</type>
            <size>132970</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNkYzUyMjc2ZjVjYzAy
ZTFhZDk2MmFkY2FlNWQ2ZmM2MzY0MzJlOC4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkN2Y1YTViYjAxNzAzMzQ4ZDhlYTRmNTFk
Njg0NDNhN2JlNmJjMGY1Li4wNDdlNDA3ZmQ2NGY1NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZiNWM0ZjJiMGZk
ZWUuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0
ZjU2MC4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRh
ID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikK
ICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hh
cmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5p
c051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVz
b3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2
NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4NjdkNDc4M2VjYWExMzZiNTc4MzkyYzI4MGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
QEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBS
ZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50
IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJl
c291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0
YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7
CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jl
cXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUg
cmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0
OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0
ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAt
MzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0K
KyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2Iz
ZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0Yzcx
MjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRh
KCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Ut
PmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkuLmM3NzBkNzY0
MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRh
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNo
ZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcg
ZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3Mywx
MiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVj
dXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJj
ZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBk
YXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVt
b3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0
YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2Ut
PnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA3
MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmLi40MDI1Yjk4MGU1ZWU2ODJk
YjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNF
bXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBj
b250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5k
YXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBp
ZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJp
bmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVu
dC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3Zl
KHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVy
LnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUu
YXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBs
aW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUu
dXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVu
ZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1p
bWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQ
cmludGFibGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0
aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFz
IHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGlu
ZXMuCi0gICAgICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAg
ICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTE5MywxMCArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIs
CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgYXV0byBjb250aWd1b3Vz
Q29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBjb250aWd1b3Vz
Q29udGVudCA9IGNvbnRlbnQudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAo
bWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVh
ZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShj
b250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAg
ICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBh
cnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNSwxMSArMjA1LDExIEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5k
YXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5Ogot
ICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY2MWE5OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZi
MTNiNGYuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsK
IH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChk
YXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIx
NGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBk
b2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VE
ZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
ZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA2
NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwLi45ZDJkYzczNjQ4MDJkMGQ2
MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2Vk
U3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAg
IGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApp
bmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2Mw
MTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCmluZGV4IGY2NDMzM2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0
YTI1Y2MuLmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
dm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVu
dCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExv
YWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmgKaW5kZXggMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2Zjgx
MTg2ZC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZh
dGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29u
c3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENs
aWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCmluZGV4IDcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBh
ZGM4OWUuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2OCw3
IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUlt
YWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50
ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
SW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBA
IC01MjMsNyArNTIzLDcgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFn
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RV
cGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50
ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1
ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVk
SW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9k
YXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDVj
MzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUuLmQ1MTNlMTZjYmE1YTk3MDdj
MzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFz
UmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVs
YXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAg
ICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAg
ICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJ
bWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAg
ICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJD
b250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA4NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkx
ZTk4Zjk5MjRiZDFjLi44NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4g
Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4g
ZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgLy8gU2tpcCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9v
cHMuIFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAg
IGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwog
fQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0
YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9t
IHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEg
cnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdm
ZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkg
ZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wg
c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIs
NyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25P
dmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hM
b2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBS
ZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlv
bmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGRl
NzhhY2IyMjEwYTFmZjRlZmE5NmMwNWY4NDkxOWIyNjVkMDFjYWQuLmNmNGYwMmM1ZDc0MzRjYjY1
Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAg
ICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGNjZTU4
MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcuLjIxOGQ3NGYyNzc2YTk2NWZjZWE0
OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZp
cnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0
UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJy
b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCmluZGV4IGRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUuLmIw
Zjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIs
NyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVh
dGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBh
cmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3
ZWFhLi5iMDEyYmE5OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyAr
NDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggZWVkYjZiMzdlNDIyMWI4Zjk4
MjY5NGViMDk2YTAyOWZkMWI4MWU2MS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4
NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKQEAgLTk2LDcgKzk2LDcgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkK
ICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChk
YXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZl
MzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZj
MmM3ZTYzNDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4
IGFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEuLjU0MjY2ZGQ5MDgxOWMz
NGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZFRleHRU
cmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBB
TDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9kYXRh
ID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0
ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBk
YXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEp
OwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4
dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwog
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIw
NjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNm
NGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRl
eCBjMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwLi5iOWE2NTg3NTNjZTlm
N2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4u
YzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBt
X2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1
MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYg
KzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmlu
YWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcy
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRl
cjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1f
cmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVy
dGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
CmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZkNTM3
YmZkNjJmZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1f
aGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAg
IG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBh
dXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3
ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclBy
ZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVy
Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIs
ICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3Jp
Z2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+
Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xv
YWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVy
Ojp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6
OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0
ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVu
dChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnBy
ZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9z
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdz
KCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRj
YjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1
NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3Im
IFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7
CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIy
Miw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRp
ZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1w
dHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRh
LT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFz
Q2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJh
NjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgyYjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJE
YXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3
ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3By
ZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJk
NDA1ZTVhYzhmLi5iYmUzOTIzYTIwN2EwZTkzNjExNzMwNzRmOTc2MDdmYWQwNTg3ZGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTE5Miw3ICsxOTIsNiBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNl
cnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKICAgICAg
ICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5j
b3B5UmVmKCkgfSk7CkBAIC0yMDMsNyArMjAyLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1fY29u
dGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKQEAgLTIxMyw3ICsyMTEsNiBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6
ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNTlmMGNhMmM0NmMwMzIyMDhiNjc4ODMxYzI0
NjFjZjFjYjAyYzBkZi4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2MjZmY2Q1ZTMzNWM1M2UzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xODEsMTkg
KzE4MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3Vz
KCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRC
dWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwg
c2l6ZV90KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8
dWludDhfdD4mJik7Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCi0jaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xlYXIoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNv
cHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwpAQCAtMjQ5LDYgKzIzNiwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Cisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRh
ICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
KwogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0
dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlv
bikgY29uc3Q7CkBAIC0yNzUsMTEgKzI3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0K
IAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCi0gICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFz
ZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKLQogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CkBAIC0zMDYsNiArMzAyLDcxIEBA
IHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
CiB9OwogCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0Owor
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJl
bmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpi
dWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8g
dGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIg
c2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlm
IChidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQo
V1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAg
OiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBw
ZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAg
ICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgp
OyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5
KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVy
ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAg
IHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigp
CisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IuLjJh
ZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtl
eUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgog
ICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7Cisg
ICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3VzSW5pdERh
dGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBjb250aWd1
b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5
SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtl
eUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0
YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsK
KyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogCiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5
SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xl
YXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2
YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRj
MTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAog
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJl
dGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5k
ZXggZGY2MmIzZDczNjNlZWU2OWVlZTI3MjJhNGNkMDZhMmRhNDlhNjBlOC4uYjZlMjM3YjVkZjVk
ZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07
CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
Ojpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkp
OwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZv
aWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
QVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVx
dWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5ZWRk
NzkzM2YzN2M0NTFmMzJjNTAuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0NWQw
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgs
OCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25f
ZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBtX3Bh
eWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1
bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1
aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5
cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAi
Y2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1f
cGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAg
ICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAg
ICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFr
ZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7
CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXls
b2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAg
ICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGlu
aXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3Qg
dmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGlu
aXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRh
LnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQo
KSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBj
b25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXls
b2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5
bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTkwLDcgKzkzLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07
CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NC4u
YTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NN
YXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0
KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2Vy
X3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXIt
Pm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtlcihtYXJrZXIpKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZgog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6
ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXIt
PmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBp
Y2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSks
IG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5t
YWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBh
NTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZlNjNl
ZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdD
b252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdD
b252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAg
IDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9wcmV2
aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlk
ZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252
ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjEx
Zjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUy
MzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRh
TG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsK
IAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNm
NS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3
LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAv
LyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0
YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhv
dXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVy
RGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUs
MTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEo
KQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9j
ayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+
YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0
YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEg
PSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50
YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNm
MmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAg
ICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5h
bFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2Up
CiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0
YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBz
dHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0
Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNl
U3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBT
ZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VT
dGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxS
ZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRh
c2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxS
ZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJv
b2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+
IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJl
cXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRM
ZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVz
dCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vz
bid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50
aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhl
IGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdl
dCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAg
aWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVz
VG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFr
UHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAg
ICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIs
IGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3Ig
PSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAg
IGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4Owog
ICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZm
ZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5z
aXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRM
ZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgp
OworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVy
ZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7
CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNl
VG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3
NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAK
IFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBT
Y3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZl
ciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVy
Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAg
IH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAg
U3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZl
cjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2lu
KCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZm
ZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+
YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNj
cmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9i
dWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBh
dXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRh
KCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRm
OC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3
ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVy
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBT
Y3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1f
YnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIp
OyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZm
ZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1f
YnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5n
bGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmlu
ZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBD
b250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAog
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CmluZGV4IGE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcuLjg1ZTc2Mzgz
ZGFiMzUzYTRmYzRiMDlkMTI3NzE4NWEwMGU5ZTIzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJl
cXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFx
dWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc1LDE4ICs3NiwyMyBAQCB2
b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2Vy
R2xvYmFsU2NvcGUpCiAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9w
dGlvbnMpOwogfQogCitib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9k
YXRhLT5pc051bGwoKTsKK30KKwogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAg
ICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAg
ICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwotICAgICAg
ICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7Ci0gICAgICAgICAgICBpZiAoY29udGlndW91
c0RhdGEpIHsKLSAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAg
ICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAg
ICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29u
dGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTIxLDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1
ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFl
ODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0
cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Vy
bDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2Fk
aW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5n
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxw
dHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5
Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRw
UmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
ICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkp
CiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRp
bWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3
LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9i
KCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29y
a1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50Lgog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIs
IG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRh
a2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0g
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlw
ZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2gg
bWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAg
LTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVz
cG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkp
OwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNy
ZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7
CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6
IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VC
dWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0
ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0g
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsK
IH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1
aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2Ugewog
ICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBl
bmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5k
ZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1
NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJv
dHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBV
UkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jl
c3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGI3Nzg5MzJmMjgxYjcxMmUwMGZmN2Fm
MjY2YWEzOWJkZDIwMWMzMmQuLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhm
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJl
cGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91
c0xvYWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25v
dXNSZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAg
ICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVu
Y2VzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAg
LCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVu
dENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAg
ICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5j
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNl
TG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpA
QCAtMzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29u
c3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8
fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkp
Ci0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAg
fQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7
CkBAIC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAg
ICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi9vY3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAg
IGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAg
ICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRp
YU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1w
dHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9h
ZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8g
Rm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0
cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNp
YWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011
bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQo
KSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9y
VmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYs
MjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2Nh
Y2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAg
ICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQg
bGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNo
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3Nl
bWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNp
Z25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmICht
X2J1ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAg
ICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAg
ICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygp
KQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xv
YWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAg
ICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwg
bV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVs
c2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVk
IGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERh
dGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwg
LTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAt
MTI1NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZm
ZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZl
cmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNT
RVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2Fk
KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEo
eyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICpt
X2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkp
OwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1f
YnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5n
dGggPSAwOwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJl
cXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0Nh
Y2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsx
Mjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRy
eSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9y
ZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAg
ICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJl
bnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0
b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNw
b25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUt
PnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1v
dmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRv
JiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2Fk
LT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50
YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxl
IHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9k
eS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0
NWMyZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFz
cyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5n
dGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERh
dGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVy
ZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBA
IC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVy
aW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFG
b3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpF
bnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNX
YWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJm
ZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0
MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJl
Y2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0g
bV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAog
ICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCAr
MTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Yg
c3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsK
KyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXpl
KCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAg
ICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1f
cmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBw
ZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29y
aWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwg
W10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGlj
IGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRy
eSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeSht
X29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9v
cmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgp
KTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4
MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0
ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCBmOTRkZTkzM2ZkMGNkNDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4Li41
ODU0N2Q4NDg4MWRjODMwZjY5NjlhMGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJV
UkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRs
ZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5y
ZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92
ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2Vw
dGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAg
ICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3
LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0
cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5
bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9Owot
CisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5j
UmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51
bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
UkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCks
IG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAw
OTNkZDBhNDdmMmMxMzA4NTI2Ny4uYjA3YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZh
ZGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRl
OgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2Fp
dGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCBkNTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li41OGMxYzlmZWJmYWMy
NWQ1OTFlY2Y0ZGY0NjE1ODUyYTAyMDg3Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZp
ZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVn
aW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQu
Z2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdV
UkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRp
bmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1
Z2luVmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAg
ICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFt
RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NDM3LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAg
ICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjcsOCBAQCB2b2lkIFBsdWdpblZp
ZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3
OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8
fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVh
bFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAg
IHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0
YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBt
X21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJl
YW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVh
bFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFu
dWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAg
bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50
LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7
CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3Rh
dGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjM0
YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBkYjNjZDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVh
bGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMjUyLDcgKzI1Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVz
cG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJlYW1E
YXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0
cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJh
NGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3
Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAg
ICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3Bv
bnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9y
ZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkK
KyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAg
ICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsy
MDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0
ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBk
aWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewot
ICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShj
b25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURh
dGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAg
IGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIx
YTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRi
NTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgz
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRl
cjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNv
cmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3Bv
bnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3
NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc2YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4
MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApA
QCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFt
ZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFn
ZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBt
X2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAK
QEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlz
aExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2Vi
UGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZm
ZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0
KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAg
IG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2Ni
NTNkYTg3Li5hZTA1MGE5OTIzZWE3ZWY5NTU1Y2JhMTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJGcmFtZTsKQEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcg
bV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1f
YnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTli
NS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6
OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlw
ZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0q
IGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9J
bl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RB
VFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdf
Tk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRE
YXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RS
CiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQg
YmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAg
ICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChT
VUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+
KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVy
LnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAg
fQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUs
IHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVm
ZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBjNzBjYzZiNzhhODYyNzE1ZGM5OGMyMzViZDhlNjY4MmFlZmY2MDVl
Li45NGYwNjNjYzA1MmE4OGMyMTY0ZTQzMjFlNjU4ZjQzOWNhYzczNDU5IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkg
dGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJl
ZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0
eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcAppbmRleCAxYjczNjNhODI3MjVjNzM4NTRkNDk5Njg0MDNiYzBmYTQ1NGE2NzY3Li4yMjBh
MzgwMDc4MjMxYTVkYjUzNGU3NDMwZGNkOGU3N2NkMGYwNzdkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtNDksNyArNDksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpKTsKICAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwpAQCAtNzIsMjQgKzcyLDE2IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJV
RSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7Ci19
Ci0KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKLSAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7Ci0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxs
KCkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsK
LSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1
aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTcsMTAgKzg5LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxv
IjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltd
ID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwg
c3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVu
KHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3RE
YXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdl
dCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0
aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0
ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCks
IHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTIsMTAgKzEwNCwxMCBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWls
ZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRl
ci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSAr
IDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQg
cG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAg
LTE1MiwxNyArMTQ0LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJt
YXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlz
LCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAi
YXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVz
IHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0g
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFy
ZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAw
MCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZm
ZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZm
ZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
aGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwot
ICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVy
MS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29w
eSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIx
LmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9u
ZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9F
UShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRl
cjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7Cisg
ICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5z
aXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
YnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAg
IEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxk
ZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1
dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFy
ZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0
IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAs
IHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJl
c2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xODAs
MTkgKzIwOCwyMSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKICAgICBWZWN0b3I8
dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OwogCi0gICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEp
KTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMykpOwotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsK
KyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWls
ZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDAp
OwogICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBi
dWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOworICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRvIGFi
Y2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKICAgICBhdXRvIGdoMiA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVy
LT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsK
ICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7CiAgICAg
Y2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CkBAIC0yMDEsNiArMjMx
LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIGNoZWNrQnVm
ZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZn
aGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CiAgICAgY2hlY2tCdWZmZXIo
Z2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRh
dGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOwogICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgp
LCBnaDIuc2l6ZSgpKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBn
aDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCks
ICJsIik7CkBAIC0yMDksMTYgKzI0MCwxOCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1
dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQg
OiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkp
OwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RG
TW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9Owog
ICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0p
OwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1
ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAg
ICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdk
JywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIu
Z2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywg
J2QnIH0gfSkuZ2V0KCkpOworCiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7
ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0s
IHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQo
KSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwpAQCAtMjI4LDExICsyNjEsMTMgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1
LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIg
PSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmlu
ZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFy
KCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwog
ICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjUzLDE2
ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxl
VGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlz
TnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsK
IAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFy
ZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAg
RVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNr
KGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmlu
ZGV4IDg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcuLjhiZmI4NWVjNjFk
MzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDE2
ICs0OCwxNyBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0Rh
dGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0
eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVy
LT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5k
KChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwg
d29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKQEAgLTY5LDMyICs3MCwzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9y
RGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Indv
cmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJl
Zil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxv
RGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVs
bG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBz
ZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0
KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVh
bFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9F
UShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdl
ciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxl
IChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAo
YnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0Rh
dGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24g
Kz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5
dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRv
IGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAg
ICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445836</attachid>
            <date>2021-12-03 04:01:15 -0800</date>
            <delta_ts>2021-12-03 07:27:43 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211203230112.patch</filename>
            <type>text/plain</type>
            <size>511484</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW01TRV0gRml4IGVyYXNlIHJhbmdlIHRvIHByZXZlbnQgYWNjaWRl
bnRhbCBkZWxldGlvbiBpbiBmaWxlcyB3aXRoIGNoYW5naW5nIGR1cmF0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1NmVhMWU0MGJiNGI3MTYzNTc1MTQ0NTllYmJmY2QwZGM0ODVmMjhlLi4wNDdlNDA3ZmQ2NGY1
NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAor
MjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVy
OjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6
YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpk
YXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNv
ZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAg
ICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BU
YXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3Rl
Ym9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
Y3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0Rl
bGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBEZXJpdmVkU291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4
MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1
bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
IChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1
YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1
NTAyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAy
MS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAg
IChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJB
cmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoK
KwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXSzJdIE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRl
eCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGEx
MzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewog
ICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5p
dGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6
OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41
OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9
IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jl
c3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVU
eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5k
ZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdl
MzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVU
eXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmls
IGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRp
b24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNn
SW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVz
OkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5
NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAg
ICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFT
aXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFk
NDI0Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90
IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNv
cmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVz
cG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0
YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hh
bmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25l
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVy
LT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEp
KTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNv
cmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
IHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRo
UmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRj
aFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7
CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVs
ZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7
CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkg
PSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVz
dC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICsz
NzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0Jv
ZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3Bv
bnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNd
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAg
LTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBS
ZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAg
ICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAg
ICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNj
YmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhj
ZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwg
UmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4m
Jik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNi
ZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJl
c3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkp
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAg
IH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91
c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhi
YThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJl
Njg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5
YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFs
dWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChh
dXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFl
YzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0
Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0
byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5k
YXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlh
S2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsx
MDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJz
dC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5m
aXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAg
IHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29u
ZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5k
ZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4
MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNo
YXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIu
Y29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywg
bG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVm
UHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAo
aXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3Jt
RGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0
YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFr
ZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkg
ewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYg
KGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBh
cmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwog
CiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAg
IGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5i
YXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNi
NzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5
M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlB
c0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsK
IAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEg
PSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlk
OGI3OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAo
bV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsy
NjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAg
ICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1U
b1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEo
V1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBA
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVm
ZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1f
YnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewot
ICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVy
KCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1
ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0
YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURh
dGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBl
KTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4
ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIg
PSBtX2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3Qg
RXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODli
NzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApA
QCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFt
X2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5
QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsK
ICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZl
cnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4g
bV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0
MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBi
b2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0s
Ci0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0
aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQz
YzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2
YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0o
KSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VE
YXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hh
cmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owog
ICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVz
cG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcw
YWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFi
OTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGln
aGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7
CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlh
NjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZl
MjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYs
OCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUw
NDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwog
ICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1
ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFh
MWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwg
U3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5j
b2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAg
fQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXko
ZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25z
dCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3
MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFh
Y2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0
aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3
ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGlu
IGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRl
IGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5
KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExP
RyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlu
ZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkp
OwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2
NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmpl
Y3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBA
IC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0
ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBV
TlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUg
cmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9u
bHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0
b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFu
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXku
aXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
ICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkp
CiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Il9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAg
ICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBp
bmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2Uu
bG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8g
SURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAg
ICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAg
aWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0
ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRz
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAg
ICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
Y3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywg
KmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJp
bmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZm
YjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYx
ZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlU
b1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0
YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRh
KCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXgg
M2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5
NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2Fn
ZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBk
YXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwg
WyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdE
YXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4
OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxl
dGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVl
KCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBA
QCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRG
YWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3Jr
TG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9k
YXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2
MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVS
TCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAg
IFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRh
Q29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4x
MzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBt
b2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3
YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBA
QCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3Jt
RGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3Jl
YXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwog
ICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNm
YmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4
ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVy
ICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAg
ICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAg
ICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAg
ICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5n
KSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRv
U3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250
aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOwor
ICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1
ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRh
YmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJh
ZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQg
Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAg
ICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVu
dD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAg
IGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dl
bmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwg
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
fSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGlu
ZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
bV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0
ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5n
KCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPiht
X2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgy
ZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4
NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3Mg
Q1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3
ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBT
VkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0
aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVt
b3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywg
YSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNi
NzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3
MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNo
aXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29t
bWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3Rl
cDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBj
bGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYs
NyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5n
U3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2
b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25S
YW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxl
Y3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2Vi
QXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5n
IHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
ICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
Rm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAy
ODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5
YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5k
MGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFG
b3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykK
K3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNo
aXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRp
dG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkp
OworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0
cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUx
MWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2Vl
NDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRl
cjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmws
IEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJj
ZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlw
ZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4
dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIz
MDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJM
KERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1l
IHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVU
eXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFw
cGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsK
ICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgp
KSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEz
Y2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBj
NjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
IHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7
Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50
OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJj
ZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVu
ZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICgh
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVU
eXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBA
IC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNo
b3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBy
ZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZl
JiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpA
QCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hp
dmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8g
c3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5h
dGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBj
YW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5k
QWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRp
bmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2
MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSAr
MTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2Vy
dGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZl
LT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQo
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8g
dGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0
aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBv
bmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3Vw
cG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4
YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkg
QEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5l
KGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9j
ZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwg
cmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRp
bmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykK
IHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBA
QCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5z
dGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3
ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRl
IERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5l
dmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2
ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7
IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAg
LCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewog
fQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNp
emUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2
ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpl
dmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9k
YXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIp
Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBt
X2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBk
YXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4
ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9u
c2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsg
fQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
QnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4g
aGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7
CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVu
c2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hl
ZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0
MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYy
NzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIg
QEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAg
ICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29k
ZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdO
YW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVk
ID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2
NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3
ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
ZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
YXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUz
YjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUw
YTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291
cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2Ex
YTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAg
IFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFBy
ZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5y
ZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxv
YWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5
MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6
Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNo
aXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYg
bWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRB
cmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIu
c2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJh
bWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRh
KCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2Vk
QXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNl
RGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFy
c2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFt
ZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNp
emUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpz
dGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0
ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFt
ZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8
QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0
cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xp
ZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYz
ZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1p
bmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0
cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzA4Nzg1YWY4
ZmM5MjRlMzUzZmZkNDgzZGY3Yjk1ZGEyNDQzYWU4NC4uOWU5ZjI5NDY3MmYzZDYyMjUwM2IxZTU1
YjE3OTZmMGNhMWVjZmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJl
ZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRh
dGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
NTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3
NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
IH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
bV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGlj
eTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9s
aWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMx
NDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdS
ZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5l
d1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsK
ICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJj
ZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAg
IChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNl
TG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1
MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3Mg
Q2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNl
OwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBA
IC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xh
c3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZl
cnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9
IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50
KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBz
dGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEw
ZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNl
TG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAg
OiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGlu
ZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpB
bGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAg
ICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJl
c2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApA
QCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQ
b2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNl
dCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRh
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURh
dGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNl
RGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3Vy
Y2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMg
UmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURh
dGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3Jl
IHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdl
ZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJl
ZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5
NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYx
MDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVk
QnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQo
KSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9k
YXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2Rh
dGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJs
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4
NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1
YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFt
YW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sg
b2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJz
ZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
QXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBz
dGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4
ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMy
NjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBA
IFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBh
dGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRp
YyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJj
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBD
bGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgot
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsK
KyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVz
b3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7
CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3Vs
ZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAg
LTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJl
ZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBh
IGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxl
bnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0
aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRo
ZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4
OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJh
Y2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0g
cmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9h
Ymx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIg
d2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcz
NmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1
NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDgg
KzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291
cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXli
ZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9p
ZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVk
MGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3Bv
bnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlw
ZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0
MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRp
b25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIw
YmQzMGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVu
c2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/
LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgp
LmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFT
dGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5n
ZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1h
bmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAg
ICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkg
d3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNl
IHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91
bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7
CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAg
ICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAg
ICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJs
b2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+
Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRl
eCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2Rm
OGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVt
cHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBh
dXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVS
TCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBm
b3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZE
YXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVBy
b3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwog
ICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAg
ICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+
KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVm
IE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAg
ICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFy
eSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291
cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8g
bWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
QEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnks
IGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0
byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAg
ICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1
YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFk
ZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVz
cG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNw
b25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4K
ICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
RnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAg
ICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBk
b2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5v
dGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMg
b3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwi
bm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIg
aGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uMGUxNDU3NjNmYzdh
ZmJiMjM1NzJmZWE3ODdjYTQ1MzFmM2RiNTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDgg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
KiBwYWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFz
IGFzY2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBB
U0NJSSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOwor
ICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAi
LCBjb250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJs
LnN0cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lp
U3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEu
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0
cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEg
PSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVz
b3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2Rpbmcs
IHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90
ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERh
dGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAg
ICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cg
YXMgaXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JM
RnMuCkBAIC0xOTYsMTUgKzE5NiwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6
OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0
aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAg
bWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAg
ICAgICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAo
aW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2Np
aVN0cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0g
ICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAogICAgIHJldHVybiBtaHRtbERhdGE7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFi
OTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNDAyNWI5ODBlNWVlNjgyZGIw
NzYyYWZhODZlY2E5ZDkyZmU4NThkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVI
ZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1w
dHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29u
dGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBj
b250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFy
eS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYg
KG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5h
cnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQt
PmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShw
YXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5w
ZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFz
Y2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGlu
ZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0
ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQo
bGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1l
SGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhl
IFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0
aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVz
LgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAg
ICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAg
ICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29u
dGVudCA9IGNvbnRlbnQudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6
UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFBy
aW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVu
dC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJp
dDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250
aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29k
aW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhl
YWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAg
ICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJl
Zm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4u
OTBkMWM2YTJiYThjNGE0MmUxZmViZDgwMWU1Mjg3ODA1OTAxMmI5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAK
LXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBp
ZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5o
CmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjY0YjE0ZDVm
NjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25N
YW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3Vt
ZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29k
ZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3
YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjlkMmRjNzM2NDgwMmQwZDYyYTY1
OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3Ry
aW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1l
VHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAg
IC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBh
bmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJl
dHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEz
ICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0
KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhl
IGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFy
b3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlm
eShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlr
ZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5l
cmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQz
N2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2Uy
NzFkMDc3NjMzYWU5NC4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAg
KzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGll
bnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0
YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDAp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5D
b2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCku
dG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkg
ewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVy
biBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVz
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAg
IFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMg
fTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7
CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZl
ciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZv
aWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMp
OwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQog
ICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0
YmVmNDIxMC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3Jt
RGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwg
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZv
bnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4
dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
OworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
ZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24o
KSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1
OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uN2MwMWM4Y2MyMzExNzg2YzYy
NGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtl
Q29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBj
cmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpz
aG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNU
aW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0
ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6
Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsK
LSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVy
biBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYg
KCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJT
KQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252
ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6
Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxk
IGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVy
dGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1
Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VE
YXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcg
QEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVk
KGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNm
NC4uZDUxM2UxNmNiYTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGlj
OgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0
aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBl
bnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdl
RGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERh
dGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAg
dm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkx
OTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2
NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAg
ICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVz
dGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9h
ZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9k
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXpl
ID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFT
aXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291
cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdl
IG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNh
bGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcs
MTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5n
UG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7
CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGlu
Y3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0g
ICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAg
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYg
KGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0
YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRh
LT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVT
RShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjli
Li41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEs
OSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAg
Ym9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBA
IC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jh
c2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZp
bmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
ICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0ZDRiOTEyMDAwMi4uY2Y0ZjAyYzVkNzQz
NGNiNjVjYjNkMDMzOGFjN2ZhNzNhZjYxNjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGlt
ZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hl
ZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1
cm47CkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVu
Y29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5l
d0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1f
ZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07
CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNj
NTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uMjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5
NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lk
IGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAt
MjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAg
IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0
KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNU
b0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3
IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+
IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdp
bmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAg
ICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRo
cmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5Yjcw
NmEwYjFiMzMxZjJjODM5Li5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFjYTgyMjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29k
aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0K
IAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3Vt
ZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50
ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVy
bCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQt
PnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5MWFjOGIzNGQz
OTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRj
MzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50
PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXgg
YThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJm
Y2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAog
ICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2Nv
cGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5z
ZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50
KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdF
cnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAg
ICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90
ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZl
cnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQp
KQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9u
dCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQu
dmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5k
ZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQw
OTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZH
Rm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9u
dEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNW
R0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7
CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0
ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5iODdhM2RiMDZmMDExNDdmMTliOGY0MzI2OWZkNDcx
ZTg0ZTJlZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFz
aCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOwor
ICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDky
NGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFh
ZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi41
NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEw
IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAg
LTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2Fj
aGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENh
Y2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2Vi
MjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
QEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlS
ZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIq
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5
NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRl
N2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYgQEAgU3RyaW5nIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNv
ZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAp
OwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApp
bmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5jMDRkZDRmMTZj
ZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgU3Ry
aW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIw
YWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyAr
MzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hl
TW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3Rv
cmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdl
dEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0Yjkw
M2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNk
MjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5
IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdl
dCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVv
dXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7
CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNh
Y2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9u
aXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9y
OjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpT
ZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxC
YWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJh
Y2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0
b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxl
QmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmds
ZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQp
OwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdk
ZTk0Yjk0YTIuLmI1MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTM4LDYgKzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNs
YXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZp
ZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUg
UHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTcwLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVy
PiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGll
bnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3Vy
Y2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0Rh
dGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9u
c2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3
MzQuLjUyZmZkNTM3YmZkNjJmZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3MDYyZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5j
bGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0
ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07
CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQ
YXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29y
aWdpbmFsRGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVn
YWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFBy
ZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50
IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9j
b252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIg
fQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1l
KCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1By
ZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYy
YzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNj
Y2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNz
UmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3
LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVz
Rm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1
bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzdkMDU5YjBlYjUyNmM1NDljMGQ3ZGVi
NGVhNWEwODgwZmYwZDhjLi42ZDUxYzVlNTE2YTNkYmZiYjc0NzZlZDk0YjA0MWU2ZTU2ZjczYzBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTIsNyArMTk1Miw3IEBAIGNvbnN0IFN0cmluZyYg
UGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBw
ZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAg
IC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlz
IGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFw
cGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgp
OwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIw
ZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3OTk1YTI3ZTg4NzI5ZDJj
ZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3
ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJh
bWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRv
ci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVk
Tm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1
cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkg
fSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlN
RVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNv
ZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291
cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0y
NjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5k
IGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5j
b2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQo
dGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVy
bCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsK
KyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJp
bmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNv
dXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFn
ZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5k
ZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNl
cy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0
YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxz
LmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYz
ZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlk
MWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKICAgICAg
ICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291
cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5
YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2Iy
OTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBT
aGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4
MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5
NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVy
LmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFk
ZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9
CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUg
QEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxv
YWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxl
IGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
YXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZp
bGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxl
KSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFk
U29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewog
ICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4
NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1
N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1
MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVm
IHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFn
RGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9h
cmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQo
KTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRh
OworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7
CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBA
IC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JF
X0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQ
TEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNv
dXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0
YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGll
bnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7Cisg
ICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNl
bmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7
CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xp
cGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMs
IGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRm
b3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRo
U2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JU
eXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4
dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2Fl
NzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmlu
ZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21E
YXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3Vz
dG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3Rv
bURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVi
b2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29k
ZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2Rlcigp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2Vj
NjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYx
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBt
X29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJv
bVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAg
U3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFl
ZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4
YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29s
b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRl
eHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBA
IC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBl
KFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2Fy
ZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0
eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAv
LyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRk
Li5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5h
bCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFy
dENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1h
dDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3Jt
YXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAg
ICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xp
ZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0
YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50
RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJm
ZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0Nywx
NCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRD
dXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0
IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5
cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwg
SW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMs
NyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3Ry
aW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3
MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNGJlYTRmMThlNGM3OWRlYjU3NDRmMjgwZTlm
OGY5YmMxODNjNmYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKIAogY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmll
d0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQpAQCAtMjIyLDcgKzIyMiw3
IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRl
ckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252
ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhh
c0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsK
IAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xp
ZW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIu
LjA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRlYTlkMzQ5YWI3MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50
Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEyMCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9y
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1f
c3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNm
NzhiMTU3ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0z
OCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAg
ICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBk
OGU2OGUzMzc3ODFmYjI5YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVkLi5iYmUzOTIzYTIwN2EwZTkz
NjExNzMwNzRmOTc2MDdmYWQwNTg3ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUo
ZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsg
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQog
ICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0p
OwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQpAQCAtNjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3sKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIp
CiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1
ZmZlciYgbWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZm
ZXIpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFw
cGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsK
KyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1
ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1h
eVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VG
aWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBw
ZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3Mp
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1h
cHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1
aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8
dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0
byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGlu
c3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJl
IGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNv
bWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisg
ICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+
KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRz
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkp
OwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRz
LCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAg
QVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29u
c2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJp
bmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgp
IGNvbnN0CkBAIC0xODEsNiArMTU2LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3Ry
aW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitz
aXplX3QgU2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOwor
fQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFz
aXplKCk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1
ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaXplKCkpLCAxKTsKQEAgLTIwMiwxMCArMTkyLDkgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJl
c2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkp
OwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAg
ICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXpl
LCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVu
dC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKQEAgLTIxMywyMyArMjAyLDI2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAg
IHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rvcikp
IH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0
ZW50KCkpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsK
ICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
e21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
IH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigp
CiB7CiAgICAgbV9zaXplID0gMDsKQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6
ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVu
dHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQot
ICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Q
b3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJu
IGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVu
dHM7CkBAIC0zNTUsOCArMzQyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBT
aGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdp
bigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVy
biBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3
Miw3ICszNTgsNTcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkg
Y29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7
Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgp
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBt
X2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sK
KyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3Vv
dXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6
ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5z
ZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQor
eworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVk
RmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlm
IChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAg
IGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3Mp
OworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsK
KyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisK
K2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorewor
ICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitjb25zdCBjaGFy
KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3Qg
dWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyAr
NDI3LDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsK
IH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBj
b25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtNDAyLDcgKzQzOCw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5k
aWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBj
b25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
ZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQpAQCAtNDU2LDcgKzQ5Miw3IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpzaXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAg
YXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00
NzUsNyArNTExLDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBj
b25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9
CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdt
ZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpT
aGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBv
c2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBt
X3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3Nl
Z21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ5OSwxNiArNTM1LDIx
IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIg
eworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0s
Ci0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAg
ICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0
aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgp
OwpAQCAtNTM0LDcgKzU3NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFk
MzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi5hY2M2YTkzZjA4NDQ1ODQ4NmZiYTBhNTYy
NmZjZDVlMzM1YzUzZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTYyLDE0NiArNjIsMTMzIEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQg
YnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJl
ZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBk
YXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
KTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lm
IFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNv
bnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0Owot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQg
YXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQog
I2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsK
KyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
ICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0g
ICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBj
b3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJ
dGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAg
IC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBs
YWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCog
ZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNp
bWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUg
ZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hh
cmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0
ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRz
IHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1
ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgp
OyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90
PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAg
ICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXpl
X3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0
OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFBy
b3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21l
bnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90
aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9j
YXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Cisj
ZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgp
OwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29u
c3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
aWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWlu
UHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxD
RkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewot
ICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAg
IEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShG
T1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQor
ICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBib29sIGNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERh
dGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4
X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJl
Zj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIp
Ci0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxH
Qnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQo
UmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwK
KyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0gICAgICAgIERh
dGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVu
dChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShwcm92aWRlcikpIHsgfQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAgICAgc3RkOjp2
YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAg
ICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
LSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
LSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFy
ZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBt
ZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzQ29udGlndW91cygpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0
IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRh
U2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50
cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMTk3LDE3NiBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNl
Z21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVu
dHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBl
bmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9z
aXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2
YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmll
bmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9y
IG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNp
emVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
I2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgog
I2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNp
ZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOworI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOwor
I2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0
YVJlZik7CiAjZW5kaWYKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCiAgICAgLy8gQ29tYmluZXMgYWxs
IHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVy
IGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRh
KCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAg
ICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6
ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNp
emVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21l
bnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29t
YmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIg
aXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250
ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9m
Li4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8
RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rl
cigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBO
bywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwor
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09S
RV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5k
aWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3Jl
YXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRh
U2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90
IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFy
ZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisg
ICAgICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAg
IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAg
IC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZl
ciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25j
ZSBjcmVhdGVkLgorICAgICAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAg
ICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7CisgICAgfQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoQXJn
cyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAg
IGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2
b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAg
ICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWY8U2hh
cmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAg
ICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICB9CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkK
QEAgLTI2OCwyMSArMzc2LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVy
OjpleHRyYWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1Np
emUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25z
dCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJl
ZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlh
NGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEw
ODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0
MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhi
b29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwg
Y2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3
b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRv
IG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+
aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVU
eXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0
NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMw
ZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5j
b2RlckNGOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2Rp
bmcoKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRh
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5
TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5
YWE1ZThhMTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0z
Nyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0
IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0
MGJiMmZjYjkxLi5hMTJhNzQxYTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8g
VXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVt
ZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBm
b3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0
YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0
YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAg
ICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9
IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50
LT5tX2ltbXV0YWJsZURhdGEpKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRv
T25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7
CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
ZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2
ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlk
YmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAog
I2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRv
UE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0g
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0
aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0
YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxl
VHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5n
RGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FU
eXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZv
clR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJp
dHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJi
NjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNh
NzgxNjc1YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2Ev
VmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5T
RGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7
CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAg
ICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYx
LDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9z
aXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9u
OihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4
LDIyIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVy
biBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlk
Z2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUlu
dG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NF
UlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewog
ICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmls
ZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJj
ZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
c291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBA
QCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNv
bnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVu
dDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVT
aGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9u
OjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJi
YjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2
MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6
T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBh
cyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFy
c2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFkZGVl
N2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAg
ICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAK
LSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0lu
aXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29u
dGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5p
dERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3No
U2l6ZSA9IDA7CkBAIC0xOTYsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21D
ZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNN
YXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAK
ICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAg
aWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAg
ICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0
YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNB
cnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92
ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0
cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25E
YXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtl
KCk7CiB9CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2Vi
TSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUo
KSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJu
IGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046
OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhl
IGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtl
eSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGlu
ZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAg
IGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRh
LmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmco
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZN
b3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09O
U3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNv
bkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmds
ZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3
Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6
OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hF
bmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5i
dWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJT
aXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5Njhl
OTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5
YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVu
Y29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZp
bmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVu
Y29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRj
MTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRi
MGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVk
RW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
ZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6Zmlu
aXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0
KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQg
PSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8
R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFm
ODIxMWYyZS4uY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5h
bDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25z
dCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3
YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEz
OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZl
ckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+
IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6
ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZl
cio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhp
cykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEp
LT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRo
aXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChm
aWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEs
NyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNp
emUpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMu
Z2V0KCksIHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4
ZGZiOTY5MDc4Nzk1ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgy
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBv
cmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEp
KTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVy
dGljYWxEYXRhKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXpl
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZv
bnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8g
Y3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFj
ZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQu
LmY5YmFjYTVhMjY0MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
ICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFj
ayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3Jl
YXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hl
Rm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAg
ICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9
IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpP
cmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGlj
SXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxGb250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VE
YXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRl
MTk5YjE0ZTg0YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaApAQCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CiAKIC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBj
cmVhdGVkLCBubyBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxl
IHdheSkuCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBs
YXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29u
c3Q7CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gZm9udEZhY2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9u
dEZhY2VEYXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlk
MDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDky
OWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUp
LCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBt
X2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkp
CiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUx
Li45MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9k
ZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0
cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAg
Y29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSAr
NDksOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0
cjxNb2RlbD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2Rl
bChSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0
YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyAr
NjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+
KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7
CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
LCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6
Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RG
TW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBl
NzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYz
MjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJ
bnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1
ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zm
c2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBv
ZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFk
VUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZh
bHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGlj
IGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNl
dCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNp
emVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZl
Y3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVp
bnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBp
c1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qg
c2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJv
b2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4m
IHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdv
ZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQu
aXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQo
U2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNm
bnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09G
RlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAt
Mjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZv
bnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQot
ICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZv
bnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
bGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhh
YzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAs
MTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZl
ciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dP
RkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBX
T0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2Zu
dCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3Ro
ZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50
LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZm
ZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUg
c3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0
cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWls
cywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0
YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0
aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxi
YXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZm
ZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBh
dXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1
YTBkZjJmZjQwNzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBS
ZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIg
Y29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAg
ICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAg
ICAgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZO
YW1lKCkpCi0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBp
ZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVRE
QVRBKQogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5j
TmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hT
dHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0g
W05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0
cmluZyopcHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJy
b3I6bmlsXTsKICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXko
bV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4g
ZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBb
UEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNl
c3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJ
ZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
ZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAg
ICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV1dOworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6
W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdp
dGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2lu
ZyByZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3Rz
LmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAg
ICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250
ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRl
bnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25z
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQog
CiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJh
Y2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nl
c3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2Vk
S2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRz
V2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRV
Ukw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxh
eWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTks
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNW
ZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRh
dGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRT
ZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFn
ZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
cjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0
KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIg
PSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
QHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERh
dGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRl
bnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJv
ciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERh
dGEpXSB7CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAg
ICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9y
IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4g
ewpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAg
ICAgIGF1dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0
byYga2V5SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQg
PSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJ
RCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsK
KyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJp
bmcoa2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAg
ICAgICAgICAgZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5n
KHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAg
ICByZXF1ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAg
LTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAo
YXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAg
ICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAg
ICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZp
cnN0KCkpOwotICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBt
YWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0
KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwg
Y29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChO
U0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1v
dmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50
S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlm
aWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3Qo
bV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFp
blB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBt
YWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0
KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwg
Y29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChO
U0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEg
PSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5
NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4
ZmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
CkBAIC0zMDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9h
ZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lv
bihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xv
YWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwor
ICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VM
b2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2Jh
bF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNz
ZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlv
bkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAg
LTY0Myw3ICs2NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0
KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpk
YXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERh
dGFSZWNlaXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNB
bGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4
ODNiY2E5MTMyZTIyZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0Rh
dGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hh
cmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9w
YXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5
KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZs
YWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
CmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkz
N2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+
IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZm
MjQ3ZjAuLmI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAg
LTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
JiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3Jt
UmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBt
X2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFy
ZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdl
dCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9w
YXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1
ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAg
ICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVl
c3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
ewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2Fk
RmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9h
ZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07
CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5
ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFj
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIw
MzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAg
LTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29y
cmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShD
T0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywg
dm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7
CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0g
c2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFn
ZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRh
LnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdl
dFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRy
KSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERh
dGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQq
IGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAs
MTYgQEAgdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUg
U2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFy
ZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxp
dHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3Vy
aW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRC
dWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgp
LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1h
Z2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAg
ICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgot
ICAgIGRhdGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2Ug
dGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBv
aW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBh
IHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQg
d29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUg
R2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFj
a3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQ
b3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVj
dCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRl
ckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2Iy
NjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNy
ZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEo
KS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJS
ZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBt
X2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQ
cm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXgg
ODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5
ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVh
bChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVh
bChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZk
Mzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1
MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0z
NjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50
KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7
CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihy
ZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRh
Q29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFh
YTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcw
NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1
MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9i
amVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0
eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRv
cHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25O
b09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0
KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRl
eCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1
OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMg
Ym9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYg
KCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJl
MmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdj
MTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGli
bGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVG
YWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fp
cm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBl
RmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRh
YmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYg
IUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAw
MTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRk
NDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApA
QCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0
ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlz
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0K
IAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFi
MWNiODcxYmUuLmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWlu
dCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25l
ZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3
Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAg
RW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVu
Y29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1
c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZh
bHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJl
YW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCld
IHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFt
ZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZl
ci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9p
bm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4
MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0
NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYm
IGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRh
aW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERh
dGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAg
ICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGlu
aXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMw
N2Y3YzAxYjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0
VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VD
b250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBn
Y2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBA
IHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFy
KiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3No
KSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0
RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkK
LSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEs
OSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9y
KiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1
cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Ro
cm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2Fk
KQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFy
c2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi42
NmUyOTc5ZTNlY2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVH
X0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9k
ZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1
YmxpYzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkpIHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUg
c2FmZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciog
aW5pdERhdGEpCkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NB
VF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdf
Y2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVj
dGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAg
IGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXRE
YXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5k
KHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEo
Y29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQog
ICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJh
Y3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5
bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9w
YXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEw
ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBi
ZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlk
OwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAg
ICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAg
IGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9w
YXlsb2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25z
dCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBl
KCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlk
NDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRm
b3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBz
aXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlw
dGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikK
K3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRh
dGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0Njli
MDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50
SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdh
OS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50
SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50
ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxs
b2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdl
Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNw
cAppbmRleCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIz
ZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
byA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3Jy
ZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVj
dGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJl
Y3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0
YWxpY0NvcnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3Qo
aXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0
aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4
dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJu
SW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9u
SW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0
OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFz
c2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAg
ICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFy
dHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4m
IGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBh
cnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2Nv
dW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50
OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50
Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFu
dHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBj
b25zdAorICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUz
LDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAg
ICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlw
aDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJs
eVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBh
cnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0
ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5
cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0
KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292
ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVy
ZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQg
aG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAg
Y29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0
CisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24o
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBp
c1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZf
dCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09m
ZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJs
ZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25z
dGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQg
PSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIx
Miw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8q
IG1hdGhHbHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29u
c3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
b2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4
MDM1Y2YuLjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEz
Myw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250
UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0
cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBj
ODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFj
OGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3
Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNk
ZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkp
IDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkg
PDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIsIHNpemVfdCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0
IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5z
aXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4
Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJs
ZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90
ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5j
bHVkZWQgYXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGlj
IGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2
b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQq
IHZhbGlkYXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHJldHVybiBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0
IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBv
ZmZzZXQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRl
T2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zm
c2V0KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpA
QCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUg
ewogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDog
VGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlw
aCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3Zl
cmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292
ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRl
eCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0
KSB7CiAgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2Jm
OTJkMWEuLjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRl
cjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0
YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0
dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGlj
aCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQK
LWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJp
bmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCBy
ZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBT
dHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewog
ICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0
IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihm
b250RGF0YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25z
dCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8
dWluCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0
YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lKQorUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBp
ZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1Yjdl
NzQ4NTJjMTllMzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250
TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNj
MDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZk
MjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3Zl
cmFnZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFn
ZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFi
bGUqIGNvdmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3Qg
eyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9m
ZnNldCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJz
dGl0dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsK
ICAgICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29t
ZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWlj
YWxseS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJz
dGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1
YlRhYmxlID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
JnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3Ry
dWN0IExvb2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3Vw
Q291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29u
c3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBp
bmRleCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4
ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkK
QEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9v
a3VwTGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3Qg
TG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25z
KGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3Ry
dWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBm
ZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUo
dWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZl
YXR1cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1
cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVh
dHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1
cmVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0
dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1
LDcgQEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07
CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJl
VGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFn
IGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0
dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUg
OiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAg
ICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVs
dExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFu
Z1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50
XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2Ugewog
ICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07
CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2Ny
aXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50Owog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEw
LDcgKzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRl
ZmF1bHRTY3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYg
KCFjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEs
NyArMzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRP
ZmZzZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZh
dWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEg
KzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlz
dE9mZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+
KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVh
dHVyZUxpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAg
IGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3Vw
TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZl
YXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0
ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBj
b25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYg
KCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJh
c2UgewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAg
ICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0
dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25z
dCBGZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcg
KzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4g
ZmVhdHVyZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25z
KEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5
cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRh
YmxlID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAg
IGlmICghdmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdT
VUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNl
V2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0
YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBs
YXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBP
cGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5
cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVW
ZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBP
cGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyBy
ZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZo
ZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIp
OwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZv
aWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRp
Y2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5
cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpH
U1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRp
Y2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRk
ODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3
ODNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5h
bWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9u
dE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0g
cmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4u
ZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBD
R0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRp
b247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1
Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFu
dFNldHRpbmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9u
dFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVj
MzA0NDkzMTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAg
c3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1l
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnRO
YW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURh
dGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRl
OTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFD
YWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxh
dGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIp
IGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAK
aW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNi
ODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNw
cApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEo
R0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9y
ZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdE
SU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBz
aXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRh
YmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVj
dChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25E
YXRhLmgKaW5kZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2Uz
YjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2Nh
blNtYXJ0UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBs
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0
Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1v
dmUoYnVmZmVyKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBj
b25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURh
dGEoKSBjb25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0
b21EYXRhKCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1h
Z2U+IG1faW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4
NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVy
cm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewot
ICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRz
IGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9k
YXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBp
ZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3Vv
dXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAg
ICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5
RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uYTQyZTVi
YzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIo
anBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzEx
XSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2Zp
bGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5m
bykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIg
bWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0
KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5k
YXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUp
LCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7
CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7Cisg
ICAgcmV0dXJuIGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApA
QCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25s
eVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQ
RUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdh
ZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3
MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2
N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUx
ZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAg
ICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlw
ZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJv
YXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQog
CiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50
RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGll
bnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVz
W2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAg
ICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+
Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05T
U2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250
ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVy
cm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05T
U2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250
ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwog
ICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21E
YXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0
YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAg
ICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0
KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJk
SW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAg
IEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEg
JiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAg
ICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsK
ICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAg
dXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAg
ICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0
cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVd
OwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBh
c3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8
U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRl
KGNvbnN0IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFU
SU9OX1NUWUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0
b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJp
YWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2lu
KCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVy
ZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7
CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdp
c3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3Jp
Z2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBp
ZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIo
KS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1
ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGll
ZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0
aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0
ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0
ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3Vz
dG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBm
aXJpbmcgYGRyYWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNT
dHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CiB7CiAgICAgaWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0g
W21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC03NTcsNyArNzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFz
dGVib2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVt
IG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
U3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1
NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2Qy
MGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1f
cHJvdmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5T
KFtbV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0
aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpp
bmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMy
ZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNjMzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciog
ZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0g
ICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1F
VHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcg
KzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNv
bnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0
cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2Fy
ZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBz
dHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5
IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFz
dGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwg
c3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
aWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0
cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRX
cml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4u
ODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4
LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bh
c3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9y
VHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50
LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+
Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBj
dXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250
ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVu
bGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkp
LmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0
ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTcz
Li4xYjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAg
LTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3Rl
Ym9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21f
cGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBA
QCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9t
UGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0g
W21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5n
ZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9t
RGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAg
ICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBA
QCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3Rv
bURhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAg
ICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0
byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZm
ZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1U
eXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
c3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0
cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAg
ICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1
dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkK
ICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5n
ZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAg
fQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAo
IWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZl
ciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJk
VHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcg
QEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShO
U1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJ
bmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlw
ZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3Rl
Ym9hcmRDdXN0b21EYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAg
W2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwog
ICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdP
ckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihz
dHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUz
MmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0x
MTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93
cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0
Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlw
dGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2
Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEz
ZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVy
LmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8g
bG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3Nl
IGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVs
ZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBu
dWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0
Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAg
TG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAg
ICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEu
YXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2Rh
dGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBk
YXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCmluZGV4IGEzN2EwZDg3NGY3MmJmOTFiZDUyYzNhYzZiNTg1ZDMzM2YwZmNh
M2MuLmIxNzQ5NzQ0NTRiZjczOTg5MDljYzhiZWE0ZDBhM2I5NTc5YTc4ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTIsMTMgKzQxMiwx
MyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJu
ICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjph
c1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9y
bURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0
b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBV
UkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBh
YjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9N
Rm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRh
RWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxG
b3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0K
ICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3Vu
ZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFy
ZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3Ry
ZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5
c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVh
bTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4
NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJl
c291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2
ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5Mzcx
NGJjZjJiY2RhZjY5NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgy
YzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7
CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2Up
Ci0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3Jp
Z2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3Bv
bnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFz
a0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkg
QEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3Qg
bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNw
b25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lv
biwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3Bv
bnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hN
YXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0
cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdp
bmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcg
OiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3Nm
dWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291
cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJh
bmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJz
ZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250
ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUg
PSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRv
IGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24g
ZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0
IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93
IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNp
emUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdp
bikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZl
ci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwog
ICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVC
eXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0g
V2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewor
CisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVm
ZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJh
dG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5u
aW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZl
ZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAg
ICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRl
eDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0g
YnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBi
dWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZp
ZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250
ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3Nm
dWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNp
emUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1F
OiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNr
IGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVz
cG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJp
bmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRh
dGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZl
ci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNw
b25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcx
NmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNo
YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9
PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0
cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0g
ICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
bnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwog
ICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxO
U1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0
ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLmQ2
MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2Vk
IGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nl
c3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFy
dEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsK
ICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBw
cm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAg
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwog
ICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpw
cm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5
U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsK
ICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRh
IHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVy
LmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1
ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJl
bW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQg
d2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAg
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVt
b3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9z
dGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4Mzkx
OTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3ZDE0
MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhh
bmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9
CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0
NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5IEBA
IHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1
cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
LSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVy
KSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRS
ZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3Zl
KGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtM
b2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5
NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDggKzk4
Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+
ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnko
ZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDggQEAg
c3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBT
dHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhp
cyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdy
aXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAg
ICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5z
aXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZp
bGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAm
d3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAg
ICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODlj
ZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5
OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
c3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDAp
OwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChS
ZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVh
ZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNv
bnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgp
LmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNk
OTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsy
MTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBj
b25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1
b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNp
emUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3Ry
aW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBp
ZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1J
bnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUt
PmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlm
aWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNl
cnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpA
QCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhy
ZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVz
cG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4u
NWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVy
LmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBT
Y3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2Ny
aXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChb
Jl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChb
Jl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21V
VEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1
ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5n
bGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1f
YnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIu
Z2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVu
dC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBw
ZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAg
IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJp
bmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3Ro
KCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9
CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1
ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEz
MDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRlYTI0MzBj
Y2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApA
QCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
Y3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdl
dCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgp
IGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZm
ZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7
IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2Vn
bWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRG
LTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8g
Q29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMw
N2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjg1ZTc2MzgzZGFiMzUzYTRmYzRiMDlk
MTI3NzE4NWEwMGU5ZTIzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJs
LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBt
X3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3Jr
ZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCiti
b29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051bGwoKTsK
K30KKwogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYm
ICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAg
ICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAg
ICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAg
ICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9k
YXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEp
IHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAg
ICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmco
KSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAg
ICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSArMTI3
LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLjFiM2Q3
ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFz
cyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBA
IC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9k
YXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTG9h
ZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJv
ck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAg
LTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9u
dExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1
M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3
NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBA
IHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0
ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1
bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdU
Rk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAg
ICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
Y2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2
NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdl
OjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGlu
IG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Bl
bj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2Ny
aXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZp
bGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZ
ZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2
YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1Nj
cmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFi
OTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2Mw
OWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNW
YWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5T
RU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25z
ZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRo
cm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVz
dDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1
c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5n
IGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpl
eGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7
CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRh
dGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAg
IFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5
cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1F
VHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJl
dHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEp
LCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQog
ICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsK
ICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxs
cHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VF
bmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAg
bV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAg
bV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5k
ZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkg
ZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAg
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAg
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMz
YTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3Nzdi
YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFu
dD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
Y2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3
ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9j
dW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3
MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNk
MjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMo
Y29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwog
CiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRl
ci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dl
ZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2Yzcx
NGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hh
ciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJl
c291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRj
YWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4
YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1l
ZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDog
bnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAg
ICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uNTRkYzIwYTlh
MTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyAr
OTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
c3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAg
IHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRl
ZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJp
Y3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNo
cm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQ
ZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQog
ICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5l
Y3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVj
dGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlh
bFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50
aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAg
KzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJv
eEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1l
dGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
LT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwy
MCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVm
ZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlz
RmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUo
bV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAg
ICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVn
eTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlw
YXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGlu
Zy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkp
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERh
dGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIw
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZl
bnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXpl
IG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVu
ZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFs
d2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29k
ZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWRE
YXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9i
dWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1
ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAg
IHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1f
YnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVk
RGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXpl
IGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOwor
ICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAg
ICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlz
aFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsx
MjU2LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVy
SWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJG
aXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVm
ZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAg
aWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZl
cmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWRE
YXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBt
X2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERh
dGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9
CiAKQEAgLTEyNzksNyArMTI4MSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlT
dG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVB
c0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBu
b3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxs
KCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTog
Tm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlz
IG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBp
ZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVu
dHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNz
aW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3Qo
KS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3
b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0
b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9u
ZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJv
ZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRS
ZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xv
YWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJs
ZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5k
ZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThj
NmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1l
ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyAr
MjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBV
bmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAg
ICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsy
NDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsK
ICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JW
YWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2Nh
Y2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250
aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4
IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4
OTljMWMwMmQwZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAg
ICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1
MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2Fs
bGJhY2smJik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+
OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KT47CiAgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmlu
ZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4Mjcz
ZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+
c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVy
LT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5k
ZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2
Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25z
dCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBi
b2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVm
PFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3Jl
IGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikgewog
ICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6
ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7
Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5y
ZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rv
cmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVj
b3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUz
NjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50
cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNv
ZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAg
IGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZm
ZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1f
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCks
IG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1l
U3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4u
ZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAo
bV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAg
ICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
ID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVk
ICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJl
dmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNv
bnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgp
IDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAg
IH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAo
bV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYm
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsK
ICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0
b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVC
eURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAz
NThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlm
NmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFG
b3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMuLmY2
MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVh
ZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQog
CiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1
cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygp
OworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFk
b3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkp
KTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBm
ZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJj
NTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJl
dHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYz
YTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAt
NDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0
OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJD
b3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7
Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0K
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBt
X2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgp
IDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNh
OTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIo
c2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhp
cy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
CmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2Fl
NGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVy
biB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lz
dGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToK
ICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4u
MTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBz
dGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwg
Y29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpk
YXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNm
RGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFy
Y2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVl
YTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
QEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAo
IWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNl
bmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAg
ICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
Zm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUo
KSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRl
bUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2Ez
MDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZk
Y2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQog
ICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMi
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgp
KSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hh
cmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZi
YjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUs
MTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBb
c2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAg
ICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAg
fSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkg
Y29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVh
YmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRjMWMz
NDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0
MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBj
b25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAg
ICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNo
YXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUy
MWJkNDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApA
QCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgh
YnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBS
ZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAg
ICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxT
aGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlw
ZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0
eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNv
ZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRh
KERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYg
ZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUo
KSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRh
dGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7
CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50
ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6
c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNv
ZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
cHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAt
NDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJn
dW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBp
ZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBk
YXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3
ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7
IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMw
MTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQo
KSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9
CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBA
IC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1
cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsK
ICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMw
MjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdh
MjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBD
b2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwog
Y2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2
ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3
OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5
NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFy
Z3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8
U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRh
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9v
bCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
V2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjVi
NjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVh
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRD
b2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxh
dGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShE
ZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51
bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7
CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNl
RGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJi
MGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2My
OWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEw
M2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgs
NiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5n
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNF
bmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3Np
bmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5
cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVT
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpX
ZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0
MWUxMTdhNjdkM2RlZTkzYjcuLjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjEx
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBn
ZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5j
dGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQg
Z2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9u
PGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBn
ZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBm
dW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmlu
ZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4
NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcg
KzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFt
X2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAg
YXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcw
LDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5n
JiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxp
emVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAg
ICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2Zh
ZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1MjFi
N2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29u
c3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRl
eHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3
a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGln
aGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4
dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhp
Z2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0p
OwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDop
XSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tI
aWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3Jl
OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6
aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2Iw
MjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMx
OTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNl
aXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwog
ICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3Rr
X3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAg
ICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3Vz
dG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1
NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhj
YjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+
PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5t
X3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2Fj
OS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3
IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0
SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCld
KQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0
aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChb
dHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2Fy
ZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9y
VHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcw
LDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShX
ZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxU
eXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJv
YXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0g
YXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJj
aGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5z
RGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZl
XTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2Fy
ZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0
eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5k
YXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdl
LT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilw
bGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1
NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRB
dERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0
YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1l
ZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0
cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9N
UGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRh
dGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdl
dCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3Jh
bnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7
CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3Jh
bnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0
ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5
ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNp
bmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJv
b2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3Jl
OjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRp
ZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiMDQ1
MzlkNjAwNWQ1NDNiYzYyZmI4OTA1OTk2NDY4OTMyYTMzZTkyLi5mM2FkNTc2YjMzM2E5MzI5NTAw
NjNmN2EzYTk0Y2Y1NzczYjQyYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVu
VG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wg
cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBh
c3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYy
MDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3NjcwMzU0
ZmVhZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhX
ZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcmVx
dWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5mbyhBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAmcGFnZSkp
CiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTg3LDEwICsx
ODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwog
CiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAg
ICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0Rh
dGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9u
VHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsK
LSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQot
ICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXpl
KCkgfTsKLQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVy
KG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0Rh
dGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRp
ZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTky
NDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVmZGFhYjdh
NWExYmU2YWRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBAIC00NCw2
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE3LDcgQEAg
cHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlv
bkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1
ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9v
bCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2
OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBp
c0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hh
bmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRS
ZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMy
ZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2Ri
NTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlk
Q2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShp
bWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYTgx
Y2NlNDQ1NWViMWE3MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNmYmQ5ODQ5
Yjg0YjZlN2FhZmEzNGNmN2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3
IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNl
bmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERh
dGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAg
Zm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWRE
b2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBA
IC02NTk5LDcgKzY1OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNN
YXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICgh
ZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAg
ICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAg
IHJldHVybiBOTzsKIApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFz
c2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRX
aXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAg
ICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBu
ZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFt
ZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNp
dCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0g
fTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9
IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYg
Y29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVk
YmM2Yy4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyAr
MTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4
OWRkOGU2MWI2NmI1OThkYjQ2Li5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRk
MDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkw
YmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
CkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
b2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0
aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNv
cmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wp
IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmlu
ZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2Zm
NjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6
KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAg
ICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFu
Z2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkp
XTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2
b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0Rl
bGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVs
ZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5n
RGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6
bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0
ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUg
aW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQo
dHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBw
YXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2
MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgz
M2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwg
Y29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdl
KSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBw
YWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1
Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVi
b2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0
ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVt
LT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBh
c3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEz
OTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1
OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENo
YW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAg
ICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmlj
YXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bh
c3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdl
YlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxl
UmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3
YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcy
YjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3Rh
dGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCog
ZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFy
ZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGlj
X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+
ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29u
c3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZl
cikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVm
ZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBz
aGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOwor
ICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5z
aWduZWQgY2hhciopY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5z
aXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAg
IH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQ
SShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRv
QVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmco
KS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVs
L21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIw
MTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4
ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAo
ZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBm
aWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4N2QzNjEz
ZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3YTI5YmMyYTYwYzFmZTI3
MGM4YTM5ZjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBm
cm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4
YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5
NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNo
b3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsK
IAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmco
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxl
bmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjU4YzFj
OWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAg
UGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwg
UmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2lu
RWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1f
cGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmll
dzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0
YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdl
LT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9u
c2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFu
dWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51
YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkg
ewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlz
aGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFu
dWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVz
ZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBAIHZvaWQg
UGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
dWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRp
YWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYm
IG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAg
ICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFs
U3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAg
cmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVs
aXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21h
bnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYg
KG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051
bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgp
OworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAg
ICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCks
IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0g
bnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAy
M2YyMy4uMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6
IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIsNyArMjUz
LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxT
dHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFt
RXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1E
YXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVh
bFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lk
ZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTlj
MDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2Jk
MzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAt
NzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkg
ewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5j
b3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBp
ZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25z
ZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVy
KCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRh
KS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBb
dGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAg
ICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwg
W3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRS
ZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAg
ICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJh
YjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQy
OGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
ODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9i
bG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVu
aXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBS
ZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+
IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcy
NjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0
ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3Bh
Z2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li45
MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkg
ZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAg
ICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2
b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDll
ZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3Vy
Y2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURh
dGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0
b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCks
IGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCmluZGV4IGY0MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYyYTEuLjZm
M2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwg
MCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhf
dD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJl
ZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUs
IHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwog
CiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUg
cGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRs
ZTsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7
CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBz
dGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4
NTMxYWI3MzIxNGZiMC4uM2ZmMzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRh
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4
NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi43NmM2MDI4ODgxMzUyMjA3MWEyMjc2OWQ3M2YyZDNl
ODA4YmFjM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRl
ckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5h
bWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBh
Z2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwg
bV9idWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQog
CkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5p
c2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdl
YlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVm
ZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFrZSgpLmdl
dCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAg
ICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZjMDdj
YjUzZGE4Ny4uYWUwNTBhOTkyM2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEzIEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViRnJhbWU7CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5n
IG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEu
LjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6
OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBF
bGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5u
c1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+
c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAg
c2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFy
Y2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0
YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1
dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihh
cmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIx
N2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3
ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJj
ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJh
bWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdl
NTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4
YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxl
dAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlw
ZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVk
aXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAg
YXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0
M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYg
SEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJu
IG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRh
cmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
CiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5T
dGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJ
VF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJu
IHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4
YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4
NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtp
dEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNl
bnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRh
ID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2
MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRp
dGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9p
ZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAK
ICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3Mo
Y29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNw
b25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNk
MmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFj
NDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQs
IG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdl
YktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAy
NGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJh
M2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApA
QCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxs
UGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVj
dG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5
M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3
YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBy
ZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBh
c3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50
KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4
ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3
ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNv
dXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURh
dGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5
Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAo
TlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5n
V2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRB
cmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJz
ZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJp
dmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwog
ICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFy
c2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
OiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3
NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3Vs
dC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9w
dE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpi
dWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAg
ICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRh
OltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBs
ZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVz
dFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3
YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3
OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVz
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6
KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVu
Y29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0
KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0
YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9
IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJl
c3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAg
ICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSBy
ZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRl
eHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7
CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgp
OwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3Vy
Y2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6
V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktl
eTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBl
IGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmpl
Y3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpA
QCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUt
PmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUt
PmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAg
cmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4
LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5n
ID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3Jl
RGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+
ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIp
LCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2Rpbmcu
ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRh
LT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0
cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4u
NWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6
TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBA
IC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0
cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVy
biBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2Ri
OWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFz
cyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0
YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAg
ICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHBy
aXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3Jl
ZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5k
ZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYx
YWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEo
X0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRh
dGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRh
dGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdU
Rk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2
ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFh
YWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
QEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5h
bDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBk
aWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQg
cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5
YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcg
QEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoq
IHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVE
OwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1h
aW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJj
ZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRh
dGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MGE1YTBh
MTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJhMTRkOTE0NDNlNTMx
OWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBA
IC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJG
cmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBl
LCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NF
RURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpAQCAtNTk1LDExICs1
OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0
YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAgIC8vIEZJWE1FOiB0
aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBp
bnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Ig
b3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFC
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVh
ZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAg
ICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50
PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEo
V1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBu
dWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4
dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1
ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1
MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSog
V2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDky
OTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBX
ZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0
YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBX
ZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8v
IElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ODY4
ZDJlMjM2NWZlZTc1MTA0MWY0NGZmM2U2NDBmYzBkYmFkYmFkLi45NGYwNjNjYzA1MmE4OGMyMTY0
ZTQzMjFlNjU4ZjQzOWNhYzczNDU5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCiAyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ29tcGlsYXRpb24gZXJyb3Igb24gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFi
YzhlMmY2MzI3YjIxMmM3Y2E0NjguLjIyMGEzODAwNzgyMzFhNWRiNTM0ZTc0MzBkY2Q4ZTc3Y2Qw
ZjA3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1MiArNDMsNDUg
QEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJp
bmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJp
bmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZp
bGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXIt
PmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6
ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgp
KTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1
ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVm
ZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNT
RVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBF
WFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCks
IFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwor
ICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTYsMTAgKzg5LDEwIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFy
IHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsK
ICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVu
KHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVu
KHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVu
KHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFy
ZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRl
c3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNo
YXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFT
U0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24s
IGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBA
IC0xMTEsMTAgKzEwNCwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAw
MCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZl
Y3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3Zl
KHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAg
ICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMHg0MDAwOyArK2kpIHsKQEAgLTE1MSwxNyArMTQ0LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVy
bmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVs
dmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0
IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEu
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFu
IHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShs
ZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICog
NCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgp
LCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5z
aXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVD
VF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRl
cjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBi
dWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAg
IEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBp
cyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAg
ICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7
CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigp
LCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBF
WFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQg
aXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0
YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xNzUsNjAgKzIwNCw3MCBAQCBz
dGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21l
RGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsK
LSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0
b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywg
J2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdo
JyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RG
TW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsK
ICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8g
Z2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1
dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7
Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29u
dGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2Rl
ZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAg
ICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hl
Y2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdo
MS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBo
LnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCks
ICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwog
ICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlq
a2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAg
ICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7Cisg
ICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdo
MS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVm
ZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rv
cjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAg
ICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4g
YnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7
J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7
ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBi
dWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydh
JywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsK
LSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQ
RUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywg
J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9
fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydh
J319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVm
ZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAn
YycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsg
eyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKwor
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdj
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1
aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
dDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1
bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUx
MiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVm
ZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmco
KSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI4OCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNp
bXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsK
IAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVu
KHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9F
UShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0
KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
Mik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4
dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihz
aW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxF
KE1IVE1MKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIx
ODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFB
cnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAg
ICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVu
Z3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5
dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEu
bGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBi
dWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0Rh
dGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsK
LSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwot
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwg
YnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxk
RGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCld
IF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0s
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBO
U0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywg
aGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKilo
ZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29y
bGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAg
ICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAgICAg
ICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAg
ICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERh
dGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAg
ICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1dG8m
IHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdt
ZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3Nl
Z21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBz
ZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAg
ICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3Np
dGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNv
bWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRp
b24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+
Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVu
dGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50
Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXpl
KCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2Vn
bWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0
YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0
KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShb
bGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNv
ZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxh
c3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445837</attachid>
            <date>2021-12-03 04:02:04 -0800</date>
            <delta_ts>2021-12-03 07:27:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211203230202.patch</filename>
            <type>text/plain</type>
            <size>135930</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNkYzUyMjc2ZjVjYzAy
ZTFhZDk2MmFkY2FlNWQ2ZmM2MzY0MzJlOC4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkN2Y1YTViYjAxNzAzMzQ4ZDhlYTRmNTFk
Njg0NDNhN2JlNmJjMGY1Li4wNDdlNDA3ZmQ2NGY1NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZiNWM0ZjJiMGZk
ZWUuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0
ZjU2MC4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRh
ID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikK
ICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hh
cmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5p
c051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVz
b3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2
NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4NjdkNDc4M2VjYWExMzZiNTc4MzkyYzI4MGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
QEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBS
ZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50
IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJl
c291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0
YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7
CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jl
cXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUg
cmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0
OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0
ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAt
MzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0K
KyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2Iz
ZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0Yzcx
MjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRh
KCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Ut
PmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkuLmM3NzBkNzY0
MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRh
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNo
ZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcg
ZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3Mywx
MiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVj
dXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJj
ZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBk
YXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVt
b3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0
YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2Ut
PnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4
IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjBlMTQ1NzYzZmM3YWZi
YjIzNTcyZmVhNzg3Y2E0NTMxZjNkYjUyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSog
cGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBh
c2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVND
SUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAg
ICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBz
dHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwg
Y29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5z
dHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJl
YW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0g
cmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291
cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBx
dW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVk
UHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAg
ICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFz
IGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZz
LgpAQCAtMTk2LDE1ICsxOTYsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGgg
LSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAg
ICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGlu
ZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlT
dHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAg
IG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmlu
Zy5sZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbWh0bWxEYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IDczMzZi
MzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYuLjQwMjViOTgwZTVlZTY4MmRiMDc2
MmFmYTg2ZWNhOWQ5MmZlODU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5
KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRl
bnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29u
dGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnku
aXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmICht
aW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5
KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAg
ICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5h
cHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFy
dCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVl
ayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXIm
IG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2Np
aSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUt
ZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4
KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxp
bmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhl
YWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50
YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBc
clxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhl
IFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4K
LSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAg
ICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpAQCAtMTkzLDEwICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBhdXRvIGNvbnRpZ3VvdXNDb250
ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250
ZW50ID0gY29udGVudC50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1l
SGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6
OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRp
Z3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVj
b2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGln
dW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAg
ICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4i
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1LDExICsyMDUsMTEgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlN
RUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxl
RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAg
ICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUo
KSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRp
Z3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHAKaW5kZXggNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0
Zi4uOTBkMWM2YTJiYThjNGE0MmUxZmViZDgwMWU1Mjg3ODA1OTAxMmI5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQog
Ci12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5o
CmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjY0YjE0ZDVm
NjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25N
YW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3Vt
ZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29k
ZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDY2ZDNl
YWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAuLjlkMmRjNzM2NDgwMmQwZDYyYTY1
OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHls
ZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYg
KGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4
IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQzN2ZhZmFjYzAxMjJj
ODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rlciog
dGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQo
KTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0
IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKaW5kZXggZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVj
Yy4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lk
IENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQog
ICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVk
KCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRG
b250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaAppbmRleCAwYjdlZDliZjFjNjA5OWY1NzVhYWIzMGU5NTM0MWYxNzZmODExODZk
Li4xNTRkYjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToK
ICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBD
YWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHZv
aWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50
c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAKaW5kZXggNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgwZWZjMDU3MGFkYzg5
ZS4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAg
aW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VE
YXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5h
bChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRl
cm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YS5tYWtl
Q29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKQEAgLTUy
Myw3ICs1MjMsNyBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0
ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZh
bHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU1NSw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0
YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVy
SW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggNWMzNmY5
MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNS4uZDUxM2UxNmNiYTVhOTcwN2MzM2Fm
Yzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxh
dGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2
ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAg
VXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdl
RGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBF
bmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
IG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2Vk
SW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50
ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25z
dCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRl
bnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAwOTFlOThm
OTkyNGJkMWMuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRh
LT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAv
LyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4g
V2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYg
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90
aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBk
YXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5s
b29wLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjliLi41N2ZkN2Fi
NWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5h
bDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91
bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC05Miw3ICs5
Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJm
bG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRp
bmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0
cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8
RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZGU3OGFj
YjIyMTBhMWZmNGVmYTk2YzA1Zjg0OTE5YjI2NWQwMWNhZC4uY2Y0ZjAyYzVkNzQzNGNiNjVjYjNk
MDMzOGFjN2ZhNzNhZjYxNjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAg
ICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291
cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwog
fQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggY2NlNTgwMWFl
YzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1Ny4uMjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYx
YTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVh
bCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNv
dXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHAKaW5kZXggZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZS4uYjBmNzZh
NTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBt
X2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBh
IG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50
IFVzZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdlYWEu
LmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBlZWRiNmIzN2U0MjIxYjhmOTgyNjk0
ZWIwOTZhMDI5ZmQxYjgxZTYxLi5iODdhM2RiMDZmMDExNDdmMTliOGY0MzI2OWZkNDcxZTg0ZTJl
ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApA
QCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAg
IHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYw
NzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMyYzdl
NjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggYWIx
NzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYS4uNTQyNjZkZDkwODE5YzM0ZTkx
NTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2FjaGVkVGV4dFRyYWNr
OjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpT
ZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBtX2RhdGEgPSBk
YXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPigpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERp
ZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNr
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9
CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRUZXh0VHJh
Y2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEz
MTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3ODMyMWVkYzdjYTg2OTcwY2Y0YWRk
YTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb1VwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGMx
NzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAuLmI5YTY1ODc1M2NlOWY3ZWMz
NjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgU3RyaW5n
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNv
ZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5jMDRk
ZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVj
b2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
LmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1
YTY1ZDViYjdhZjkwZWJkYTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzks
NyBAQCBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6
IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwog
ICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNv
dXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5k
ZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNTJmZmQ1MzdiZmQ2
MmZmNjdkZWNkNDY0YjY1ZmI2YzkwNTcwNjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQ
cmV2aWV3Q29udmVydGVyJiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQ
cm9jZXNzZWRSZXNwb25zZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9v
cmlnaW5hbERhdGEtPnJlc2V0KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8g
cmVzcG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
IGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNv
bnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5h
bERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQo
KS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVy
KCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5M
ZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVn
YWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6
Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxv
YWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmll
d1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkg
fQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3Vs
ZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5z
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMw
MWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNGJlYTRmMThlNGM3OWRlYjU3NDRm
MjgwZTlmOGY5YmMxODNjNmYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJl
dmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKIAogY29uc3QgU2hhcmVkQnVmZmVy
JiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLT5nZXQoKTsKIH0K
IAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQpAQCAtMjIyLDcg
KzIyMiw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0Nv
bnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3Rh
cnRDb252ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgp
ICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRp
ZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50
LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdl
dCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGll
bnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNm
OGNlMmIuLjA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRlYTlkMzQ5YWI3MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
Q2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEy
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmll
d0Vycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0
YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IDVlMjVhZTNlNDgxMTZhZjQ4NDM5YzNmZjIzOGVlYmQ0MDVl
NWFjOGYuLmJiZTM5MjNhMjA3YTBlOTM2MTE3MzA3NGY5NzYwN2ZhZDA1ODdkZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTkyLDcgKzE5Miw2IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNv
bnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVD
YXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAg
IGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewogICAgICAgICBt
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKQEAgLTIwMyw3ICsyMDIsNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwpAQCAtMjEzLDcgKzIxMSw2IEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAg
IEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7
CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA1OWYwY2EyYzQ2YzAzMjIwOGI2Nzg4MzFjMjQ2MWNm
MWNiMDJjMGRmLi5hY2M2YTkzZjA4NDQ1ODQ4NmZiYTBhNTYyNmZjZDVlMzM1YzUzZTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE4MSwxOSArMTgx
LDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBj
b25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50
OF90PiYmKTsKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKLSNlbmRpZgotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhcigpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CkBA
IC0yNDksNiArMjM2LDIwIEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9zaXplIHsgMCB9Owog
CiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7
CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOworCiAg
ICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5z
IHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCiAgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBj
b25zdDsKQEAgLTI3NSwxMSArMjc2LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgLy8gRW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1No
YXJlZEJ1ZmZlciBkaXJlY3RseS4KLSAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNs
YXNzLCBpdCB3aWxsIGFzc2VydC4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAg
ICB2b2lkIGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOwotCiAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNo
YXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKQEAgLTMwNiw2ICszMDIsNzEgQEAgcHJp
dmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIH07
CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2Ug
dG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFi
bGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZm
ZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZl
cik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtl
IGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91
bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1
ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZN
b3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1f
YnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
IHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQo
QXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAg
bV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKwor
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0K
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6
IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBu
dWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAgICAgICByZXNldCgpOworICAg
ICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBn
ZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNv
cHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgewor
ICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAg
ICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3RE
YXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAKaW5kZXggMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3Yi4uMmFkZGVl
N2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9t
Q2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRz
TWFwLmZpcnN0OwpAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAK
ICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAg
aWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAg
ICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9
IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJ
bml0RGF0YS0+ZGF0YSgpOwpAQCAtMjI2LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5
KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgp
OwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRz
OwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgog
ICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAg
ICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0
ZSgpOwpAQCAtMjUxLDggKzI1MSw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAKICAgICBv
YmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJp
bmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMt
PmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4g
a2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5n
dGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktl
eSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3
YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5
NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVk
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZv
aWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQg
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWlu
UHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBk
ZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4Li5iNmUyMzdiNWRmNWRkZjZh
NzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAog
V2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
QEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6Omxv
YWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0g
ICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAg
bV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFy
ZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0
IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggN2JiMjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMz
ZjM3YzQ1MWYzMmM1MC4uNjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICsz
OCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNy
eXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9h
ZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsK
IAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMg
Zm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlv
bl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5u
b3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXls
b2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5l
ZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAg
bV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0K
IAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAs
IG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpKQogICAgIHsKKyAg
ICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQg
PSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAg
ICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERh
dGEpCkBAIC03MiwxMCArNzUsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5
IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERh
dGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5
bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsK
ICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQo
KSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5
c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2Fk
Q29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtOTAsNyArOTMsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAog
Y2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCBlNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0Li5hNDJl
NWJjNGFjY2YzNzIyYTVhZjljOTA1NDYyZDA4ZWQ4ODQxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtl
cihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGlu
Zm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRy
IG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4
dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0g
bWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hl
YWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFy
a2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChi
dWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlKCktPm1ha2VD
b250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQy
M2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMyZDY1ZmU2M2VmMGIw
MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBt
X3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdE
YXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fb3Jp
Z2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92aWRlciB9
CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0NvbnZlcnRl
ckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVl
ZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2Jm
MmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2Nr
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
ZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAg
ICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlw
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5j
NzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAg
KzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0
IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBz
byBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBs
b2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxl
Z2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBA
QCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07
Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBl
bmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkK
IHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdU
Rk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2Uo
KTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNk
YWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAg
ICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVz
cG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAg
ICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVj
dCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRl
VG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0
ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Np
b25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRl
OjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0Rh
dGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3Bv
bnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7
IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVz
b3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVz
dFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0
aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1h
a2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3Qg
YWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0
aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29u
dGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29u
dGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0
YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7
CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAo
IXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rh
c2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIg
eyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1
dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0
byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAg
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+
c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUo
KSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0
aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChk
YXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7Cisg
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgog
ICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4
cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAg
ICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZm
ZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rh
c2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJi
MDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2Ny
aXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlw
dEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRv
U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVh
Y2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVh
Y2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0
cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7
CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJp
bmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpj
b250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9i
dWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+
c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAm
JiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdp
bigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0
QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZl
cikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8g
dXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwg
dXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29u
c3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5k
ZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdmOGM1
MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0
cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlw
dEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZm
ZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0K
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsg
fQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZm
ZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZp
bGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRh
aW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1f
YnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5k
ZXggYTRlMGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNy4uODVlNzYzODNkYWIz
NTNhNGZjNGIwOWQxMjc3MTg1YTAwZTllMjM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUsMTggKzc2LDIzIEBAIHZvaWQg
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9u
cyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAor
eworICAgIHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEt
PmlzTnVsbCgpOworfQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAg
aWYgKG1fZGF0YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAg
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAg
ICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0
YSkgewotICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNv
bnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBp
ZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1
b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSkKKyAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0xMjEsOSArMTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
ICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9k
YXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9k
YXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgw
YmRlZWJjNWM2ZTA0YTFlODYzYzcuLjFiM2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0
NWUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0Owog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9
Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBG
b250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9
OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2
YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1
ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAg
ICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAg
ICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIo
KnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCAr
MjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQog
CiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJv
Y2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQot
ICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVs
bHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgp
LT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9i
Ojpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZ
ZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkg
YmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4
LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJl
c3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25z
ZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAK
LSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAg
ICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJy
YXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZl
cnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERv
Y3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQog
CkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRl
ci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChk
YXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3
Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5
YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxl
LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBU
ZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNl
YXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERv
Y3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9u
c2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZh
YTM5YmRkMjAxYzMyZC4uNTRkYzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5MjkzMzEzOGZmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1Jl
cGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBt
X2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMo
Y29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JD
cmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0z
MDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3Jr
TG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1f
cGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAK
ICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAg
LTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYg
KG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAg
ICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlN
RVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJT
dHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3Ig
bXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBo
YW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCAr
ODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsK
KyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1p
dCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRl
IHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVk
IGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVm
ZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0g
ICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERh
dGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1
ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0
YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwg
LTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7
CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0
LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQo
IW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwog
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICpt
X2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVm
ZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAK
LSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5
U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVz
dCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVF
bnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODks
MTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkK
ICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXND
YWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAg
ICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNl
KSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1h
cHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2Uo
KSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNo
YXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJm
YmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0y
MjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7
IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERh
dGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0
MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdU
aW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVu
aXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRp
bmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4
MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5kNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNj
ZWMxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2
ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAg
aWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJl
YW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUg
PSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAg
ICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8
PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJv
ZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShh
dXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2Fj
aGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYm
IGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3Jp
Z2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUp
KTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdp
bmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwog
ICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRm
MGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCmluZGV4IGY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLjU4NTQ3
ZDg0ODgxZGM4MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNj
aGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwg
V2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVl
c3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBh
cmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtl
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9u
VHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92
ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIg
KzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7
CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0Rh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAg
ICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNw
b25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0
cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9y
ZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2Rk
MGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAK
ICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5n
Rm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1
NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5
MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6
UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4m
JiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQo
KSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJl
cXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VS
TFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5W
aWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFt
U3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAg
ICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
LT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00Mzcs
NyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBt
X21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAg
ICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6
d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFt
X3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0
dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUg
PT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFu
dWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJl
c3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3Ry
ZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxT
dHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2Vn
bWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZi
NzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkg
dGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25z
ZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVu
aXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7
CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNo
b3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYw
OTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
d2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBp
ZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VE
YXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3Bv
bnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAg
ICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAg
IHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4
IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpu
dWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZp
bmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAg
ICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0
IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgq
YnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlk
RmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUy
MDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVl
NzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwog
ICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJD
b3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6
Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VE
YXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAz
OWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJh
YzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsg
ZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQg
fQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVm
ZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAt
NjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9h
ZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdl
LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5n
ZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7
CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9i
dWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2Rh
ODcuLmFlMDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YkZyYW1lOwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2Zp
bGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZm
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42
ZGM0YTQ4NTJhMTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9h
ZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHQKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0
YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBC
U1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RH
IHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05B
TUUpKSkgewpAQCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEo
X0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAg
ICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBi
ZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8v
IG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NF
RURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0
YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6
ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4
dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIu
dGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGM3MGNjNmI3OGE4NjI3MTVkYzk4YzIzNWJkOGU2NjgyYWVmZjYwNWUuLjk0
ZjA2M2NjMDUyYTg4YzIxNjRlNDMyMWU2NThmNDM5Y2FjNzM0NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVm
ZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CmluZGV4IDFiNzM2M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZhNDU0YTY3NjcuLjIyMGEzODAw
NzgyMzFhNWRiNTM0ZTc0MzBkY2Q4ZTc3Y2QwZjA3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC00OSw3ICs0OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkpOwogICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CkBAIC03MiwyNCArNzIsMTYgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNU
X1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xl
YXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFi
dWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwot
ICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKLSAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBw
ZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRl
ci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRl
QXJyYXlCdWZmZXIpCkBAIC05NywxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwog
ICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAi
R29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJs
ZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVz
dERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEy
KSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCkt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25b
XSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENv
bmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEo
MCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3Ry
bGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMiwxMCArMTA0LDEwIEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVj
dG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdl
dCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0
MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3Np
dGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUy
LDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRp
cyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFs
aXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1
ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlk
aWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1
ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0
byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+
Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBB
U1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAg
Y2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICog
NSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNp
emUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7
CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9F
USgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsK
KyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxl
bmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50
YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAv
LyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWls
ZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEu
aXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBi
dWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05F
KGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1
ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhl
aXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3Ry
bGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQo
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE4MCwxOSAr
MjA4LDIxIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0
b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50
OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwot
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHMzKSk7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIu
dGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAg
ICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4
KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVm
Z2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVy
LT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdl
dFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAg
IGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVj
a0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMSw2ICsyMzEsNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIo
a2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWpr
bCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIu
ZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgp
LCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CiAgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdo
Mi5zaXplKCkpOwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5k
YXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwi
KTsKQEAgLTIwOSwxNiArMjQwLDE4IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21l
RGF0YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBt
YWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNv
bnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0g
ICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAg
YXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAg
ICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVy
MS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVY
UEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAn
YScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhf
dD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcg
fSB9KS5nZXQoKSk7CisKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
LCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAn
YycsICdkJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsK
ICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CkBAIC0yMjgsMTEgKzI2MSwxMyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4
MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1
aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7
CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsK
KyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAg
RVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNTMsMTYgKzI4
OCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0
KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxs
KCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0g
ICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXgg
ODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3
NTkzZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4
LDE3IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAq
PiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hh
ciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOwpAQCAtNjksMzIgKzcwLDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVO
U0RhdGFBcnJheSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRh
U2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAog
ICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQi
IGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3
b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRh
LCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0Rh
dGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21l
bnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkK
KyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBv
c2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1
ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxE
YXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWls
ZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0
YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpl
eHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBp
bmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBl
Y3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFz
dEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6
W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAg
ICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445851</attachid>
            <date>2021-12-03 07:28:01 -0800</date>
            <delta_ts>2021-12-03 17:01:08 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211204022757.patch</filename>
            <type>text/plain</type>
            <size>511518</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW01TRV0gRml4IGVyYXNlIHJhbmdlIHRvIHByZXZlbnQgYWNjaWRl
bnRhbCBkZWxldGlvbiBpbiBmaWxlcyB3aXRoIGNoYW5naW5nIGR1cmF0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1NmVhMWU0MGJiNGI3MTYzNTc1MTQ0NTllYmJmY2QwZGM0ODVmMjhlLi4wNDdlNDA3ZmQ2NGY1
NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAor
MjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVy
OjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6
YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpk
YXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNv
ZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAg
ICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BU
YXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3Rl
Ym9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
Y3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0Rl
bGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBEZXJpdmVkU291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4
MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1
bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
IChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1
YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1
NTAyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAy
MS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAg
IChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJB
cmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoK
KwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXSzJdIE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRl
eCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGEx
MzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewog
ICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5p
dGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6
OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41
OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9
IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jl
c3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVU
eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5k
ZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdl
MzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVU
eXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmls
IGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRp
b24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNn
SW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVz
OkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5
NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAg
ICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFT
aXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFk
NDI0Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90
IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNv
cmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVz
cG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0
YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hh
bmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25l
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVy
LT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEp
KTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNv
cmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
IHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRo
UmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRj
aFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7
CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVs
ZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7
CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkg
PSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVz
dC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICsz
NzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0Jv
ZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3Bv
bnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNd
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAg
LTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBS
ZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAg
ICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAg
ICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNj
YmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhj
ZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwg
UmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4m
Jik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNi
ZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJl
c3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkp
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAg
IH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91
c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhi
YThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJl
Njg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5
YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFs
dWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChh
dXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFl
YzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0
Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0
byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5k
YXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlh
S2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsx
MDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJz
dC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5m
aXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAg
IHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29u
ZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5k
ZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4
MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNo
YXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIu
Y29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywg
bG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVm
UHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAo
aXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3Jt
RGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0
YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFr
ZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkg
ewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYg
KGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBh
cmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwog
CiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAg
IGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5i
YXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNi
NzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5
M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlB
c0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsK
IAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEg
PSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlk
OGI3OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAo
bV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsy
NjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAg
ICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1U
b1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEo
V1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBA
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVm
ZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1f
YnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewot
ICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVy
KCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1
ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0
YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURh
dGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBl
KTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4
ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIg
PSBtX2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3Qg
RXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODli
NzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApA
QCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFt
X2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5
QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsK
ICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZl
cnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4g
bV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0
MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBi
b2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0s
Ci0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0
aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQz
YzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2
YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0o
KSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VE
YXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hh
cmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owog
ICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVz
cG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcw
YWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFi
OTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGln
aGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7
CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlh
NjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZl
MjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYs
OCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUw
NDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwog
ICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1
ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFh
MWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwg
U3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5j
b2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAg
fQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXko
ZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25z
dCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3
MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFh
Y2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0
aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3
ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGlu
IGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRl
IGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5
KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExP
RyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlu
ZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkp
OwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2
NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmpl
Y3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBA
IC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0
ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBV
TlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUg
cmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9u
bHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0
b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFu
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXku
aXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
ICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkp
CiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Il9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAg
ICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBp
bmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2Uu
bG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8g
SURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAg
ICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAg
aWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0
ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRz
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAg
ICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
Y3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywg
KmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJp
bmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZm
YjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYx
ZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlU
b1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0
YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRh
KCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXgg
M2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5
NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2Fn
ZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBk
YXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwg
WyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdE
YXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4
OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxl
dGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVl
KCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBA
QCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRG
YWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3Jr
TG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9k
YXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2
MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVS
TCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAg
IFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRh
Q29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4x
MzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBt
b2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3
YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBA
QCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3Jt
RGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3Jl
YXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwog
ICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNm
YmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4
ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVy
ICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAg
ICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAg
ICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAg
ICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5n
KSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRv
U3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250
aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOwor
ICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1
ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRh
YmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJh
ZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQg
Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAg
ICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVu
dD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAg
IGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dl
bmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwg
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
fSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGlu
ZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
bV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0
ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5n
KCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPiht
X2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgy
ZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4
NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3Mg
Q1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3
ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBT
VkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0
aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVt
b3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywg
YSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNi
NzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3
MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNo
aXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29t
bWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3Rl
cDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBj
bGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYs
NyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5n
U3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2
b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25S
YW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxl
Y3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2Vi
QXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5n
IHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
ICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
Rm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAy
ODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5
YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5k
MGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFG
b3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykK
K3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNo
aXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRp
dG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkp
OworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0
cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUx
MWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2Vl
NDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRl
cjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmws
IEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJj
ZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlw
ZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4
dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIz
MDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJM
KERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1l
IHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVU
eXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFw
cGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsK
ICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgp
KSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEz
Y2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBj
NjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
IHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7
Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50
OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJj
ZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVu
ZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICgh
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVU
eXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBA
IC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNo
b3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBy
ZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZl
JiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpA
QCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hp
dmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8g
c3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5h
dGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBj
YW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5k
QWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRp
bmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2
MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSAr
MTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2Vy
dGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZl
LT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQo
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8g
dGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0
aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBv
bmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3Vw
cG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4
YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkg
QEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5l
KGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9j
ZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwg
cmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRp
bmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykK
IHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBA
QCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5z
dGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3
ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRl
IERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5l
dmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2
ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7
IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAg
LCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewog
fQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNp
emUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2
ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpl
dmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9k
YXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIp
Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBt
X2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBk
YXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4
ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9u
c2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsg
fQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
QnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4g
aGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7
CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVu
c2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hl
ZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0
MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYy
NzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIg
QEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAg
ICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29k
ZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdO
YW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVk
ID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2
NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3
ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
ZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
YXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUz
YjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUw
YTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291
cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2Ex
YTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAg
IFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFBy
ZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5y
ZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxv
YWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5
MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6
Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNo
aXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYg
bWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRB
cmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIu
c2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJh
bWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRh
KCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2Vk
QXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNl
RGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFy
c2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFt
ZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNp
emUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpz
dGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0
ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFt
ZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8
QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0
cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xp
ZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYz
ZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1p
bmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0
cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzA4Nzg1YWY4
ZmM5MjRlMzUzZmZkNDgzZGY3Yjk1ZGEyNDQzYWU4NC4uOWU5ZjI5NDY3MmYzZDYyMjUwM2IxZTU1
YjE3OTZmMGNhMWVjZmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJl
ZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRh
dGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
NTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3
NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
IH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
bV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGlj
eTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9s
aWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMx
NDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdS
ZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5l
d1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsK
ICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJj
ZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAg
IChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNl
TG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1
MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3Mg
Q2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNl
OwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBA
IC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xh
c3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZl
cnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9
IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50
KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBz
dGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEw
ZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNl
TG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAg
OiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGlu
ZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpB
bGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAg
ICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJl
c2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApA
QCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQ
b2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNl
dCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRh
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURh
dGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNl
RGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3Vy
Y2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMg
UmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURh
dGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3Jl
IHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdl
ZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJl
ZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5
NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYx
MDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVk
QnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQo
KSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9k
YXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2Rh
dGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJs
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4
NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1
YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFt
YW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sg
b2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJz
ZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
QXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBz
dGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4
ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMy
NjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBA
IFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBh
dGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRp
YyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJj
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBD
bGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgot
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsK
KyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVz
b3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7
CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3Vs
ZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAg
LTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJl
ZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBh
IGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxl
bnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0
aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRo
ZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4
OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJh
Y2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0g
cmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9h
Ymx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIg
d2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcz
NmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1
NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDgg
KzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291
cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXli
ZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9p
ZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVk
MGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3Bv
bnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlw
ZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0
MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRp
b25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIw
YmQzMGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVu
c2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/
LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgp
LmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFT
dGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5n
ZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1h
bmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAg
ICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkg
d3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNl
IHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91
bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7
CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAg
ICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAg
ICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJs
b2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+
Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRl
eCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2Rm
OGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVt
cHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBh
dXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVS
TCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBm
b3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZE
YXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVBy
b3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwog
ICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAg
ICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+
KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVm
IE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAg
ICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFy
eSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291
cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8g
bWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
QEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnks
IGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0
byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAg
ICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1
YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFk
ZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVz
cG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNw
b25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4K
ICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
RnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAg
ICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBk
b2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5v
dGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMg
b3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwi
bm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIg
aGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uMjg5YzM4NGJjYmU2
MGIxMzBhOTkxM2JmMTI5MTg4N2QwNDNjYmMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDgg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
KiBwYWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFz
IGFzY2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBB
U0NJSSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOwor
ICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAi
LCBjb250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJs
LnN0cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lp
U3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEu
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0
cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEg
PSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVz
b3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2Rpbmcs
IHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90
ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERh
dGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAg
ICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cg
YXMgaXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JM
RnMuCkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6
OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0
aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAg
bWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAg
ICAgICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAo
aW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2Np
aVN0cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0g
ICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1s
RGF0YS5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFl
NGNiMmQwYmRiODAxNWUuLjQwMjViOTgwZTVlZTY4MmRiMDc2MmFmYTg2ZWNhOWQ5MmZlODU4ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewog
ICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJv
dW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29s
IGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wg
ZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5
IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7
CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVS
ZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0
Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIp
IHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
d2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNw
ZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0g
ICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGlu
ZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAg
ICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVt
IGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNv
ZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250
ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgi
XHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5
MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBp
ZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0
IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAg
ICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91
c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAg
ICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUs
IHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9u
cyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
MjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2Vu
ZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2
ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4
MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwxNiBA
QCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5n
KGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZm
YjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZm
MzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVs
bHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJj
ZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0
OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAg
IHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVj
b2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBi
aXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRD
U1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNo
ZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0g
ICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0
aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBl
bmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5
KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xl
YXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRp
YXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdl
MzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5
ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY5YWQ3NzEz
YzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lkIENhY2hlZEZv
bnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICBz
dGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsK
IH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
bV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmco
ZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBT
dHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wg
Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9j
Y3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGlu
ZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVz
IH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDog
bnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90
aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9u
dENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9h
ZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4
IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjE1NGRiOGNiYWJmM2Q1
YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5l
ZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3Jt
RGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9v
bCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAg
IFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03NCw3ICs3NCw3
IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0
YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJk
YTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4
LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBt
X3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0
YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIz
LDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRh
dGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2
YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bv
c3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2Uo
KSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0o
TUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYo
ZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRv
UERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxz
ZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYg
dGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYu
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAgRW5jb2RlZERh
dGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hl
ZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRh
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2
MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLmQ1MTNlMTZjYmE1YTk3MDdjMzNh
ZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRp
dmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAg
IFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFn
ZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZO
ZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0
YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQg
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRl
OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNv
bnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRC
dWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYu
Ljg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNTYsNyAr
NTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNv
dXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5nZXRTb21l
RGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFu
eSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2
ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNy
ZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAg
d2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3Jl
bWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25v
dXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNw
aW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9s
aWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5n
UG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9k
YXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGll
bnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERh
dGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
bV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4
NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2
ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0g
ICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0
YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRp
cmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hM
b2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIw
OTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmNmNGYwMmM1ZDc0MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2
MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3Rp
ZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICsz
NDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MTMsNyArOTEzLDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVu
Y29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikK
IHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI3LDggKzkyNyw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXIm
IG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIp
OworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRC
dWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMy
NzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6
U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNl
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1No
YXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8s
IHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJl
cGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYK
IAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRS
ZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFz
aENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBi
eSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RE
ZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNo
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uYjBmNzZh
NTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIg
QEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1l
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRl
IGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJl
bnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1l
bnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdlYWEuLmIw
MTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1
NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBj
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAK
QEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0
YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlwdERpc2Fs
bG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAg
ICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAg
ICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAgfQogCkBA
IC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdG
b250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1Rv
T1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVy
dGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1
ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJh
Zjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMz
ODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApA
QCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRp
YWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAg
ICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250
RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBT
ZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2
NS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBA
QCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3Njcmlw
dEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRT
Y3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYwNzdlZWVi
NWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMyYzdlNjM0MzIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAz
MTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uNTQyNjZkZDkwODE5YzM0ZTkxNTA4NDM0
ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNh
Y2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Np
b25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7
CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNv
dXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAg
ICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0K
IAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1Vw
ZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi5mNDYz
MTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQg
ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQz
NDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApA
QCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZv
aWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAg
ICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNv
ZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
ICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdm
NjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1
NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0
cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1MmNmZWJkNzYx
ZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQx
NTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVkZWYgY29uc3Qg
c3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVy
RnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CisgICAgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVk
QnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAK
IHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQ
QUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2b2lkIHJlc291
cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlc291cmNlQmVj
YW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VS
ZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1MWU4
YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBt
YXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBhIHJlc291cmNl
IHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3QuCiBzdGF0aWMg
Y29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJG
cm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3Bv
bnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRy
eUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0YSA9IF9DRkNh
Y2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2lu
Z1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCkBA
IC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBfQ0ZDYWNoZWRV
UkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNl
LCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNr
Q2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxl
QmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBh
dXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVl
c3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJlc291cmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRl
eCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJi
N2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNs
YXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVm
PExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9h
ZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThi
MjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41MmZmZDUzN2JmZDYyZmY2N2Rl
Y2Q0NjRiNjVmYjZjOTA1NzA2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFs
RGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0
UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25z
ZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAg
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVy
dGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVy
dGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVy
ID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5w
dHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgp
KTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRl
ZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVBy
ZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2
aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUo
cmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBt
X2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkp
IH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAg
LCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9
CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRl
UG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERl
Y2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFh
NjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBj
bGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlk
YXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggZjM3ZDA1OWIwZWI1MjZjNTQ5YzBkN2RlYjRlYTVhMDg4MGZmMGQ4Yy4uNmQ1MWM1
ZTUxNmEzZGJmYmI3NDc2ZWQ5NGIwNDFlNmU1NmY3M2MwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xOTUyLDcgKzE5NTIsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkg
Y29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9h
ZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2
ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAg
Ly8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0
aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEu
LmQ3NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQyY2RlODA0ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2Vy
aWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5n
Tm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVk
TUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0
LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFu
ZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAg
ICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFn
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVT
aGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhl
ciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQg
b25lLgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRl
bnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkp
OwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAg
IH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRv
UmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2Vz
LmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRj
MmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0
cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4
cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNl
ZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJh
d0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBm
aWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9
OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFk
N2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5T
aGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUp
CiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAg
YXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1
ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5h
bWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihh
cnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9z
aGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29G
YXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGlu
dD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxv
YWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpl
eGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tl
eWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3
Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURv
dWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVu
Y29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0g
MDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0
IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmlu
ZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBj
ZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpA
QCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VC
Q09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRP
cmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3Jt
YXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUlu
U3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3Rv
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFn
ZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5n
IGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3Rl
Ym9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJ
TikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNl
TUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2Vz
dGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBl
KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlw
ZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNv
bnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNm
ODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRi
ZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRy
eT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAg
IGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9u
ID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3Jp
Z2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBl
bmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1
ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBk
ZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21Q
ZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQw
OTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4Nzdj
OGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBz
ZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBm
cm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmVi
MmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1
c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5k
aWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlv
bkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhm
YjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2
YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQg
KzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNv
bnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAg
ICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdG
b3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdh
MmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2Fi
OGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJv
YXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVj
dGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwog
c3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0
IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0
Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5j
bHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBy
ZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5
MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigp
IGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Rh
dGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVy
biAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBk
YXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBj
bGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBp
ZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3
RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURh
dGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3Mjky
Mjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgyYjk3M2U2M2Yz
OTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5p
c2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmll
d0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7
CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5n
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
LmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2
OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJv
bWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0
aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxE
YXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTVi
OWFmZDM5MDAzNTM1Mzg1ZC4uYmJlMzkyM2EyMDdhMGU5MzYxMTczMDc0Zjk3NjA3ZmFkMDU4N2Rm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyAr
NTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVE
YXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5z
aXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBw
ZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsK
QEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6
ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1h
cHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAg
ICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAg
ICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNj
ZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRo
KTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
U2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21l
bnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpA
QCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50
c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBj
b21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21l
bnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFr
ZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6
IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3Nl
cnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFm
dGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMg
c2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0g
dHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICBy
ZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0
YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZl
cio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5z
aXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0
YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21l
bnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUo
KSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0
IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVu
dHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09u
ZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0
dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgxLDYgKzE1Niwy
MSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJu
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6
OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJl
ZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3Vz
OworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBA
IC0yMDIsMTAgKzE5Miw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50
cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBt
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAg
IH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMjMgKzIwMiwy
NiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxl
bmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVu
Z3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRh
dGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0
YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7Cisg
ICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBA
IC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHko
KSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVu
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVu
dC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5k
KHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwog
ICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJv
dmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
cHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25z
dAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0Miw3IEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdt
ZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0g
ZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0g
MTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zNzIsNyArMzU4LDU3IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNC
dWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOwor
ICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91
c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFw
cGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0g
TWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwor
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdT
dWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBd
LnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50Ojpk
YXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAg
ICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDcgKzQyNyw3IEBAIGNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6
OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFT
ZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFi
bGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0MzgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUo
KSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9
PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3Qg
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFr
ZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6
ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBAIHNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVu
dCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQp
CiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlv
bldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYgKzUzNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0
YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hh
ciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNl
Z21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwg
ZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6
ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgp
IHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRm
OEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRl
IGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29u
c3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzUsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZl
ci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZm
ZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4
MzkzNjhhZC4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2MjZmY2Q1ZTMzNWM1M2UzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02MiwxNDYgKzYyLDEz
MyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxk
IGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVj
dHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0
YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAgIGVudW0gY2xhc3Mg
TWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBk
YXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNB
cnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5k
aWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkg
Y29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwot
ICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIp
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVm
UHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNh
dXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQg
aWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNp
bmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNh
bGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9u
IGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0
IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlz
IHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBj
b3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlC
dWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZl
ci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7
Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
eyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFy
KCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhf
dCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAot
ICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUg
YmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRv
IG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4K
LSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRh
U2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgp
IGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAg
IGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAg
ICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNF
KEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdC
eXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlm
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNv
bnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6
ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAgZXhwbGljaXQgRGF0
YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVu
dChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAg
ICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVT
RShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2lt
bXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZP
VU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZv
ciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KK307
CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9
CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3Ip
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9
CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4s
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJy
YXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikK
LSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0g
ICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlp
bmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNo
YXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERh
dGEoKTsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgLy8gQ3JlYXRlcyBh
biBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8g
dGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVy
cyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
c2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAg
IHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFj
a3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQK
IAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJl
Z2luUG9zaXRpb247CkBAIC0yMTAsNTUgKzE5NywxNzYgQEAgcHVibGljOgogICAgIHVzaW5nIERh
dGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAg
IERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBo
YXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPbmVTZWdt
ZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlz
IHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVE
YXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hl
eFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNv
bnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwg
c2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91
cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wg
bV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyNl
bmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXIoKTsKIAogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZl
Y3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsK
IAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAg
IG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgog
fTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQg
YWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQg
cmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBT
aGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsK
KyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAg
ICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0g
Y2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1h
cHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0
OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAg
V0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
K307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7Cisg
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVu
Y2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11
dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCBi
dWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1
ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0
YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBz
aG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYg
KGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChX
VEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6
IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBl
bmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAg
ICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0K
KworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7
IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHko
KSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIg
PSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAgICAgICByZXNldCgpOwor
ICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAg
eworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkK
KyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJh
Y3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjgsMjEgKzM3NiwyMSBAQCBp
bmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0g
c3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+
JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBu
ZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBT
aGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFy
KiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAj
aWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVu
dDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qg
c2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29u
c3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3
MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwog
ICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5z
QXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8u
Z2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3Jr
LmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0
d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3
b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3Jj
Lmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2Qz
N2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApA
QCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAg
IG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEg
PSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBt
X3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwg
MCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2
ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZv
aWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5k
ZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYTEyYTc0MWE1NzAy
NTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxsb3dz
IGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rp
b24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lm
ICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
ID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8
Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKQEAg
LTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6
ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThm
YWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2Jl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlw
ZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZC
dWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9Q
TkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcElt
YWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVw
cmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1d
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlmCiAKQEAg
LTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRo
U2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2so
Y29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1
MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3NWE1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1
LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRl
cmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJ
bnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdl
YkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJD
b3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9u
OwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVh
bGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRh
dGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIp
c2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBz
aXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBAQCB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRh
dGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEo
KSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
TlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkp
OwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgp
IGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlm
ICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09
IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0
ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNvdXJjZURh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0YWluUHRyPE5TQXJyYXk+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwogfQogCi1SZXRh
aW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBj
b25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10g
aW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0
Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSBy
b290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAK
ICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAo
IXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4Yzky
MTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0
ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsx
MzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlk
c0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5
KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGluaXRE
YXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VD
b250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgp
OwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNp
Z25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMTk2LDcgKzE5
Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJ
ZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsK
ICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpAQCAtMjA0LDkgKzIw
NSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERh
dGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5k
ZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgp
OwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9
IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3Jl
YXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5
SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICAv
LyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgaWYgKGlu
aXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVy
biBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0y
NDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBmb3Jt
YXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKICAg
ICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2Yg
dGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNl
IGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmlu
ZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUo
KSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5n
KGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAK
ICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAg
IENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBr
ZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICBy
ZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0
YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlD
bGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5k
ZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMy
Y2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSAr
MTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNv
ZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVu
Y29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZm
ZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9l
bmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0
ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAw
OThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNw
cApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgp
CiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBn
X2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVy
KTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5k
KCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFu
dF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0
X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRl
c19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0
X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRl
c19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4
IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNl
YWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2
b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4
OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgs
MTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRl
cykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAot
R1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQ
dHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAog
ewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5
dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkg
ewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAg
ICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19j
YXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25z
dF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2
MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9u
dDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9y
aWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBv
cmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRl
bnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250
OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBv
cmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGlj
SXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250PiBG
b250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEp
CiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVk
Rm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBw
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4
MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAw
ZjVlMzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2li
aWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNr
OjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpu
dWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJz
dGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxp
dHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpO
bywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxs
b3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51
bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9h
dCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9u
dENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0Yjll
ZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYg
QEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNz
IGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNo
b3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRm
b3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBv
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0
aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAg
ICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3Ry
aW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9u
dE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1
YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1v
ZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2Rl
bChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAK
LU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVS
TCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
U3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAg
ICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1
cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEz
Mzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAw
MTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
b2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBT
dHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRl
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0
cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5
cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewog
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6
ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwg
bV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBS
ZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVy
bCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBX
VEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92
ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIw
NDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlk
NmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUlu
dDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQz
Ml90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5z
aXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVl
KQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAg
ICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyAr
NzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3Rvciwg
dWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0g
MHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsx
MjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09G
RlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNm
bnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3
ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVj
dG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRT
aXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
IAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09G
RlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsK
ICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4
Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJl
N2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29s
IGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxp
ZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYg
Y29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5k
IHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1Nm
bnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252
ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhf
dD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0
aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZv
bnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVy
IHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwg
YmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjEx
MmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0
OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8v
IEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBd
IH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVl
OjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEz
NDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJz
ZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVy
bmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBA
IC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0
cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFs
aXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxp
emF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
Ojpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lm
IEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0
RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRv
IHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0
RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUo
KSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRh
dGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRp
b25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlm
CkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0
byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAo
YXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0p
OwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vz
c2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vz
c2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdl
RGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0s
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47
CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAg
ICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHBy
b2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFz
cygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0
YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBb
cmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJl
c3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5U
SUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAg
W21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50
S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRL
ZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6Omdl
dEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9w
cm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZD
b250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcg
KzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNE
YXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNs
YXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElk
ZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQ
bGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAg
ICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRl
bnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdl
VVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAog
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRp
ZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAog
ICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5
SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVu
dEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNv
bnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVz
dCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIu
Z2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpu
aWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
ewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERh
dGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUz
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFw
cElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2Vy
dmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+
Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6
T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEu
Zmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwot
ICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0
U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJp
bmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBw
YXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmpl
Y3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVu
dFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBr
ZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1
dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAg
ICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlS
ZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNv
bnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJ
RCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVz
dERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURf
UEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0g
V1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50
S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0
YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUo
KSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5m
aXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRl
bnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlS
ZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNv
bnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVz
dERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWlu
UHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1
NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIElt
YWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNo
YXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRo
aXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25T
ZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0
YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5P
XTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9h
ZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVf
UFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25v
dXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBl
Y3RlZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIg
dXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNl
aXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYg
KGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZi
OTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIx
Myw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50
JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
LCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQu
dGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBm
bGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFw
cGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJT
dHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3
YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5
NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVk
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZv
aWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQg
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWlu
UHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBh
MjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5iNmUyMzdiNWRmNWRkZjZh
NzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAog
V2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
QEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6Omxv
YWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0yMjgsNyArMjI1LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0y
MzgsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJl
c3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29k
ZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291
cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAg
ICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4OCw3ICszODUsNyBAQCB2
b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9h
ZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0YVJl
cXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0YVJlcXVlc3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2VlODI5MWI5MDVl
OWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2MTMxN2MwZDExNmZlNmEzZjA0YWY5
ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsNiArMzEsNyBAQCB0
eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNv
bnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwpA
QCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250X2ZhY2VfdD4g
bV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2Rh
OWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1Yzk5YTdmNjhiNTQ4OWM4NThhM2U2
ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGll
cyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9z
aXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
PihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwog
ICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1
Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAg
IHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVh
dGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0g
YWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBp
ZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5
cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVy
Q0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2Vj
cmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgog
ICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lk
ZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAg
ICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3Vy
Y2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25h
dGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCku
Z2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVBy
b3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1
dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91
c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24g
Y2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJl
ZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBi
eXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAg
Ly8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNr
LgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0g
eyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJl
bGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAm
cHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91
c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0lt
YWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVBy
b3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUuLmZmNzdiNTNl
OWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0z
MTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEo
Ym9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0g
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgp
KSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFkb3B0Q0YoQ0dQ
REZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBs
YXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0
MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9v
bCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhlci5t
X2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0YTQ5ZjExZTRjOGZk
NmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1YmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24sIHZvaWQqLCBz
aXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBhdXRvKiBidWZmZXIg
PSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAgICAgICAgYnVmZmVy
LT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYyNTdhYWM5YS4uY2M1
OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9G
b250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBAQCBSZXRhaW5Q
dHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0eUNoZWNrKCkg
Y29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQoKSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBp
ZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29weVRhYmxlKGN0
Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAgIHJldHVybiBw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1YTU2YTI3OGMz
MGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4NWEzNDM4NjE5ZGIwZGYyMzMwMWE3
MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBl
TGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBz
dGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6
ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5
MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAg
Ym9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAg
ICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVf
cm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVk
Rm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tl
ci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogICAgIGlm
IChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0
NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRmZjhkNWMzYjRhZDc2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIsOSBAQCBWZWN0
b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogICAgIHJl
dHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IEdzdE1hcHBl
ZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQogewotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVn
aW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRl
eCBiYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYxYjFjYjg3MWJlLi5kMDE0Y2M2YTVkYzdi
MTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBA
IC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxp
bmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBn
dWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFw
RWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZm
ZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRl
eCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li4yOWIzYTUwMWQ4ZTlh
OTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0
CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1
ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBjb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAgICAgIG1f
aW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNyZWF0
ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4oKTsKICAg
ICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDc5Nzk0ODBmOTFjNTk3YWE5ZjkwMDk3YzE4ODMy
YzZhMTVjMzJjZTguLmIzMjRjZjExNDY0N2IzMzc1ZTZhNDViZmFiMTAzZTBhMjkwZmI4ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0z
NjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9E
RUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBv
ZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEo
KSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NU
X01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihp
bml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsK
KyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSks
IGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVy
LT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVy
VHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmlu
ZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmNhYTUwZWQ1YzNj
Mzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsKICAgICBib29sIGlz
UGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBzc2g7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBzdGF0aWMgdm9p
ZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiBl
bGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50ZXIgdXNlckRh
dGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBUZXh0
KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3NpemUgdGV4dExlbmd0
aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0ZXh0TGVuZ3Ro
KTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICB1c2VyRGF0YS0+
cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAg
IHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIHZvaWQgbWFya3Vw
RXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMg
R01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVu
ZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9Owog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXls
b2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICgh
cGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVm
NDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uNjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFi
NTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0
X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQot
ICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0
RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVt
IGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShj
b25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRp
YV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJS
T1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0
YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2Fk
ID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVy
KCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5
c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUo
cGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VD
b250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5
bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBw
ZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUsMTAgQEAgcHVibGljOgogICAg
ICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAg
ICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQt
PmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgq
aW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0K
ICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsg
fQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYs
MTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFz
cyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApp
bmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0
YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0
dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmll
bnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUo
KSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsK
ICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0
YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5
YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEz
MmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9
OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZh
ZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2Jj
ZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVh
dGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9j
dW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgp
IGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJl
bnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1
YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAz
NmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5U
eXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBp
dGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGlu
dDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5
cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQp
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291
bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhD
b3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZz
ZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25z
dCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0
ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkK
QEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1h
dGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0
QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3Rv
cjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBP
cGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlh
bnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRS
ZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVW
YXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlw
aD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJp
YW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJp
YW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhD
b25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRo
R2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBn
ZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5
cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lk
IGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBW
ZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7
CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9m
ZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAg
c3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEds
eXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3Vu
dCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZl
cnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBH
bHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENv
bnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSAr
IHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3
ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFy
aWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMq
IG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29u
c3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBA
IC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZh
cmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhW
YXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09m
ZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAy
OTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRi
MzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00
MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYg
RU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVm
ZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAj
ZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2Vl
NTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBH
bHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwg
Y2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCko
Y2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gx
KSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJs
ZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAx
KQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291
bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29s
IGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0
aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChw
b3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05
MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIu
c2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQog
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsK
ICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9z
aXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAg
LTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0K
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
aW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1
Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVf
TUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6
Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3Zl
cmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBH
bHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsg
Ly8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAz
MjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0
YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgp
CiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3
cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9y
PHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRh
U2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2
Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0
YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhl
IGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVt
b3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRh
LCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgK
aW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2
MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdF
bmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFBy
ZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAg
LTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZl
cjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jv
b2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJi
Li43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0
aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0
Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25z
dCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFn
ZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3Qg
U2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAt
MTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQx
NiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0
aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1
YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBo
LCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRT
dWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVC
YXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAo
dWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVu
ZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3Ry
dWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29r
dXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAg
IGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhh
c2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29r
dXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29r
dXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRl
eFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZl
YXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGlu
ZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlw
ZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlm
IChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0p
KQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZl
YXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAg
ICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ld
LmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAg
IE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRh
YmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3Qq
IGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBG
ZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0
dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0y
NzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAg
T3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07
CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdT
eXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBA
IHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNl
dCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFi
bGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywg
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2Ny
aXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNv
bnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQo
YnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3Jp
cHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlw
dFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBj
b25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAg
ICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNl
dDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBT
Y3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZz
ZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4o
YnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29r
dXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0
ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29u
c3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwg
c2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3Qo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAg
ICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVm
ZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZh
dWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMg
PSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICsz
NDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNj
cmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5U
eXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVm
YXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVz
ID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRh
YmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAg
Ym9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0
aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6
OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRh
YmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ugewog
CiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlw
ZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhl
YSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7
CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcg
QEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6Omxv
YWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAv
LyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQg
c3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsK
ICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRl
VGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZv
aWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdT
VUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBP
cGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAg
IGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygm
bV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44
YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVV
bmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9u
dE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChi
dWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5
MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYz
YjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIg
KzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3Jl
YXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJl
c291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5n
czsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsK
QEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9u
RGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmlu
ZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRk
N2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5p
cXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnRO
YW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVm
ZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMx
YTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThh
OTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4u
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0Vx
dWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3Vz
ZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUo
dGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQy
MmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFl
N2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwg
ZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9i
amVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywg
dGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdE
SV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAg
RFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0
YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXpl
KTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAy
ODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEy
MjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
ZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlv
bkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJl
cGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFy
dFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAg
U2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21E
YXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFt
X2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRh
ID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wg
bV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Y3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21E
YXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
LmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNh
NTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29kZWRE
YXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJl
J3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2Vn
bWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRh
KCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVu
dC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWRE
YXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZy
b21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2Vp
dmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4
ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmE0MmU1YmM0YWNjZjM3MjJhNWFmOWM5MDU0NjJk
MDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDkg
KzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBt
YXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1
Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQ
cm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVy
OwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9s
aXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUND
TWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEz
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29t
cHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAg
ICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJT
aXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAg
IGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5k
YXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZm
ZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXIudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lk
IEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQ
cm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNv
ZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNi
Li5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAg
ICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZv
aWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5k
aWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRh
ZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxT
dHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpk
YXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNs
aWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRl
bnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNs
aWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVu
dC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEg
PSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5
LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAog
ICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAg
aWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0
cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAg
aWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0
cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpu
dWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJl
c2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRD
dXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5j
b250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVi
b2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkp
OwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEg
PSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09
IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAg
IGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0g
cGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJl
ZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9t
TUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBp
bWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsK
ICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVk
TmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRp
ZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRB
CiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgp
KTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRh
KS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAg
ICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAg
ICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0
ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0
UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJ
bmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0
YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJl
ZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAg
ICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0
ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAg
ICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUg
bG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAg
ICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5l
ZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3
Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAg
fQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZh
bHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXIt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FU
eXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpA
QCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJp
bmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2Vy
KWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJ
dGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtw
YXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0K
IAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBhNTVkMjNl
OTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZlNjNlZjBiMDI2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0
ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
cmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAgIDogbV9w
cmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9wcmV2aWV3RGF0
YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX29yaWdp
bmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQog
ICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFi
NjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFj
YzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9y
JiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3Rl
Ym9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFz
dGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVk
RmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVy
bC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdy
YXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5n
IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAg
LTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0
eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAg
ICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2Fj
eVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAg
ICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAg
IHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZi
OTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5
YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6
d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0
cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNs
aWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERh
dGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgp
XTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVu
dERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07
CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3Vz
dG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJl
YWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07
CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2Qy
NDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5
ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0
eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6
cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdl
dCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMo
W2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVy
T2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBp
ZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5
cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRv
IGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRh
dGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAg
aWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5
cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBs
YXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAg
ICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsK
QEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxk
V3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlm
IChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJv
YXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBA
IGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBl
KHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRl
RGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3Jp
dGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlw
ZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2Fm
ZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9y
bVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAg
ICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICgh
aXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBp
ZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0
byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVt
PiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5j
cmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1E
YXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAg
ICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAy
MTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAz
NTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2Rh
dGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVy
OwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1
M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0x
MzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAg
IC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBk
YXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0
aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0
ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVy
KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUz
NSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0
YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFM
b2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRh
LT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0K
IAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VE
YXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0
YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRh
LnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBhMzdh
MGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3Mzk4OTA5
Y2M4YmVhNGQwYTNiOTU3OWE3ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6
Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigp
IGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAg
ICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRh
dGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4
IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0
NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIy
OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+
JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJl
YW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5k
ZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5
NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2
ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUy
YzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Ry
dWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2Up
CisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJj
ZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNl
R2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5k
ZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBO
b3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0
aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXpl
ZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0g
Y2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5v
IH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYs
MjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYg
ZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0g
ZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAg
ICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRo
IGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFu
Z2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29t
cGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJv
bSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgp
OwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFz
a0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJl
dGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwg
Z2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9U
YXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0Rh
dGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9
XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBz
dGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVS
ZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBh
dXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0g
dGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVl
KSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAg
ICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRl
SW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXgg
PiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxs
eUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Olll
cykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBk
YXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0
ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExl
bmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEg
PSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVk
UmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQw
MTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3
YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTks
NyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2Vs
Zi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsg
c2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRh
dGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50
T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9u
RGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRl
PilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpk
aWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3
NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0
OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0
LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAg
ICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRo
aW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkK
ICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdl
IGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8g
UHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBt
X2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVs
dGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkp
OwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0
LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAg
ICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNo
KSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90
IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxN
YXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRp
cGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0
Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlh
bE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRj
aCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBU
aGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIp
LCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBi
b3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRp
cGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3Vu
ZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsg
bV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRh
cnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0
ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3du
bG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAg
ICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRG
aWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0Ojpj
bG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApp
bmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVl
OTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRC
dQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUs
IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2Vp
dmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5k
aWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVm
ZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1
NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRl
YjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1l
bW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAo
ZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2Nr
KG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVk
CiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBE
V09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwot
ICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVk
ID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwg
JndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVt
cFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBD
bG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2Vl
ZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3
YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3Bw
CkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
IHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNU
b1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3Ig
PSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAg
ICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVm
ZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09
IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRM
YXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigp
KTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
aW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1
YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAg
YXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBT
dHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAg
VmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVz
cG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRh
aW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2Nr
Q0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2Vy
dGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcg
Y2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5z
aXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRl
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAg
Y2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2
YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9y
PFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9u
c2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3Rv
ciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+
c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0
cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWls
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAy
ZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVj
NjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpT
Y3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3Ry
aW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0
YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBA
IC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAg
IHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQog
U3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZm
ZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAg
ICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2Vn
bWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpA
QCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QK
IAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBj
b25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgp
ICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7
CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkg
JiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZl
ci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBl
bmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0
MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0K
IAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRC
dWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6
IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVy
LmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lk
IGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNv
ZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBj
b25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQw
ZDA0ZDRiZDQ1Li44NWU3NjM4M2RhYjM1M2E0ZmM0YjA5ZDEyNzcxODVhMDBlOWUyMzk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBA
IC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAg
ICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisgICAg
LCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBA
IC03NSwxMiArNzYsMjEgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUo
cmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKIH0KIAorYm9vbCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmlzUGVuZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9l
cnJvck9jY3VycmVkICYmIG1fZGF0YS0+aXNOdWxsKCk7Cit9CisKIGJvb2wgV29ya2VyRm9udExv
YWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAg
ICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFt
X2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0
YSk7Ci0gICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkp
CisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNE
YXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEt
PmFwcGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVk
ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExv
YWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQog
ICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4
YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNk
YWFlODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVy
T3B0aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29u
dGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAK
IHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3VybDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNM
b2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5k
aW5nKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6
CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51
bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQw
Li4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVz
cG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwg
cwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dp
dGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGll
bnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAg
fSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAg
ICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4
NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYy
OGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3
LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8g
d2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhh
dmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8g
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlV
c2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBp
bmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5n
OjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwor
ICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0
MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBA
QCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3Jl
YWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNl
VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisg
ICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1f
dGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQog
ewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVz
cG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZy
b20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZm
aWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRl
bnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmlu
YWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94
bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBl
KTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBl
KCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0
RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlC
dWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9
IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlz
TnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAg
ICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51
bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQg
PSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9y
ZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAg
IGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYy
Y2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0
dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNs
YXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7
CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVp
bGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMx
MDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAg
ICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RB
bGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVz
dCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBh
OGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlm
MzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcg
QEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJu
ICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4u
ZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
CkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBs
ZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRh
UmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0
ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRv
KiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8g
YnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
SVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwg
dGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAy
ODkxZGIxZTVhYmQ4NDE4NGM2MzM2YzguLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5
MzMxMzhmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2Vu
ZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJv
bm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAo
YnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIu
YXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94
PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTEwNSw5ICsxMDUs
MTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0
d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6
RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdU
Rk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9Cisg
ICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
KSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVu
Y2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRp
YWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJp
bmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZp
cmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFi
bGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAtMzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1Rp
bWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBp
ZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBh
cmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAg
aWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAg
ICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2Fk
SW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkp
IHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGlt
dW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmlu
Z1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZl
cmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9u
b3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0
YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYg
KG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAK
ICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlk
YXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAz
MDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2Fz
ZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNo
ZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hl
LT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBp
ZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhN
RTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJl
c291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZm
ZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZm
ZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVm
ZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBl
bmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7
CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAK
ICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3Vz
UmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3Qo
Km1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEg
JiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVk
RGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFs
dWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAg
c2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIo
Km1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xv
YWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVCht
X2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwog
ICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERh
dGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVm
ZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAg
ICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3Rvcmlu
ZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9S
RUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5
IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRj
aCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3Jr
UHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9B
REVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBw
cmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0
b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNw
b25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vz
c2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0
KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRh
a2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVM
RUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlz
ayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1
ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2Fk
ZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2Nh
Y2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShh
dXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwo
KSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1
NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0NWMyZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0
NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRp
b25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBG
b3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVm
ZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RD
b3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBt
X3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNo
ZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFs
aWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JD
YWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJjOTA2
MDA1NTVmNTcyMTYxYzNjMmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1
ZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwog
dm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZN
b3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlD
YWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApp
bmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3MWQ0
ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAg
ICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJv
ZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJv
ZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2
MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJh
NDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAg
IH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAg
ICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdj
NmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5
ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAg
U3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJl
Y29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9u
KHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9
LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0s
IFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
ewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAg
ICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMs
NyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpS
ZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJv
ZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBz
dG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3Jh
Z2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
aW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUw
ZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEw
MSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNv
cmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5i
dWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAg
IGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAo
bV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07Cisg
ICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsg
fSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0
ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZm
MmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9u
c2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQo
KSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2Nl
ZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9k
aWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0x
MjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZl
ci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0
byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3Rv
cmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
Z2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5
bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2Nh
Y2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtl
RW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVu
dHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhl
ZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlk
Q29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBm
ODRmOTVhZDhmMGI3ODA3ZDc0MTcxYWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlm
OTE0NTkxZDMxY2E5ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8
RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVz
dWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0
ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRf
c3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNl
aXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMz
ZWY3MS4uMTE3YmMxN2MzMjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQot
ICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikg
fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJk
YTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6
CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9i
dWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAg
U2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAg
ICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsK
LSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1
ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsg
fQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1
MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4
NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAK
QEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1l
bW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRC
dWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QK
IHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVl
YmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAw
ZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUz
LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUg
aW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25z
dDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIy
NzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1
MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNo
aXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFy
Y2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJl
ZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRh
dGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFs
YW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAg
IENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEy
ODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVj
MGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29w
eSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3Zl
ciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0
YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5k
YXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2Fs
Rm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAg
IGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2Zl
YWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyAr
MTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVM
YXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQg
ZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1
cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjJjMTYx
MWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRs
ZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgp
IHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9
XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNo
YXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMp
OwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5oCmluZGV4IGRhMWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEw
ZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
SVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBj
b25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNv
dXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFy
ZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJl
ZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3
cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVt
b3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5
MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0
aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVk
QnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVy
ID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0y
NDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkg
PT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcg
QEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgog
ICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRf
dCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0
cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5j
b2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVj
b3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25z
ZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpz
d2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBl
bmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9w
dGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
ICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyAr
MTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFs
dWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZh
bHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9u
YWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciks
IFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMw
MzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFs
PFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFs
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQor
CitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFz
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAy
ZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2
ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0
OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYp
OwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2Rl
KERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0
NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAg
QEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRh
dGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1
c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0
b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikp
OworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVm
NGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2Rl
cjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0
YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1
ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hh
cmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZv
bnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUu
LmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEy
IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0lt
YWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJp
bmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2
ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBO
U0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0K
IApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFn
ZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNs
b3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcAppbmRleCAzYzc5YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43Yjhk
ZjQ2YWM5MDQxNzA2ZjhjNzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAg
LTE0MCw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBw
bHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhf
dD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29u
c3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJl
MzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdj
Mjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1l
bnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxl
V3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlz
LT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRE
YXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0
dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25z
dCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1NGNmYWRmN2ZlZTNiZjFiN2MwZDNkM2MuLjAx
YzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBiNTIxYjdkODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcg
QEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGln
aGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtb
X1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxp
Z2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0
byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRo
SGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDpp
bk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBf
d2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3Jv
dXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olll
c107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZi
NzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyAr
MjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlv
biwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAg
ICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0
YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0g
ICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAg
ICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2
MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYg
KCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2Fz
dDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+Pihu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dl
YlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4
NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFm
NGY0NGUwNTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJy
YXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJD
b3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JU
eXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1f
cGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0p
OworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0
SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5k
ZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBO
U1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lv
biwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2
ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19i
cmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBy
b3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5n
ICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJ
bWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEo
KSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5
cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3
SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJv
cERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNl
ZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0
KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJM
XSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAt
NDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01Q
YXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRl
bmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5l
cmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2lu
SWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVi
b2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3
MTY5ZDY5MmE4MjQwOTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5
KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBj
b25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlG
b3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjA0NTM5ZDYwMDVkNTQzYmM2MmZiODkwNTk5
NjQ2ODkzMmEzM2U5Mi4uZjNhZDU3NmIzMzNhOTMyOTUwMDYzZjdhM2E5NGNmNTc3M2I0MmM1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzksNyArMTE3OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
cyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lk
IG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEu
LjU4NTQ3ZDg0ODgxZGM4MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdl
YlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFu
ZGxlciwgV2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJz
LnJlcXVlc3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZN
b3ZlKHBhcmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0
YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhj
ZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewot
ICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0g
V1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0y
MTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9
IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1f
c3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90
IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
ID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9
OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3Is
IFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRD
b21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRl
cklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1
MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9h
ZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2
YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0
NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVj
dGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJy
YXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2
ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVv
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFy
aW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0
ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdi
YzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9j
b250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJ
SW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5V
TEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMWE4MWNjZTQ0NTVlYjFhNzJiMTBlOGYyNDcz
YzYwYTI5MWVhNThiYS4uMGM2MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdhYWZhMzRjZjdjMzQ5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1B
Y3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAg
ICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFs
bEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAg
ICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
YnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3Rh
dGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigp
ICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAs
NyArNzU3MCw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRB
c3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9T
VFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQg
Zm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVE
YXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShV
SUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVz
ID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hh
cmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVj
dCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGY4
MGM4MjQ5ZGE0NjdiOTQyMDM1ZTQ2MDZlODk5YmNiNjRlZGJjNmMuLmJhOTk1ZmI5ZTA2YmY4ZGRh
ZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdl
UHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KaW5kZXggZTAzZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFiNjZiNTk4ZGI0Ni4uYTdm
YjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAg
U3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdl
UHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRl
OWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNz
IE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1
Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3Rl
Ym9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bh
c3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1U
d29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Jiwg
Y29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFi
MDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVh
MGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0
LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0lu
RWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXIt
Pl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIo
V2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjQy
LDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRvIGRh
dGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJvYXJk
RGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07
CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAgICAg
ICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAgICAg
IHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
QnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7
CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5
MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAg
LTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2ls
bFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50
LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShy
YW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7
CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAg
V0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
UGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+
c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50
c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVz
KCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYz
NDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0
cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rp
b24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAg
dm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5h
bDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1l
bnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9v
bCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQx
NDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODljNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVx
dWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRC
dWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5j
ZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERh
dGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFy
ZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdO
YW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBA
IC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJ
OjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVm
ZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlp
bmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZm
ZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0
YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVm
ZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxs
TG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEu
Z2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgp
KSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0
YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwv
bWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcg
QEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJD
b3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBh
NDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBo
YW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVm
ZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4
NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRp
bCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9p
bnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBt
X2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2Nv
cmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTE0
N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li41OGMxYzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0NjE1
ODUyYTAyMDg3Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXco
SFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBj
CiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwg
bV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1Rp
bWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsK
IH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9p
c0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1h
bnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21h
bnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5
dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJl
YW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxT
dHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRy
OworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTkyOSw4ICs5MjcsOCBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hS
ZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VE
YXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsK
LSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09
IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVh
bFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0
cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURh
dGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAg
KzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAg
IG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAK
ICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkK
KyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUo
KSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAg
aWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIx
MjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjM0YmVmYjc1Mzk5MGY2ZmE5
YmQ0NzQ1ZDk2ZDNkZjBkYjNjZDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxk
IG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8g
VGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBs
dWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2Mjhi
Zi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAg
ICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1f
cmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90Jikg
ewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAg
ICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNl
aXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZm
ZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwog
ICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdk
NzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1f
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2Ug
fTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwg
VW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBi
b29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5k
ZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1
Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwg
cmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5
cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQx
MzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5
NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdl
YkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2
ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+
c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRl
ci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjVi
YjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMx
OWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAt
MTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUs
IHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNr
IHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAg
IGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCku
Z2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJp
ZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShv
dmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1l
c3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAg
ICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0LDcgQEAg
VmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQK
ICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29u
dGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgw
OGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRl
eHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
ICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
I2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyBy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUx
MC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwg
bV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIg
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5LDEyIEBAIHZv
aWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZm
ZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7Cisg
ICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4
IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFlMDUwYTk5MjNlYTdl
Zjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNTQsNyAr
NTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0
IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJ
RDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4
YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2Fi
Y2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0x
NTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRh
dGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAg
ICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7
CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRv
IGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdl
IE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlC
dWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2
NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZy
YW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFp
blJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNv
ZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNv
dXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2Rl
KG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkg
Y29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDku
LjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYs
NyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0
aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRl
eCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2Nm
Y2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDEx
ICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShV
SUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4g
dHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3
ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkx
Li42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3
ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VE
YXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXgg
NDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlm
Y2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lk
IHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsg
cmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0
MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIw
MmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZp
bGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMu
LjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlw
ZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0y
MDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRl
eCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0
Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcg
KzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRv
cmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRS
ZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMw
ZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2
MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBA
QCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3Vy
Y2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAg
ICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUt
PmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAg
ICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3Vt
ZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2Vk
QXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEz
ZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2Rj
YTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVt
PiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAog
ICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBp
ZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkK
LSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1
ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRv
cHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0p
LmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCku
aXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNv
dXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5h
MDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIx
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAo
dm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVz
b3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAq
ZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVy
bCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBu
aWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7
Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5k
YXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNv
dXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAg
ICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAg
ZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJl
c291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIg
ZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29k
ZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwog
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1F
VHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6
V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChO
U0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmlu
ZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGlu
ZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJl
c291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAg
cmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3Jl
RGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+
c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNl
YWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1
YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVt
b3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlT
dHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVt
b3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5
U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZN
b3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRl
eCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEz
ZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDog
cHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVh
bT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
c3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9D
T01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVh
bShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJl
YW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBz
aXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFi
ZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5
OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyAr
MTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVh
bSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihj
ZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihj
ZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1
cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZU
byhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYz
NjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMz
M2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIz
ZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2Jj
MDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVj
dGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50
cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRl
eCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQy
MGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJj
ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xv
YWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlS
ZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1f
bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhz
dHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01f
T3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYy
MGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQg
V2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRf
IElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGlu
Z05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwog
CiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwg
U1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJh
bWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwg
X0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29w
eSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAg
ICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAg
ICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50Pihk
YXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQo
ZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwg
bWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEo
c2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVs
bHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5
Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNl
Ojp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3Vy
Y2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVt
b3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdU
Rk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBi
NmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3
Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJs
aWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDg2OGQyZTIzNjVmZWU3NTEwNDFmNDRmZjNl
NjQwZmMwZGJhZGJhZC4uOTRmMDYzY2MwNTJhODhjMjE2NGU0MzIxZTY1OGY0MzljYWM3MzQ1OSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8v
ODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGF0aW9uIGVy
cm9yIG9uIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1v
bi5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4y
MjBhMzgwMDc4MjMxYTVkYjUzNGU3NDMwZGNkOGU3N2NkMGYwNzdkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQzLDQ1IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlz
c2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIp
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIp
KTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
ID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5Rmls
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0
aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+
Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwotfQot
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRz
T2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAg
IEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBF
Q1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEo
KSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwot
ICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXpl
KCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBF
Q1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSldKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWls
ZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVh
dGVBcnJheUJ1ZmZlcikKQEAgLTk2LDEwICs4OSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7
CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9
ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0
cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0
ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0
YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlv
bltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVk
Q29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9F
USgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBz
dHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTExLDEwICsxMDQsMTAgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykK
ICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0g
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2
ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIu
Z2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAw
eDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBv
c2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0x
NTEsMTcgKzE0NCw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0
dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywg
YWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1
Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyBy
aWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVk
QnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDAp
IHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVy
LT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVy
LT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAg
IEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCks
IGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwot
ICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
bGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
bG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUt
PnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9u
ZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1
aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwg
YnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVD
VF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJI
ZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxl
bih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAg
IEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxk
ZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNF
bXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2Ug
aGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1
ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVy
Mi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVs
bCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIy
LmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZl
cihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIq
IGV4cGVjdGVkKQpAQCAtMTc1LDYwICsyMDQsNzAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMy
ID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywg
J2onLCAnaycsICdsJ307Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAg
IFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOwor
ICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0g
YnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBo
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNv
bWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBh
dXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAg
IGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0
byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRh
KCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2gu
c2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAi
Z2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hl
Y2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVm
ZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZn
aGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIo
Z2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRh
dGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgp
LCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBn
aDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCks
ICJsIik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAg
YXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMp
IHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVu
dCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50
KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChX
VEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07
Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsK
KyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9
KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBi
dWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0g
ICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAn
ZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZm
ZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAn
Yid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2En
LCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7
J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydi
J319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFw
cGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVD
VF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAn
YScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZl
cih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYics
ICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQ
RUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVy
KHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1
LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIg
PSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmlu
ZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFy
KCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwog
ICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjQ5LDE2
ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxl
VGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlz
TnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsK
IAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFy
ZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAg
RVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNr
KGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmlu
ZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVjNjFk
MzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDUz
ICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0Rh
dGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0
eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVy
LT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5k
KChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwg
d29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0Rh
dGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJp
ZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlk
Z2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRh
ID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3Rl
ZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBO
U1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6
IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0
KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0Rh
dGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAg
ICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAg
ICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1
dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAg
ICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRv
IGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsK
ICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkg
aXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAg
ICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAg
IEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAg
YXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7Cisg
ICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3Rl
ZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgp
IGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29k
aW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445852</attachid>
            <date>2021-12-03 07:43:27 -0800</date>
            <delta_ts>2021-12-03 17:01:16 -0800</delta_ts>
            <desc>Patch for EWS with no windows symbols resolution</desc>
            <filename>bug-233442-20211204024324.patch</filename>
            <type>text/plain</type>
            <size>512229</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW01TRV0gRml4IGVyYXNlIHJhbmdlIHRvIHByZXZlbnQgYWNjaWRl
bnRhbCBkZWxldGlvbiBpbiBmaWxlcyB3aXRoIGNoYW5naW5nIGR1cmF0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1NmVhMWU0MGJiNGI3MTYzNTc1MTQ0NTllYmJmY2QwZGM0ODVmMjhlLi4wNDdlNDA3ZmQ2NGY1
NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAor
MjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVy
OjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6
YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpk
YXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNv
ZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAg
ICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BU
YXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3Rl
Ym9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
Y3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0Rl
bGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBEZXJpdmVkU291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4
MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1
bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
IChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1
YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1
NTAyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAy
MS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAg
IChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJB
cmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoK
KwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXSzJdIE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRl
eCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGEx
MzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewog
ICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5p
dGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6
OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41
OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9
IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jl
c3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVU
eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5k
ZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdl
MzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVU
eXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmls
IGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRp
b24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNn
SW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVz
OkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5
NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAg
ICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFT
aXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFk
NDI0Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90
IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNv
cmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVz
cG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0
YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hh
bmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25l
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVy
LT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEp
KTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNv
cmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
IHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRo
UmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRj
aFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7
CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVs
ZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7
CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkg
PSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVz
dC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICsz
NzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0Jv
ZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3Bv
bnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNd
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAg
LTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBS
ZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAg
ICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAg
ICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNj
YmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhj
ZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwg
UmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4m
Jik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNi
ZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJl
c3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkp
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAg
IH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91
c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhi
YThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJl
Njg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5
YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFs
dWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChh
dXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFl
YzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0
Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0
byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5k
YXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlh
S2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsx
MDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJz
dC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5m
aXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAg
IHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29u
ZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5k
ZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4
MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNo
YXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIu
Y29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywg
bG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVm
UHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAo
aXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3Jt
RGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0
YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFr
ZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkg
ewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYg
KGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBh
cmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwog
CiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAg
IGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5i
YXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNi
NzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5
M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlB
c0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsK
IAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEg
PSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlk
OGI3OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAo
bV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsy
NjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAg
ICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1U
b1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEo
V1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBA
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVm
ZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1f
YnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewot
ICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVy
KCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1
ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0
YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURh
dGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBl
KTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4
ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIg
PSBtX2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3Qg
RXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODli
NzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApA
QCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFt
X2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5
QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsK
ICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZl
cnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4g
bV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0
MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBi
b2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0s
Ci0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0
aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQz
YzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2
YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0o
KSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VE
YXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hh
cmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owog
ICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVz
cG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcw
YWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFi
OTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGln
aGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7
CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlh
NjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZl
MjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYs
OCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUw
NDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwog
ICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1
ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFh
MWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwg
U3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5j
b2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAg
fQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXko
ZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25z
dCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3
MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFh
Y2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0
aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3
ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGlu
IGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRl
IGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5
KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExP
RyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlu
ZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkp
OwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2
NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmpl
Y3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBA
IC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0
ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBV
TlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUg
cmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9u
bHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0
b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFu
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXku
aXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
ICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkp
CiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Il9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAg
ICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBp
bmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2Uu
bG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8g
SURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAg
ICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAg
aWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0
ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRz
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAg
ICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
Y3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywg
KmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJp
bmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZm
YjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYx
ZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlU
b1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0
YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRh
KCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXgg
M2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5
NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2Fn
ZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBk
YXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwg
WyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdE
YXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4
OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxl
dGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVl
KCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBA
QCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRG
YWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3Jr
TG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9k
YXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2
MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVS
TCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAg
IFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRh
Q29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4x
MzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBt
b2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3
YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBA
QCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3Jt
RGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3Jl
YXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwog
ICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNm
YmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4
ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVy
ICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAg
ICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAg
ICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAg
ICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5n
KSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRv
U3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250
aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOwor
ICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1
ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRh
YmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJh
ZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQg
Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAg
ICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVu
dD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAg
IGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dl
bmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwg
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
fSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGlu
ZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
bV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0
ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5n
KCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPiht
X2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgy
ZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4
NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3Mg
Q1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3
ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBT
VkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0
aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVt
b3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywg
YSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNi
NzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3
MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNo
aXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29t
bWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3Rl
cDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBj
bGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYs
NyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5n
U3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2
b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25S
YW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxl
Y3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2Vi
QXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5n
IHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
ICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
Rm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAy
ODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5
YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5k
MGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFG
b3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykK
K3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNo
aXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRp
dG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkp
OworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0
cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUx
MWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2Vl
NDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRl
cjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmws
IEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJj
ZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlw
ZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4
dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIz
MDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJM
KERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1l
IHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVU
eXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFw
cGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsK
ICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgp
KSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEz
Y2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBj
NjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
IHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7
Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50
OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJj
ZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVu
ZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICgh
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVU
eXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBA
IC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNo
b3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBy
ZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZl
JiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpA
QCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hp
dmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8g
c3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5h
dGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBj
YW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5k
QWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRp
bmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2
MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSAr
MTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2Vy
dGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZl
LT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQo
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8g
dGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0
aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBv
bmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3Vw
cG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4
YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkg
QEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5l
KGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9j
ZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwg
cmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRp
bmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykK
IHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBA
QCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5z
dGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3
ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRl
IERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5l
dmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2
ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7
IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAg
LCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewog
fQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNp
emUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2
ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpl
dmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9k
YXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIp
Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBt
X2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBk
YXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4
ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9u
c2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsg
fQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
QnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4g
aGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7
CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVu
c2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hl
ZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0
MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYy
NzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIg
QEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAg
ICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29k
ZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdO
YW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVk
ID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2
NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3
ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
ZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
YXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUz
YjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUw
YTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291
cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2Ex
YTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAg
IFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFBy
ZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5y
ZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxv
YWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5
MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6
Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNo
aXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYg
bWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRB
cmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIu
c2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJh
bWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRh
KCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2Vk
QXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNl
RGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFy
c2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFt
ZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNp
emUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpz
dGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0
ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFt
ZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8
QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0
cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xp
ZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYz
ZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1p
bmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0
cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzA4Nzg1YWY4
ZmM5MjRlMzUzZmZkNDgzZGY3Yjk1ZGEyNDQzYWU4NC4uOWU5ZjI5NDY3MmYzZDYyMjUwM2IxZTU1
YjE3OTZmMGNhMWVjZmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJl
ZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRh
dGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
NTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3
NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
IH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
bV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGlj
eTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9s
aWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMx
NDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdS
ZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5l
d1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsK
ICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJj
ZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAg
IChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNl
TG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1
MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3Mg
Q2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNl
OwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBA
IC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xh
c3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZl
cnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9
IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50
KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBz
dGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEw
ZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNl
TG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAg
OiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGlu
ZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpB
bGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAg
ICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJl
c2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApA
QCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQ
b2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNl
dCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRh
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURh
dGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNl
RGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3Vy
Y2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMg
UmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURh
dGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3Jl
IHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdl
ZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJl
ZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5
NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYx
MDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVk
QnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQo
KSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9k
YXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2Rh
dGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJs
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4
NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1
YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFt
YW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sg
b2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJz
ZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
QXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBz
dGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4
ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMy
NjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBA
IFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBh
dGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRp
YyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJj
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBD
bGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgot
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsK
KyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVz
b3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7
CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3Vs
ZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAg
LTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJl
ZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBh
IGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxl
bnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0
aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRo
ZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4
OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJh
Y2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0g
cmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9h
Ymx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIg
d2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcz
NmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1
NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDgg
KzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291
cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXli
ZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9p
ZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVk
MGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3Bv
bnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlw
ZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0
MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRp
b25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIw
YmQzMGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVu
c2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/
LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgp
LmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFT
dGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5n
ZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1h
bmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAg
ICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkg
d3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNl
IHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91
bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7
CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAg
ICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAg
ICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJs
b2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+
Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRl
eCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2Rm
OGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVt
cHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBh
dXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVS
TCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBm
b3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZE
YXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVBy
b3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwog
ICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAg
ICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+
KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVm
IE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAg
ICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFy
eSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291
cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8g
bWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
QEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnks
IGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0
byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAg
ICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1
YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFk
ZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVz
cG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNw
b25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4K
ICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
RnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAg
ICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBk
b2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5v
dGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMg
b3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwi
bm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIg
aGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uMjg5YzM4NGJjYmU2
MGIxMzBhOTkxM2JmMTI5MTg4N2QwNDNjYmMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDgg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
KiBwYWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFz
IGFzY2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBB
U0NJSSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOwor
ICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAi
LCBjb250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJs
LnN0cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lp
U3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEu
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0
cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEg
PSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVz
b3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2Rpbmcs
IHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90
ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERh
dGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAg
ICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cg
YXMgaXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JM
RnMuCkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6
OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0
aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAg
bWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAg
ICAgICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAo
aW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2Np
aVN0cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0g
ICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1s
RGF0YS5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFl
NGNiMmQwYmRiODAxNWUuLjQwMjViOTgwZTVlZTY4MmRiMDc2MmFmYTg2ZWNhOWQ5MmZlODU4ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewog
ICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJv
dW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29s
IGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wg
ZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5
IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7
CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVS
ZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0
Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIp
IHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
d2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNw
ZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0g
ICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGlu
ZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAg
ICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVt
IGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNv
ZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250
ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgi
XHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5
MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBp
ZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0
IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAg
ICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91
c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAg
ICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUs
IHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9u
cyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
MjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2Vu
ZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2
ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4
MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwxNiBA
QCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5n
KGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZm
YjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZm
MzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVs
bHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJj
ZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0
OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAg
IHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVj
b2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBi
aXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRD
U1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNo
ZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0g
ICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0
aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBl
bmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5
KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xl
YXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRp
YXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdl
MzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5
ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY5YWQ3NzEz
YzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lkIENhY2hlZEZv
bnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICBz
dGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsK
IH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
bV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmco
ZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBT
dHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wg
Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9j
Y3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGlu
ZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVz
IH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDog
bnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90
aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9u
dENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9h
ZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4
IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjE1NGRiOGNiYWJmM2Q1
YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5l
ZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3Jt
RGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9v
bCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAg
IFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03NCw3ICs3NCw3
IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0
YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJk
YTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4
LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBt
X3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0
YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIz
LDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRh
dGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2
YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bv
c3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2Uo
KSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0o
TUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYo
ZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRv
UERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxz
ZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYg
dGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYu
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAgRW5jb2RlZERh
dGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hl
ZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRh
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2
MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLmQ1MTNlMTZjYmE1YTk3MDdjMzNh
ZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRp
dmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAg
IFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFn
ZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZO
ZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0
YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQg
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRl
OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNv
bnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRC
dWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYu
Ljg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNTYsNyAr
NTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNv
dXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5nZXRTb21l
RGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFu
eSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2
ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNy
ZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAg
d2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3Jl
bWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25v
dXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNw
aW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9s
aWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5n
UG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9k
YXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGll
bnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERh
dGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
bV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4
NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2
ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0g
ICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0
YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRp
cmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hM
b2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIw
OTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmNmNGYwMmM1ZDc0MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2
MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3Rp
ZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICsz
NDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MTMsNyArOTEzLDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVu
Y29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikK
IHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI3LDggKzkyNyw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXIm
IG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIp
OworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRC
dWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMy
NzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6
U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNl
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1No
YXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8s
IHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJl
cGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYK
IAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRS
ZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFz
aENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBi
eSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RE
ZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNo
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uYjBmNzZh
NTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIg
QEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1l
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRl
IGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJl
bnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1l
bnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdlYWEuLmIw
MTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1
NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBj
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAK
QEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0
YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlwdERpc2Fs
bG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAg
ICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAg
ICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAgfQogCkBA
IC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdG
b250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1Rv
T1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVy
dGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1
ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJh
Zjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMz
ODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApA
QCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRp
YWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAg
ICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250
RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBT
ZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2
NS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBA
QCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3Njcmlw
dEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRT
Y3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYwNzdlZWVi
NWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMyYzdlNjM0MzIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAz
MTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uNTQyNjZkZDkwODE5YzM0ZTkxNTA4NDM0
ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNh
Y2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Np
b25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7
CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNv
dXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAg
ICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0K
IAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1Vw
ZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi5mNDYz
MTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQg
ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQz
NDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApA
QCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZv
aWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAg
ICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNv
ZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
ICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdm
NjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1
NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0
cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1MmNmZWJkNzYx
ZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQx
NTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVkZWYgY29uc3Qg
c3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVy
RnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CisgICAgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVk
QnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAK
IHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQ
QUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2b2lkIHJlc291
cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlc291cmNlQmVj
YW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VS
ZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1MWU4
YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBt
YXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBhIHJlc291cmNl
IHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3QuCiBzdGF0aWMg
Y29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJG
cm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3Bv
bnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRy
eUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0YSA9IF9DRkNh
Y2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2lu
Z1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCkBA
IC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBfQ0ZDYWNoZWRV
UkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNl
LCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNr
Q2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxl
QmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBh
dXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVl
c3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJlc291cmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRl
eCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJi
N2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNs
YXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVm
PExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9h
ZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThi
MjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41MmZmZDUzN2JmZDYyZmY2N2Rl
Y2Q0NjRiNjVmYjZjOTA1NzA2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFs
RGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0
UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25z
ZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAg
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVy
dGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVy
dGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVy
ID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5w
dHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgp
KTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRl
ZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVBy
ZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2
aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUo
cmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBt
X2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkp
IH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAg
LCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9
CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRl
UG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERl
Y2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFh
NjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBj
bGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlk
YXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggZjM3ZDA1OWIwZWI1MjZjNTQ5YzBkN2RlYjRlYTVhMDg4MGZmMGQ4Yy4uNmQ1MWM1
ZTUxNmEzZGJmYmI3NDc2ZWQ5NGIwNDFlNmU1NmY3M2MwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xOTUyLDcgKzE5NTIsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkg
Y29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9h
ZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2
ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAg
Ly8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0
aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEu
LmQ3NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQyY2RlODA0ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2Vy
aWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5n
Tm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVk
TUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0
LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFu
ZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAg
ICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFn
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVT
aGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhl
ciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQg
b25lLgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRl
bnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkp
OwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAg
IH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRv
UmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2Vz
LmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRj
MmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0
cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4
cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNl
ZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJh
d0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBm
aWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9
OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFk
N2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5T
aGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUp
CiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAg
YXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1
ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5h
bWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihh
cnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9z
aGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29G
YXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGlu
dD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxv
YWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpl
eGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tl
eWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3
Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURv
dWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVu
Y29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0g
MDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0
IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmlu
ZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBj
ZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpA
QCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VC
Q09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRP
cmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3Jt
YXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUlu
U3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3Rv
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFn
ZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5n
IGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3Rl
Ym9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJ
TikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNl
TUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2Vz
dGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBl
KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlw
ZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNv
bnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNm
ODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRi
ZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRy
eT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAg
IGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9u
ID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3Jp
Z2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBl
bmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1
ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBk
ZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21Q
ZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQw
OTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4Nzdj
OGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBz
ZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBm
cm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmVi
MmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1
c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5k
aWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlv
bkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhm
YjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2
YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQg
KzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNv
bnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAg
ICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdG
b3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdh
MmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2Fi
OGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJv
YXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVj
dGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwog
c3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0
IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0
Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5j
bHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBy
ZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5
MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigp
IGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Rh
dGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVy
biAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBk
YXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBj
bGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBp
ZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3
RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURh
dGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3Mjky
Mjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgyYjk3M2U2M2Yz
OTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5p
c2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmll
d0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7
CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5n
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
LmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2
OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJv
bWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0
aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxE
YXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTVi
OWFmZDM5MDAzNTM1Mzg1ZC4uYmJlMzkyM2EyMDdhMGU5MzYxMTczMDc0Zjk3NjA3ZmFkMDU4N2Rm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyAr
NTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVE
YXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5z
aXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBw
ZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsK
QEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6
ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1h
cHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAg
ICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAg
ICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNj
ZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRo
KTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
U2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21l
bnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpA
QCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50
c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBj
b21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21l
bnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFr
ZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6
IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3Nl
cnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFm
dGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMg
c2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0g
dHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICBy
ZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0
YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZl
cio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5z
aXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0
YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21l
bnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUo
KSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0
IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVu
dHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09u
ZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0
dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgxLDYgKzE1Niwy
MSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJu
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6
OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJl
ZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3Vz
OworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBA
IC0yMDIsMTAgKzE5Miw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50
cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBt
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAg
IH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMjMgKzIwMiwy
NiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxl
bmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVu
Z3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRh
dGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0
YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7Cisg
ICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBA
IC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHko
KSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVu
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVu
dC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5k
KHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwog
ICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJv
dmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
cHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25z
dAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0Miw3IEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdt
ZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0g
ZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0g
MTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zNzIsNyArMzU4LDU3IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNC
dWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOwor
ICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91
c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFw
cGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0g
TWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwor
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdT
dWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBd
LnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50Ojpk
YXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAg
ICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDcgKzQyNyw3IEBAIGNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6
OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFT
ZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFi
bGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0MzgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUo
KSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9
PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3Qg
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFr
ZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6
ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBAIHNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVu
dCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQp
CiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlv
bldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYgKzUzNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0
YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hh
ciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNl
Z21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwg
ZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6
ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgp
IHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRm
OEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRl
IGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29u
c3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzUsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZl
ci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZm
ZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4
MzkzNjhhZC4uYWNjNmE5M2YwODQ0NTg0ODZmYmEwYTU2MjZmY2Q1ZTMzNWM1M2UzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02MiwxNDYgKzYyLDEz
MyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxk
IGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVj
dHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0
YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAgIGVudW0gY2xhc3Mg
TWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBk
YXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNB
cnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5k
aWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkg
Y29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwot
ICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIp
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVm
UHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNh
dXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQg
aWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNp
bmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNh
bGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9u
IGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0
IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlz
IHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBj
b3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlC
dWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZl
ci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7
Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
eyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFy
KCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhf
dCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAot
ICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUg
YmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRv
IG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4K
LSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRh
U2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgp
IGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAg
IGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAg
ICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNF
KEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdC
eXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlm
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNv
bnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6
ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAgZXhwbGljaXQgRGF0
YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVu
dChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAg
ICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVT
RShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2lt
bXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZP
VU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZv
ciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KK307
CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9
CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3Ip
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9
CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4s
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJy
YXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikK
LSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0g
ICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlp
bmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNo
YXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERh
dGEoKTsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgLy8gQ3JlYXRlcyBh
biBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8g
dGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVy
cyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
c2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAg
IHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFj
a3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQK
IAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJl
Z2luUG9zaXRpb247CkBAIC0yMTAsNTUgKzE5NywxNzYgQEAgcHVibGljOgogICAgIHVzaW5nIERh
dGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAg
IERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBo
YXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPbmVTZWdt
ZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlz
IHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVE
YXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hl
eFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNv
bnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwg
c2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91
cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wg
bV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyNl
bmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXIoKTsKIAogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZl
Y3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsK
IAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAg
IG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgog
fTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQg
YWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQg
cmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBT
aGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsK
KyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAg
ICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0g
Y2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1h
cHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0
OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAg
V0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
K307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7Cisg
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVu
Y2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11
dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCBi
dWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1
ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0
YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBz
aG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYg
KGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChX
VEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6
IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBl
bmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAg
ICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0K
KworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7
IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHko
KSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIg
PSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAgICAgICByZXNldCgpOwor
ICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAg
eworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkK
KyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJh
Y3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjgsMjEgKzM3NiwyMSBAQCBp
bmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0g
c3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+
JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBu
ZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBT
aGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFy
KiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAj
aWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVu
dDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qg
c2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29u
c3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3
MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwog
ICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5z
QXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8u
Z2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3Jr
LmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0
d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3
b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3Jj
Lmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2Qz
N2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApA
QCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAg
IG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEg
PSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBt
X3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwg
MCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2
ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZv
aWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5k
ZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uMzI0Y2U4ZGNlMzU4
NjE4NTQ4MGQyYTQ0ODM1ZjhmZTlhZjMxMmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxsb3dz
IGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rp
b24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lm
ICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
ID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8
Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKQEAg
LTcyLDcgKzcyLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGlmIChk
YXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpp
bmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFk
ZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkK
IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0
VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIp
CiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBp
bml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTog
dGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
IE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQ
TkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4g
Y29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRo
U2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUo
dHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVk
Nzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5
NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0
YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihO
U1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNl
Z21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXpl
OwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAg
IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNl
Z21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21l
bnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0K
QEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwog
fQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBv
c2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgs
MjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAg
IHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRh
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVy
biBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29t
YmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAg
ICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0
KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsx
MjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJh
eSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRh
U2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dl
YkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBv
c2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4
ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3
YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250
ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1
ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4u
MmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNv
bnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNN
YXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGln
dW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRh
ID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXpl
ID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25l
ZCBwc3NoU2l6ZSA9IDA7CkBAIC0xOTYsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlv
bkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBr
ZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXRECiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEu
CiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsK
KyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERh
dGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7
CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBr
ZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBA
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwg
V1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRv
SlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBl
bmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlk
cy50YWtlKCk7CiB9CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFs
aWQgV2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRh
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAg
cmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRv
IG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5p
bmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5
IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBl
bmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVl
LgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGlu
aXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hT
dHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEo
KSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFw
cGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5
SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6
OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4
ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2Rlckdl
bmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5n
KCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpm
aW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5j
b2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5i
dWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4
IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVk
ZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZp
bmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2
b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXgg
NzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1
M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lk
IEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFz
dCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xp
Yjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFj
ay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZh
cmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdS
ZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQu
Z2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3Mjll
MmI0YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rpbmco
KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9v
bChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAz
OGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVk
YzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJl
ZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVk
QnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxH
Qnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEo
KSwgc2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJl
ZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+
KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cio+KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAg
IGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEs
NyArNjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0
KCksIHNpemUpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29u
dGVudHMuZ2V0KCksIHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThm
NWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2
M2Y0NTgyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBA
IC02OCw3ICs2OCw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmls
aXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hl
Rm9yVmVydGljYWxEYXRhKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZv
bnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2Fj
aGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAg
IGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShm
b250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJi
YWI2ZjQuLmY5YmFjYTVhMjY0MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGlj
OgogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25G
YWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9u
dD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9u
dENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAog
ICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxs
YmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9u
dEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIw
MDgyOWRlMTk5YjE0ZTg0YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1
MzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaApAQCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNl
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4g
T25jZSBjcmVhdGVkLCBubyBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNl
cnZhYmxlIHdheSkuCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEz
IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9u
KCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZm9udEZhY2VEYXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291
cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNl
NTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2Yy
Yjg0MDkyOWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWlt
ZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAg
ICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1l
VHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYz
MGQwNGUxLi45MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVs
PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9
CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAt
NDksOSArNDksOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IFJlZlB0cjxNb2RlbD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1v
ZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAt
NjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxz
aXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwg
bV91cmw7CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBN
b2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1v
ZGVsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFj
Ny4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAt
MzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3
NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wg
cmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90
JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9B
Ukcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXpl
KCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9v
bCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMy
X3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQor
c3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNp
emVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQs
IG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNl
dCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUlu
dDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNv
bnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAot
Ym9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWlu
dDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlm
CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQs
IHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZU
b1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0
dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIp
OwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZl
cnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZv
bnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZl
cnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1
ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwx
OSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
IGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9v
bCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlm
IHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQg
dG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5
KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50
byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZl
biBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBu
YXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0
dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lv
biBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVj
NmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBA
QCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5m
OiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAK
ICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAo
IXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1
MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4
MTBiZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0
YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBi
dWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55
KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6
VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRh
OwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnNpbmZOYW1lKCkpCi0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9
PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRp
ZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAg
ICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6
aW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5D
X0lOSVREQVRBKQogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5
OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRv
IHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25E
YXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6
IChOU1N0cmluZyopcHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50
ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5T
QXJyYXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhw
aXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmll
cjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsK
ICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5
bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7
Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFM
OjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZh
aXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVz
cG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNw
b25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBE
RUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJv
Y2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJl
cXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsK
KyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpy
ZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAg
ICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUg
Y2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBh
IHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxp
Y2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBj
aGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBb
UEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25S
ZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0
b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmlu
ZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3
ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlT
dGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vz
c2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4
cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkg
c3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJD
ZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JS
ZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcg
KzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmly
c3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50
aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250
ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3RE
YXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0
cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSB7CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRh
aQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byog
Y2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogCiAgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dy
ZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVn
YXRvcj4gewpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAg
ICAgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAg
ICAgYXV0byYga2V5SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBh
eWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5n
KCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXpl
KCkpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoa2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkp
OwogICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRv
U3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAg
ICAgICAgICByZXF1ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAg
IH0KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAg
IGZvciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7
CiAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQo
KSk7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5
SURzLmZpcnN0KCkpOwotICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlE
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVx
dWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZp
ZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9u
czpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0
b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9
IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihj
b250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVy
Q2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJl
cXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAg
IFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVx
dWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZp
ZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9u
czpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFi
bGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVz
dERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRm
NTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5
ZmM1NTY4ZmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNv
ZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAs
IG1fbG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9u
U2Vzc2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAg
IFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6
Tk9dOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVz
b3VyY2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0
X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAg
W21fYXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29t
cGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxl
IHsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVj
dGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRl
RGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRl
OmFsbERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAg
IG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQw
ZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZi
ODM2NjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0
byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRh
ID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBp
ZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250
aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkg
d2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4
MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJi
ZjcyYTZmMjQ3ZjAuLmI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jl
c291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAg
ICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVm
ZmVyLmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3
ICsyMjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29k
ZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkg
ewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNl
KHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAg
fQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Ojpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
JiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291
cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVx
dWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2Zl
NzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAg
RlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlv
bjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBj
MDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5z
aXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFU
Rk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCog
aW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAg
IFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
aW5mbyk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VT
aXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNp
emUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlm
IChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNv
dXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBu
dWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBl
V2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0
IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1
ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lk
ZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRo
ZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidz
IGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMs
IGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAg
IENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNl
bHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBX
ZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0
Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJv
dmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRo
YXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2lu
ZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RD
YWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5
dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZw
cm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIo
bV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZl
ZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJl
YjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4
N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJS
ZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJv
dmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
Q0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsK
ICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVy
KGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
aW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYz
YWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3Jt
SXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4g
Q0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVk
YjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4
NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFT
ZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8q
IGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJl
ZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21l
bnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZv
cm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4
MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTVi
NTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAK
QEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURh
dGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JF
cXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRh
ID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVP
cHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIw
ZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBz
dGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAg
ICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3
OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkw
ODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0Nv
bXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJl
ZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2Nr
ZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZy
ZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBl
Y3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVa
WikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApp
bmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRl
NjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6
OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlz
KTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4
NGM2NjFiMWNiODcxYmUuLmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lv
bihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBw
ZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2
NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4
LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2Vv
cyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2Rl
ckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5z
aXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJH
U3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9
IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAg
ICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
Nzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMz
NzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0
RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9h
ZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwg
aW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBk
YXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkp
OwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJj
MmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VD
b250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3Vw
UGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBj
b25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1
Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0
IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNp
bmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0g
YmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFs
dWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEs
OSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0Kiwg
R0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7
IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3Vw
UGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQ
YXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9h
ZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3Zl
KHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkp
CiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdk
MmYxLi42NmUyOTc5ZTNlY2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NU
X0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVj
cnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRh
IHsKIHB1YmxpYzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVy
IHR5cGUgc2FmZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1
ZmZlciogaW5pdERhdGEpCkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAg
R1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRf
ZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMg
cHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRy
YWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7Cisg
ICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBl
ZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQu
YXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5p
dERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXls
b2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2Fk
KGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBp
ZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJh
Y3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAg
ICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAg
LTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0
LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5
c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkp
OworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0K
IAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1
cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQo
KSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWlu
ZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlk
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZk
MzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9u
dFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250Lmdl
dCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnRE
ZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1
ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2
N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6
Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRv
Y3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2Zj
ZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1h
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRv
Y3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2Rv
Y3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRh
OmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHRO
UyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcAppbmRleCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5i
NDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxp
Y3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNz
Q29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGlj
IGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90
IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWlu
dDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1
Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1h
dGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8q
IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
T2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBH
bHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAw
eDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2Vt
Ymx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5
UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNv
cmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1
cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2
YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXpl
VmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlh
bnRzKSBjb25zdAorICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMs
NyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlh
bnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3Nl
bWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
b2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJs
eSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwg
b2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVX
aXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAv
LyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9u
cyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgog
Ci0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24o
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwp
IGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1
Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwg
Ym9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1
aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291
bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0
aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUg
OiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsK
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1h
dGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEy
LDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJ
bmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlw
aEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09m
ZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFU
SFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0
OTRhYjE4MDM1Y2YuLjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlw
ZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMz
LDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25z
dCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVu
aXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApp
bmRleCBjODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRl
OTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03
Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRh
ZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3Qp
KGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCko
Y2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGlj
IGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVm
ZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04
Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRh
dGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7
CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEVuZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBv
c2l0aW9uKQogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQg
aXMgaW5jbHVkZWQgYXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNv
bnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHJldHVybiBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50
MTZfdCBvZmZzZXQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZh
bGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2
X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1
ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAg
ICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdl
VGFibGUgewogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVy
YWdlIDogVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdl
LCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBn
ZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJh
Z2VJbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdl
Rm9ybWF0KSB7CiAgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFj
YTNmY2JmOTJkMWEuLjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVP
VEhlYWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUg
Zm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8g
cmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxl
ICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkg
YWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQor
Ym9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBj
b25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRh
KQogewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAg
IGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFk
ZXIqPihmb250RGF0YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9u
dChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBW
ZWN0b3I8dWluCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZv
bnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJp
bmcmIGZvbnROYW1lKQorUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZh
dGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJp
bmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsK
ICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0
YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBk
MjE1YjdlNzQ4NTJjMTllMzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMy
YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291
cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAg
IFZlY3Rvcjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVm
UHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIy
NjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAz
MjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAg
LTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBjb3ZlcmFnZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxD
b3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVy
YWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3Zl
cmFnZU9mZnNldCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUg
OiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1
cFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0
c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmll
bGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBk
eW5hbWljYWxseS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBH
bHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBn
ZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBj
b3VudFN1YlRhYmxlID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcg
QEAgc3RydWN0IExvb2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYg
bG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0g
ICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50
MTZfdCBpbmRleCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYg
KGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291
bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50
MTYgbG9va3VwTGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMo
Y29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0
dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiog
bWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcg
QEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9m
ZnNldCBmZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZl
YXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0
IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
aW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8
IGZlYXR1cmVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIs
ICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUs
NyArMjU1LDcgQEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5k
ZXhbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBm
ZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlw
ZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZmZWF0dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0
VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZz
ZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSog
ZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdT
eXNDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRz
W2NvdW50XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJh
c2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlw
dHNbMV07CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFn
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJs
ZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENv
dW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpA
QCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3Jp
cHQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFi
bGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAg
ICAgaWYgKCFjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBA
IC0zMjEsNyArMzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAg
ICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5z
Y3JpcHRPZmZzZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExh
bmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUg
PSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0z
MzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9v
a3VwTGlzdE9mZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlw
dExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlz
dCogZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsg
fQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwg
bG9va3VwTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNv
bnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZm
ZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExp
c3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2
YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAK
LSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAg
ICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBU
YWJsZUJhc2UgewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVy
KTsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRh
ZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAg
ICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAt
MzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBy
ZXR1cm4gZmVhdHVyZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0
dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hN
YXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVh
dHVyZVRhYmxlID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAg
ICAgICAgIGlmICghdmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBh
ZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRm
b3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBj
b25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8
T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3Bl
blR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAog
dm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJs
ZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFi
bGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihi
dWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3
IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9h
ZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3Qg
T3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5U
eXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdl
dFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMz
ZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0
YmM4N2E3ODNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4g
Zm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJp
bmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291
cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcx
YzRlZi4uZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dG
b250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVz
Y3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250
VmFyaWFudFNldHRpbmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGlu
Z3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBj
MTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3
LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZv
bnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5n
IGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJj
ZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fp
cm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVl
ZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBG
b250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
b3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKaW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5
Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9y
bURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAg
UmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAg
ICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBE
V09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YSho
ZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVj
dE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxl
Y3Rpb25EYXRhLmgKaW5kZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2
YS4uN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkg
eyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21h
cnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZv
aWQgc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURh
dGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBj
b25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURh
dGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9
IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURh
dGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1
c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xl
YXJDdXN0b21EYXRhKCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQ
dHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2Jm
YjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNj
NDc4OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0
dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEo
KSkgewotICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNl
Z21lbnRzIGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAg
ICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQor
ICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNv
bnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1f
ZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsK
ICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAg
ICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4u
YTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NN
YXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5k
YXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElD
Q1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVj
dCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtl
cl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2Vy
LT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFy
a2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5k
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRl
clNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2Vy
U2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZm
ZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZm
ZXI7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5k
aWYKIApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJv
b2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12
b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5
YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThm
ODcxMmI3MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9u
KEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0
aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmlu
ZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRi
NjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEw
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJv
YXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQ
YXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250
ZW50KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQu
Y2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVu
dC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVu
dFR5cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsK
ICAgICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNz
ZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0
YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVycm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNz
ZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0
YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJp
bmddOwogICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBj
dXN0b21EYXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
b2NvYVR5cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3Vz
dG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
OwogCiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRh
OwogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewog
ICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1F
VHlwZTsKICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAg
ICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAot
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBl
OihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFn
ZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWRO
YW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBW
ZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJF
U0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6
ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEu
b3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRh
Lm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
dHlwZSk7CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlk
ZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpX
ZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNT
YW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAg
ICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNo
YXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBz
dXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRz
IG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRo
ZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0
aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ug
d2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJu
IHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CiB7CiAgICAgaWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5k
ZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYg
KCFbcGFzdGVib2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6
MF0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9h
cmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpp
bmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjVi
MmZhN2QyMGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBA
ZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252
ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAg
ICAsIG1fcHJvdmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBh
ZG9wdE5TKFtbV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVn
YXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3
ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNjMzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3Jh
cHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2Up
CiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdp
dGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291
cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAt
MzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUlu
ZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0
ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1z
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4
KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFz
dGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJp
bmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJh
dGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJl
dHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwg
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5n
UG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lS
VEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVm
ZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3Ry
aW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0
YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwx
MSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3Jt
YXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ld
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJD
b250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29u
dGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50
LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9t
RGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0
YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVi
b2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJj
YjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFtt
X3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRh
ID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBp
bnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsy
MTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmlu
Zz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21E
YXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
b2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21E
YXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVk
Q3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4p
IHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAg
ICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsy
NjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2Fy
ZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAg
ICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxh
dGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6
Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0
YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAg
aWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEg
PSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9t
RGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07
CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAg
ICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRh
OmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERh
dGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyAr
NDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJk
VHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBp
dGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRh
Rm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5
KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7Cisg
ICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgp
KTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0
IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAg
ICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5
cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihz
dHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNk
MzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5o
CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRl
cj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+
IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBl
NTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRi
NWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1f
d3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91
bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRv
IGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3Jp
dGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2Rh
dGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewot
ICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJl
dHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGEzN2EwZDg3NGY3MmJmOTFiZDUyYzNhYzZiNTg1ZDMz
M2YwZmNhM2MuLmIxNzQ5NzQ0NTRiZjczOTg5MDljYzhiZWE0ZDBhM2I5NTc5YTc4ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTIsMTMg
KzQxMiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAg
cmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1E
YXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwog
fQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1
ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xh
c3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZv
cm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4g
bV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3
YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNl
dEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5
c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmVi
ZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4
ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0
MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVz
b3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAg
ICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNl
KHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1
Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkg
KzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBz
aXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFz
cyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9y
U2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7
IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAg
IEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5p
cXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRh
c2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0
ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25z
dCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0
ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZl
clNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBh
YmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5k
YXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVz
dCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2ls
bCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlm
ICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1
ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5n
ZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRh
c2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRv
IGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tE
YXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMg
fV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNr
KSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwg
Z2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3Rh
dGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdl
OwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZm
ZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5k
ZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZl
clNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZp
ZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1
ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQs
NyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZm
ZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8v
IEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hv
dWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlz
IGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdp
bmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91
cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEt
PmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdp
dmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0
ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNv
dXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRp
b246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEp
XSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6
ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9
IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5k
ZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZk
YTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMg
Y2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUg
KHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpF
bmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9m
IHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEu
Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJv
dW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91
bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFs
bCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVm
ZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChv
ciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEu
Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZm
ZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzVi
MGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2Yx
NGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lk
IEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUg
IT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2Fk
RmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0
M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNk
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0
OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50
bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0
b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUo
YnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24o
KS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBX
VEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5l
dHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2
MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2
LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQo
U2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAo
ZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlN
ZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4
LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYg
dXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEg
dG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wg
dGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0g
ICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChk
YXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUo
dGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsK
ICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5k
ZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYw
M2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5k
bGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3
ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAg
IGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5
dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVz
dWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSBy
ZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5h
c2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNk
MTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEz
LDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VD
b250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRh
KCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3Bv
bnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5
ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAK
ICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJf
cykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1v
Y2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQp
OwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0
cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBp
ZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7
CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2
NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1
ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZm
ZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmlu
ZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNj
cmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFp
bnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVy
ICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21l
bnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9i
dWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+
c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0Zjgu
bGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIz
OWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRl
YTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmco
KSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZm
ZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8g
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5z
aXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0Vt
cHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFw
cGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0
aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZl
cjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3
NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjg1ZTc2MzgzZGFiMzUzYTRm
YzRiMDlkMTI3NzE4NWEwMGU5ZTIzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJM
JiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAg
ICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2Uo
bG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUpCiAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwog
fQogCitib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051
bGwoKTsKK30KKwogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewot
ICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygp
KTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRh
OworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRh
ID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91
c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7Cisg
ICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAg
ICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcs
OSArMTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJy
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcu
LjFiM2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9v
bCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9
CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQq
IG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2Iw
ZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4
MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwg
RXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2Ut
PmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90Jikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0
M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRT
dG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
cwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBw
aW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRv
cnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3Vs
ZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBw
aW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
OjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9p
ZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmlu
ZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIw
ZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNh
Y2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
KG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NF
dmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRw
UmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJs
b2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6
IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBz
ZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0g
c3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3RE
YXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAg
ICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgp
OwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29u
dGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9u
c2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0Lgog
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3Zl
KGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZm
ZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVm
ZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwot
ICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9
ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0
ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVz
cG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7
CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7
CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEw
NjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNv
ZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBi
aW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAg
ICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFl
NWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJj
ODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2Vy
R2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8
dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAg
LTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3Bv
bnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0
MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1Yjkx
MzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRl
ckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
ICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJj
ZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0
QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEy
MWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29u
c3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAg
ICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIw
MjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0
MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1l
Q29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0
YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwor
ICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVy
LCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uNTRk
YzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
OTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0g
ICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVw
cmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRl
KG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1Jl
cGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBt
X2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMo
Y29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JD
cmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0z
MDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3Jr
TG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1f
cGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAK
ICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAg
LTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYg
KG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAg
ICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlN
RVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJT
dHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3Ig
bXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBo
YW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCAr
ODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsK
KyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1p
dCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRl
IHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVk
IGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVm
ZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0g
ICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERh
dGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1
ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0
YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwg
LTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7
CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0
LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQo
IW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwog
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICpt
X2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVm
ZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAK
LSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5
U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVz
dCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVF
bnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODks
MTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkK
ICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXND
YWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAg
ICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNl
KSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1h
cHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2Uo
KSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNo
YXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJm
YmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0y
MjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7
IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERh
dGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0
MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdU
aW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVu
aXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRp
bmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3Bw
CmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5
MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3
IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2sp
Ci0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYz
YjE5ZGM1MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThh
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3Bv
bnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1
MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUo
YnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIx
NDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29k
ZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAg
RGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29u
c3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6
IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90
JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBD
YWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJl
Y29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJl
Y29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1
cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFh
YTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNk
N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNv
cmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRl
cihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5
OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwg
bV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZl
ciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5k
YXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwg
bV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRj
ODE5My4uZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2Vp
dmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAg
ICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3Vj
Y2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAg
Ly8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAg
ICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAy
NDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAg
ICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVu
dHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkg
eyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNh
bid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNo
ZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAg
IG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9y
ZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRD
b21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIy
YWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUx
ZDdhMDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03
NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1
YTMuLmY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAg
ICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25z
ZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRl
cyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdC
eXRlcygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVh
bSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMu
Z2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMw
YzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4
MTAxZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJl
ZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMx
MDhlNTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2
MGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aApAQCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBk
ZWZhdWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQor
ICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1
ZmZlcik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygp
KSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJl
dHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0K
KyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsg
fQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2
NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0
CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRC
dWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBz
aXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAg
ICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVj
dGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2
YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8v
IFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWdu
ZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJp
dmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNo
aXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1
ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgs
NyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBj
aGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291
cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hp
dmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFz
ZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0
NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAg
ICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28g
dGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0Lgot
ICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCkt
PnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEu
dmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5
YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgz
OGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQg
Ynl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRh
LmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
eyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdh
ZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUy
ZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApA
QCAtNTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291
cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAg
ICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAog
ICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9
CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0g
U2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0
ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2Ni
NGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
ICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAot
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJs
aWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1v
cnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAg
UmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBh
N2U2MGUyMWJkNDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1
ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQog
Ci1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNl
bHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBl
c0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5j
b2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEp
CiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2Rl
ciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0Fu
ZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwog
ICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAot
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVy
JiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNB
bmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEw
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVj
b2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVz
LnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1
ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25z
ZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAg
IFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHks
IFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAg
ICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkg
ewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVy
PFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQ
YXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAt
Mjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJl
dHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
IH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3
LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZm
ZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVy
KGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIo
ZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAg
ICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNv
ZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAy
NWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2
Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBj
bGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50
aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAg
LTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3
OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNh
N2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRh
dGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0
YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0
b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5
MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYx
MmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxG
b250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3Jt
RGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0
YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFj
ZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZv
bnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNj
NGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2
YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFk
ODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdi
NGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApA
QCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5T
U3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsg
bV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNF
bmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMx
YzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcuLjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4
NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4g
dm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25z
dCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+
IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1
bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4g
dm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsK
ICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1
NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAt
MTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0
dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7
CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwx
MCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVk
RGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lk
IEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBz
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkK
IHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0
ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNi
MGI1MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdo
dDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxp
Z2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAg
YXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRX
aXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRl
eHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19X
S0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdo
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdl
Om5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGln
aHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBX
ZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVk
SW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxp
Z2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIw
NTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIy
ZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRh
dGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1
bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRh
ID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgp
OwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+
c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3Vz
dG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5k
ZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0
MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYw
MzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyAr
Mjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5T
UGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9i
amVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFz
dGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBu
aWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBA
IC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVB
bmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBw
YXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNE
YXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRh
ID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXRE
YXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJB
cmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0
NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZElt
YWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNl
ZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0Rh
dGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQs
NyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ry
b3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1f
cHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1f
cHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3
cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRp
bmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0Rh
dGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAg
ICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVm
ZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFn
ZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2Vu
ZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEz
MTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
Rm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVu
dChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZl
SW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBX
ZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFw
SWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBiMDQ1MzlkNjAwNWQ1NDNiYzYyZmI4OTA1OTk2NDY4OTMyYTMzZTkyLi5mM2FkNTc2YjMzM2E5
MzI5NTAwNjNmN2EzYTk0Y2Y1NzczYjQyYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0
ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAg
IGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAg
dm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3
ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3
NjcwMzU0ZmVhZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1l
VGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAs
IG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5m
byhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAm
cGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0
aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTg3
LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0
cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAg
ICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1f
c3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhj
ZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5j
KCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNE
YXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRh
LT5zaXplKCkgfTsKLQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsK
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1f
c3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+
aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIx
YjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVm
ZGFhYjdhNWExYmU2YWRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBA
IC00NCw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE3
LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29t
cGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNw
b25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAg
IFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBm
YWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4u
ZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jiwg
Ym9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9u
RGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVs
ZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmlu
ZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4
MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0
aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NB
bGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCAxYTgxY2NlNDQ1NWViMWE3MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNm
YmQ5ODQ5Yjg0YjZlN2FhZmEzNGNmN2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyAr
MzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24g
d2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVi
b2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAg
ICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZv
Y3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAg
ICB9CkBAIC02NTk5LDcgKzY1OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9y
aWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAg
IGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAg
ICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25T
aGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVs
ZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0
YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1
bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBl
eHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFn
ZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1h
Z2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsg
W3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTli
Y2I2NGVkYmM2Yy4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0x
MzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBi
NDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThi
Yjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0
MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjlj
MWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
U2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYs
IFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYs
IGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4
ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVs
ZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxl
ZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdy
aXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSku
Z2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAg
ICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRp
dGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0
aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9l
ZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6
OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcg
KnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5h
cHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAg
ICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRl
eCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUy
OTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYg
cGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJ
KCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsK
QEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAg
cGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChh
dXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygp
LCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4
IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZi
ODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5h
bDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5h
bDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBE
cm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6
U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1
MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdm
NmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJl
cwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAg
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRh
dGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJl
ZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0g
QVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hh
cmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVm
ZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFy
ZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJl
ZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29u
c3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVm
ZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkp
OwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2Up
LCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwo
KSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5z
dHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0
ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBk
YTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAg
ICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291
cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBh
dGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4
N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3YTI5YmMyYTYw
YzFmZTI3MGM4YTM5ZjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjc1LDcg
KzI3NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFu
ZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYg
KCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1
ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYu
Ljg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9j
ZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9u
c2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNl
cHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlciht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBk
aWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVk
RGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2Nzcu
LjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5
LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxl
bWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1f
cGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAg
ICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1
Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3Ry
ZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93
ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNT
RVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVk
UmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAg
IG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFs
aXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6
OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAg
IG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBA
IHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9p
c0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1E
YXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
KQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAg
ICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6
OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25z
ZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0g
ICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRh
LT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+
dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkp
CiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5k
YXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJm
Y2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8g
RklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIs
NyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9t
YW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFs
U3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxT
dHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZv
aWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcu
CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2Jj
YzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2
YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVm
ZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9y
ZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJC
dWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9u
c2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VE
YXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkK
ICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAg
ICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNo
KQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0
N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1
Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRl
cj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0
YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7Cisg
ICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRi
ZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndp
bGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUy
MmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0
aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lk
IGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAg
ICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsK
ICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1
Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQz
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWlu
UmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5S
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFG
b3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCmluZGV4IGY0MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYy
YTEuLjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5
cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8
dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6
OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2Fy
ZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZl
cikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBu
YXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlw
Y0hhbmRsZTsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYs
NyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAx
ZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2ZmMzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2Zm
NGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVU
b0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVl
ZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi43NmM2MDI4ODgxMzUyMjA3MWEyMjc2OWQ3
M2YyZDNlODA4YmFjM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmll
d0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1f
ZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJ
RCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQor
ICAgICwgbV9idWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ewogfQogCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5k
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFr
ZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkK
IHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAog
dm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJj
MjZjMDdjYjUzZGE4Ny4uYWUwNTBhOTkyM2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEz
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViRnJhbWU7CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
U3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5
YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9u
c2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1h
Z2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1
ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdl
YkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7
CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBh
dXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRh
ICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAg
ICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1
ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVt
b3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0
MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5S
ZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1
cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcg
V2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2
M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIw
NzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
Q29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJv
YXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsK
ICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
KmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUz
MzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7
CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAg
cmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
U3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFW
RShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZk
ZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJl
NzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFS
ZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1h
Z2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilt
aW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2
YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmlu
YWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMy
YzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIy
MDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0
MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBX
ZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVu
dGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5
YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0
ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
Pj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2
YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdl
ODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcg
KzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JU
eXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJm
OTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdj
N2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQog
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1By
aXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNv
dXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5S
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQz
N2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2
ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNw
bGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpw
YXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJd
LT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9
IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0
YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERh
dGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIx
MGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3Qg
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVz
dFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVj
dDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhC
eXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAg
ICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICgh
aGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFk
NTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5
N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2Rl
ciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRy
PE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1l
VHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkg
ewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsK
KyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5
cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3Vy
Y2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVO
YW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNw
b25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2Vi
UmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBm
b3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJs
IGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1p
bWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVL
ZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3By
aXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3By
aXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApA
QCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVu
Y29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVy
KiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51
bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5j
b2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29y
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNv
cmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRi
NjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0
cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5
U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50
Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1l
bW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3
MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBA
CiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgot
ICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4g
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBw
cHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7
CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9O
RyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkw
YzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6
OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRh
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4u
ZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0K
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNm
MS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmco
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAg
dm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAg
IHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFm
YjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyAr
MTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0
cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVY
UEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+
bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0
YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXBy
ZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5
MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJhMTRkOTE0
NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VM
VCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1p
bWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYg
KFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpAQCAtNTk1
LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVh
bSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAgIC8vIEZJ
WE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCBy
aWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBW
ZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFk
KGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkp
LCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZm
ZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAg
ICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9h
ZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwg
dXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlw
ZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVj
OGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZj
ZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2Vi
UmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNv
dXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThm
Mjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBj
bGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0
YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAog
ICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA0ODY4ZDJlMjM2NWZlZTc1MTA0MWY0NGZmM2U2NDBmYzBkYmFkYmFkLi45NGYwNjNjYzA1MmE4
OGMyMTY0ZTQzMjFlNjU4ZjQzOWNhYzczNDU5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjggIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVy
QnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6
Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorCiAyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ29tcGlsYXRpb24gZXJyb3Igb24gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dp
bi5weQppbmRleCBjYjI1NjYzYTMxOTJjOTMwMGZlNTA5YzUyZDNkNjQwMDViOTBjNGVjLi41ZDE5
YjI4ZDFmOGE4ZWExYTFiNDgxNjBmYTNmNTFiM2U5Y2M5NjQ0IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC93aW4ucHkKQEAgLTI0NSw2ICsyNDUsOCBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6
CiAgICAgICAgIGNvbW1hbmRfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkZWJ1Z2dlcl90
ZW1wX2RpcmVjdG9yeSwgImRlYnVnZ2VyLWNvbW1hbmRzLnR4dCIpCiAgICAgICAgIGNvbW1hbmRz
ID0gJycuam9pbihbJy5sb2dvcGVuIC90ICIlc1xcJXMudHh0IlxuJyAlIChjeWdwYXRoKHNlbGYu
cmVzdWx0c19kaXJlY3RvcnkoKSksIHNlbGYuQ1JBU0hfTE9HX1BSRUZJWCksCiAgICAgICAgICAg
ICAnLnNyY3BhdGggIiVzIlxuJyAlIGN5Z3BhdGgoc2VsZi5fd2Via2l0X2ZpbmRlci53ZWJraXRf
YmFzZSgpKSwKKyAgICAgICAgICAgICcuc3ltcGF0aCBjYWNoZSpcbicsCisgICAgICAgICAgICAn
LnN5bXBhdGhcbicsCiAgICAgICAgICAgICAnIWFuYWx5emUgLXZ2XG4nLAogICAgICAgICAgICAg
J34qa3BuXG4nLAogICAgICAgICAgICAgJ3FcbiddKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2Ix
ZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4yMjBhMzgwMDc4MjMxYTVkYjUzNGU3NDMwZGNkOGU3
N2NkMGYwNzdkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQz
LDQ1IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
U3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
U3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1w
dHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZl
ckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXIt
PnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNp
emUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xl
YXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAg
IGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAg
IEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChi
dWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAg
IEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0g
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0
YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJs
ZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5h
cHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
KTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDEwICs4OSwx
MCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAg
Y2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3Js
ZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0
cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0
cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0
cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
c2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVy
LmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAg
ICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAg
ICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0
aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkp
OwpAQCAtMTExLDEwICsxMDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0
ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgw
eDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RG
TW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5h
ciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0s
IHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFj
ZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxk
ZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUg
dGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRf
RVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9u
ZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBF
WFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1
aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICog
NSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxk
ZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7
CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFM
U0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5
KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5w
dHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisg
ICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250
ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwog
fQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc1LDYwICsyMDQsNzAg
QEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdk
J307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCi0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAn
YicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cn
LCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9
OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtl
KCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBh
dXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAg
ICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0
YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7
CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAg
IGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEo
KSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6
ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wi
KTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVm
Z2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7
CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIp
OworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVj
a0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxW
ZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0
dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZl
cih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVy
KHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQo
KSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+
KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1h
a2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQo
KSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0p
LmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3sn
YScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywg
J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30s
IHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3Zl
KGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdi
JywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7
CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAn
ZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0p
LmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2In
LCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7
ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcg
cmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIx
MTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAg
IGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3Ry
aW5nKCksICIiKTsKIH0KIApAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxl
VGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVO
QUJMRShNSFRNTCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4
Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3Nzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0
YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAog
ICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8i
IGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0
YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9E
YXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEg
XSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAg
TlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6
NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRh
KTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRh
IF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3
b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0
aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgp
XSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAg
ICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5n
dGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0
ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hh
ciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEg
KndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAg
ICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsK
ICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29y
bGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0g
ICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChh
dXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShb
c2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0
YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3Vu
dCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAg
ICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4g
cG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBv
c2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0
KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNy
ZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2Vn
bWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEu
c2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQs
IHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVy
LmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5n
RW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxV
LCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445922</attachid>
            <date>2021-12-03 17:01:24 -0800</date>
            <delta_ts>2021-12-03 17:02:34 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211204120122.patch</filename>
            <type>text/plain</type>
            <size>512985</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW01TRV0gRml4IGVyYXNlIHJhbmdlIHRvIHByZXZlbnQgYWNjaWRl
bnRhbCBkZWxldGlvbiBpbiBmaWxlcyB3aXRoIGNoYW5naW5nIGR1cmF0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1NmVhMWU0MGJiNGI3MTYzNTc1MTQ0NTllYmJmY2QwZGM0ODVmMjhlLi4wNDdlNDA3ZmQ2NGY1
NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAor
MjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVy
OjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6
YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpk
YXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNv
ZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAg
ICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BU
YXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3Rl
Ym9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
Y3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0Rl
bGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBEZXJpdmVkU291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4
MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1
bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
IChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1
YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1
NTAyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAy
MS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAg
IChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJB
cmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoK
KwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXSzJdIE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRl
eCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGEx
MzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewog
ICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5p
dGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6
OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41
OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9
IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jl
c3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVU
eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5k
ZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdl
MzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVU
eXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmls
IGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRp
b24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNn
SW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVz
OkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5
NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAg
ICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFT
aXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFk
NDI0Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90
IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNv
cmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVz
cG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0
YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hh
bmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25l
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVy
LT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEp
KTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNv
cmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
IHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRo
UmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRj
aFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7
CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVs
ZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7
CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkg
PSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVz
dC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICsz
NzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0Jv
ZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3Bv
bnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNd
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAg
LTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBS
ZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAg
ICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAg
ICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNj
YmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhj
ZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwg
UmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4m
Jik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNi
ZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJl
c3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkp
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAg
IH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91
c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhi
YThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJl
Njg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5
YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFs
dWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChh
dXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFl
YzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0
Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0
byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5k
YXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlh
S2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsx
MDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJz
dC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5m
aXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAg
IHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29u
ZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5k
ZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4
MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNo
YXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIu
Y29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywg
bG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVm
UHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAo
aXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3Jt
RGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0
YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFr
ZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkg
ewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYg
KGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBh
cmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwog
CiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAg
IGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5i
YXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNi
NzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5
M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlB
c0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsK
IAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEg
PSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlk
OGI3OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAo
bV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsy
NjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAg
ICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1U
b1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEo
V1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBA
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVm
ZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1f
YnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewot
ICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVy
KCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1
ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0
YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURh
dGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBl
KTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4
ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIg
PSBtX2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3Qg
RXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODli
NzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApA
QCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFt
X2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5
QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsK
ICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZl
cnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4g
bV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0
MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBi
b2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0s
Ci0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0
aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQz
YzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2
YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0o
KSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VE
YXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hh
cmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owog
ICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVz
cG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcw
YWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFi
OTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGln
aGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7
CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlh
NjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZl
MjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYs
OCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUw
NDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwog
ICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1
ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFh
MWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwg
U3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5j
b2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAg
fQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXko
ZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25z
dCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3
MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFh
Y2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0
aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3
ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGlu
IGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRl
IGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5
KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExP
RyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlu
ZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkp
OwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2
NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmpl
Y3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBA
IC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0
ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBV
TlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUg
cmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9u
bHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0
b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFu
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXku
aXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
ICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkp
CiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Il9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAg
ICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBp
bmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2Uu
bG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8g
SURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAg
ICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAg
aWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0
ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRz
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAg
ICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
Y3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywg
KmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJp
bmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZm
YjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYx
ZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlU
b1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0
YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRh
KCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXgg
M2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5
NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2Fn
ZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBk
YXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwg
WyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdE
YXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4
OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxl
dGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVl
KCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBA
QCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRG
YWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3Jr
TG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9k
YXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2
MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVS
TCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAg
IFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRh
Q29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4x
MzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBt
b2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3
YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBA
QCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3Jt
RGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3Jl
YXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwog
ICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNm
YmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4
ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVy
ICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAg
ICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAg
ICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAg
ICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5n
KSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRv
U3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250
aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOwor
ICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1
ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRh
YmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJh
ZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQg
Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAg
ICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVu
dD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAg
IGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dl
bmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwg
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
fSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGlu
ZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
bV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0
ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5n
KCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPiht
X2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgy
ZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4
NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3Mg
Q1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3
ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBT
VkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0
aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVt
b3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywg
YSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNi
NzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3
MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNo
aXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29t
bWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3Rl
cDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBj
bGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYs
NyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5n
U3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2
b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25S
YW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxl
Y3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2Vi
QXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5n
IHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
ICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
Rm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAy
ODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5
YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5k
MGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFG
b3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykK
K3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNo
aXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRp
dG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkp
OworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0
cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUx
MWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2Vl
NDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRl
cjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmws
IEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJj
ZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlw
ZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4
dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIz
MDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJM
KERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1l
IHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVU
eXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFw
cGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsK
ICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgp
KSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEz
Y2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBj
NjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
IHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7
Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50
OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJj
ZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVu
ZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICgh
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVU
eXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBA
IC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNo
b3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBy
ZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZl
JiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpA
QCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hp
dmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8g
c3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5h
dGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBj
YW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5k
QWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRp
bmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2
MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSAr
MTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2Vy
dGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZl
LT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQo
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8g
dGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0
aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBv
bmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3Vw
cG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4
YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkg
QEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5l
KGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9j
ZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwg
cmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRp
bmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykK
IHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBA
QCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5z
dGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3
ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRl
IERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5l
dmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2
ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7
IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAg
LCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewog
fQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNp
emUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2
ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpl
dmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9k
YXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIp
Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBt
X2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBk
YXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4
ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9u
c2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsg
fQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
QnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4g
aGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7
CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVu
c2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hl
ZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0
MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYy
NzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIg
QEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAg
ICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29k
ZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdO
YW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVk
ID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2
NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3
ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
ZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
YXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUz
YjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUw
YTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291
cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2Ex
YTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAg
IFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFBy
ZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5y
ZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxv
YWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5
MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6
Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNo
aXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYg
bWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRB
cmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIu
c2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJh
bWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRh
KCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2Vk
QXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNl
RGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFy
c2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFt
ZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNp
emUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpz
dGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0
ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFt
ZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8
QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0
cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xp
ZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYz
ZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1p
bmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0
cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzA4Nzg1YWY4
ZmM5MjRlMzUzZmZkNDgzZGY3Yjk1ZGEyNDQzYWU4NC4uOWU5ZjI5NDY3MmYzZDYyMjUwM2IxZTU1
YjE3OTZmMGNhMWVjZmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJl
ZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRh
dGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
NTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3
NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
IH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
bV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGlj
eTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9s
aWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMx
NDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdS
ZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5l
d1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsK
ICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJj
ZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAg
IChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNl
TG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1
MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3Mg
Q2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNl
OwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBA
IC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xh
c3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZl
cnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9
IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50
KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBz
dGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEw
ZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNl
TG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAg
OiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGlu
ZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpB
bGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAg
ICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJl
c2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApA
QCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQ
b2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNl
dCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRh
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURh
dGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNl
RGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3Vy
Y2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMg
UmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURh
dGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3Jl
IHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdl
ZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJl
ZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5
NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYx
MDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVk
QnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQo
KSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9k
YXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2Rh
dGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJs
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4
NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1
YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFt
YW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sg
b2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJz
ZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
QXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBz
dGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4
ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMy
NjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBA
IFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBh
dGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRp
YyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJj
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBD
bGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgot
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsK
KyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVz
b3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7
CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3Vs
ZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAg
LTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJl
ZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBh
IGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxl
bnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0
aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRo
ZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4
OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJh
Y2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0g
cmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9h
Ymx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIg
d2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcz
NmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1
NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDgg
KzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291
cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXli
ZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9p
ZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVk
MGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3Bv
bnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlw
ZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0
MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRp
b25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIw
YmQzMGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVu
c2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/
LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgp
LmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFT
dGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5n
ZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1h
bmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAg
ICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkg
d3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNl
IHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91
bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7
CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAg
ICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAg
ICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJs
b2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+
Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRl
eCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2Rm
OGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVt
cHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBh
dXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVS
TCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBm
b3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZE
YXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVBy
b3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwog
ICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAg
ICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+
KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVm
IE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAg
ICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFy
eSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291
cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8g
bWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
QEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnks
IGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0
byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAg
ICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1
YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFk
ZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVz
cG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNw
b25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4K
ICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
RnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAg
ICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBk
b2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5v
dGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMg
b3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwi
bm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIg
aGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uOTkzYzJiOGU4MzBk
YzNkNzVjNWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDgg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
KiBwYWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFz
IGFzY2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBB
U0NJSSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOwor
ICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAi
LCBjb250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJs
LnN0cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lp
U3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEu
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0
cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEg
PSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVz
b3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2Rpbmcs
IHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90
ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERh
dGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAg
ICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cg
YXMgaXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JM
RnMuCkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6
OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0
aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAg
bWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAg
ICAgICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAo
aW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2Np
aVN0cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0g
ICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1s
RGF0YS50YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVh
ZTRjYjJkMGJkYjgwMTVlLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsK
ICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRC
b3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9v
bCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29s
IGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJh
bnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3
IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNv
bnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFy
eSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkp
OworICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5l
UmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4
dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAy
KSB7CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0
IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBz
cGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgot
ICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5n
dGgoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxp
bmUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAg
ICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhl
bSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVj
b2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29u
dGVudC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQo
IlxyXG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5Myw5ICsx
OTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBh
dXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1
b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAg
aWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2
NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAg
ICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50
LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRl
cjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCks
IGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAg
ICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZl
LCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlv
bnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdl
bmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWVi
NjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li45MGQxYzZhMmJhOGM0YTQyZTFmZWJk
ODAxZTUyODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVm
ZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2
ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51
bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBi
Y2YwMDBiYTliMTc2Zi4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAg
ICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRl
Y29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEg
Yml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVT
aGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwot
ICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAg
dGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUg
ZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlm
eSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAg
IHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENs
ZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVk
aWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3
ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRi
OWU1NjE2MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVk
RGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVz
b3VyY2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mOWFkNzcx
M2M2MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRG
b250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAg
c3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7
CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6Zmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXpl
KG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1LDcgQEAg
U3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAg
IHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jv
b2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JP
Y2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBp
bmc7CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNv
bnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRl
cyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6
IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05v
dGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmcoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8
Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZv
bnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExv
YWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRl
eCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4xNTRkYjhjYmFiZjNk
NWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxO
ZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYg
cmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYg
d3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21D
dXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24m
LCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyAr
NjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9y
bURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJv
b2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3Vy
ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDli
ZGE2OTRlMGU2ZjZiNTQyLi43YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2
OCw5ICs0NjgsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAg
bV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2Rh
dGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUy
MywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VE
YXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBk
YXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVy
dmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQ
b3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRh
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNl
KCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFU
b1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vs
c2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlm
IHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERG
LgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWRE
YXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZm
ZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5
NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li5kNTEzZTE2Y2JhNWE5NzA3YzMz
YWZjNzkzOTE1MTg2NmZhNDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0
aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAg
ICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1h
Z2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERh
dGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlk
ZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVk
QnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJm
Li44NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVz
b3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29t
ZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBh
bnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhh
dmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5j
cmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1
b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAg
IHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTk2LDcgKzk2LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwg
bGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNy
ZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9u
b3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBz
cGlubmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxE
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBk
ODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYy
NmVjNGNiYWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBT
dGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVk
aXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQyNWNkZGQxODAy
MDkyMmY1ZWRiMjRkNGI5MTIwMDAyLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2Fm
NjE2Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyAr
MzQ0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTEzLDcgKzkxMyw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VF
bmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIp
CiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw4ICs5MjcsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVy
JiBuZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVy
KTsKKyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVk
QnVmZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJj
Mjc4Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkgKzExMiw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6
OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlm
CiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhh
c2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQg
YnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2Fj
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmIwZjc2
YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEy
IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVy
biBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3Vt
ZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0
ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFy
ZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRl
KG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3Vt
ZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1l
dHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5i
MDEyYmE5OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJl
c291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5
NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUw
YzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNh
bGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0g
ICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAg
ICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApA
QCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdU
b09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZl
cnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFs
dWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2Fi
YWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRj
Mzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0
aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
OwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAg
ICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9u
dEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3Qg
U2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdi
NjUuLmI4N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUg
QEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3Jp
cHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVl
YjVjYzM0YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4
dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUw
MzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQz
NDg5NDJlOTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4dFRyYWNrOjpD
YWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRh
OworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVz
b3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAg
ICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNl
Ojp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9V
cGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2
MzE3ODMyMWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lk
IGRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVk
MzQwMGMuLmI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAK
QEAgLTYxLDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2Rpbmco
KSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12
b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxl
U2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5j
b2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCks
IGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNl
KTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3
ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEy
NTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
ZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2
MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFk
MTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZl
ckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJl
ZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwog
CiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNv
dXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNl
UmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFl
OGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUg
bWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJj
ZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGlj
IGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVy
RnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNw
b25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZD
YWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tp
bmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpA
QCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVk
VVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25z
ZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlz
a0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmls
ZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxl
QmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAg
YXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1
ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5k
ZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDVi
YjdhZjkwZWJkYTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBj
bGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZh
dGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBAQCBwcml2
YXRlOgogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJl
ZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxv
YWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4
YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNTJmZmQ1MzdiZmQ2MmZmNjdk
ZWNkNDY0YjY1ZmI2YzkwNTcwNjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5
UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3
Q29udmVydGVyJiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNz
ZWRSZXNwb25zZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5h
bERhdGEtPnJlc2V0KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNl
dFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9u
c2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZl
cnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3Zp
ZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZl
cnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRl
ciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEu
cHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQo
KSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBk
ZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQ
cmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJl
dmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRl
KHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwg
bV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgp
KSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAg
ICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVh
YTYwMzMzY2YuLmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50Owog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IGYzN2QwNTliMGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMuLjZkNTFj
NWU1MTZhM2RiZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMTk1Miw3ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxv
YWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBl
dmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAg
IC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBh
dGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcAppbmRleCAxYTEyMTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYx
Li5kNzUwY2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1
bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGlu
Z05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3Rl
ZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4
dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhh
bmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAg
ICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxl
U2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRo
ZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRk
IG9uZS4KICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250
ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgp
KTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAg
ICB9CiB9CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VU
b1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2Ut
PnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNl
cy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0
YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBT
dHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBl
eHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4z
ZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBS
YXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZmlsZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwog
fTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIx
ZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+
U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAg
IGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlC
dWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVO
YW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
YXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1f
c2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNv
RmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxp
bnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVM
b2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6
ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
ZXllZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3
NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVE
b3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBl
bmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9
IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25z
dCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApp
bmRleCA3ZDI0N2RjZDFhMTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2Uw
Y2RjY2ExM2Q3MzkzNGFhMDQzNmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsK
QEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50
T3JpZ2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZv
cm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJ
blN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KEdUSykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0
cnVjdCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1h
Z2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0
ZWJvYXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShX
SU4pKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJj
ZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dl
c3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlw
ZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5
cGUpOwogICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYp
OwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhj
b25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQz
Zjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0
YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50
cnk+JiYgZGF0YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAg
ICBjb25zdGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lv
biA9IDE7CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1
c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29y
aWdpbjsKICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAg
ZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5i
dWZmZXJTaXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYg
ZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFz
dGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9t
UGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJk
MDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3
YzhjNWZiZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
UGFzdGVib2FyZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQg
c2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFy
ZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJl
YjJjLi5hNzg4ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRD
dXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGlj
OgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2Vu
ZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9y
PFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rp
b25EYXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4
ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2Mzhi
NmE0MTIxZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0
ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBj
b250ZW50T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAg
ICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5n
Rm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3
YTJhMzEwMDc0MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNh
YjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVi
b2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxl
Y3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsK
IHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVj
dCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxh
dGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IElu
Y2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0
ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwg
cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRl
OTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUs
NyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3Io
KSBjb25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1
cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVw
ZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVy
dGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAg
Y2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAg
aWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAg
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmll
d0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVE
YXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5
MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNm
Mzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmlu
aXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZp
ZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRh
OwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGlu
ZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2ht
ZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3
Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFBy
b21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRp
dGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFs
RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1
YjlhZmQzOTAwMzUzNTM4NWQuLmJiZTM5MjNhMjA3YTBlOTM2MTE3MzA3NGY5NzYwN2ZhZDA1ODdk
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMg
KzUwLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxl
RGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIu
c2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOworfQorCiAjaWYgVVNFKEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7
CkBAIC03MywyNiArNzgsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3Np
emUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBt
YXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0g
ICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAg
ICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3Vj
Y2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAg
fQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0
aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdt
ZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsK
QEAgLTEwMywzMCArOTIsMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVu
dHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4g
Y29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdt
ZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1h
a2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1F
OiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNz
ZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBh
ZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1z
IHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9
IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAg
cmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpz
dGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZm
ZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERh
dGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdt
ZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21l
bnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9P
bmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJl
dHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE4MSw2ICsxNTYs
MjEgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVy
Ojppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFy
ZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91
czsKK30KKwogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpA
QCAtMjAyLDEwICsxOTIsOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVu
dHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAg
bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5
UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAg
ICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDIs
MjYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxl
bmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBk
YXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRh
dGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorewor
ICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3Ro
KTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpA
QCAtMjQzLDE3ICsyMzUsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5
KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21l
bnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21l
bnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsK
ICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29u
c3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTM1NSw4ICszNDIsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2Vn
bWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9
IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09
IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVu
dCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9
CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3Vz
QnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsK
KyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3Vv
dXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOwor
ICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQor
ICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0g
dHJ1ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1h
cHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsK
KyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBh
dGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5n
U3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1sw
XS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6
ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAg
ICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7
IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKQEAgLTM5MSw3ICs0MjcsNyBAQCBjb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3Rk
Ojp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRh
U2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRh
YmxlRGF0YSk7CiB9CkBAIC00MDIsNyArNDM4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAg
IHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXpl
KCkgfX07CiB9CkBAIC00NTYsNyArNDkyLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9y
PT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90
IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1h
a2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNp
emVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MTEsNyBAQCBzaXplX3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6
dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYm
IHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21l
bnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50
KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRp
b25XaXRoaW5TZWdtZW50KQpAQCAtNDk5LDE2ICs1MzUsMjEgQEAgY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRh
dGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNo
YXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFT
ZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQs
IGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNp
emUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0
ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNv
bnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNTc1LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAg
ICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkx
ODM5MzY4YWQuLmFjYzZhOTNmMDg0NDU4NDg2ZmJhMGE1NjI2ZmNkNWUzMzVjNTNlM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2Miwx
MzMgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3Vs
ZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmpl
Y3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERh
dGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6
ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNz
IE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
ZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5T
QXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2Vu
ZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgp
IGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsK
LSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElC
KQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1Jl
ZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NU
UkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3du
ZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBj
YXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50
IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVz
aW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBj
YWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlv
biBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29u
c3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBj
b25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1
dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBp
cyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50
OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQg
Y29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
IHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVh
cigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4
X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAK
LSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxl
IGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBU
byBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQu
Ci0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0
YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUo
KSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVT
RShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxH
Qnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBk
YXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQotCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxj
b25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNp
emU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgorICAgIGV4cGxpY2l0IERh
dGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgp
IGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAg
ICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQo
R1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9p
bW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShG
T1VOREFUSU9OKQorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBG
b3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9
OworCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsg
fQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9y
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsg
fQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1v
dmUocHJvdmlkZXIpKSk7IH0KIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+
LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0Fy
cmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0Yp
Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lm
IFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwog
I2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwot
ICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5
aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBT
aGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RE
YXRhKCk7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIC8vIENyZWF0ZXMg
YW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRv
IHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZl
cnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHko
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAg
ICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJh
Y2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBi
ZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsxOTcsMTc2IEBAIHB1YmxpYzoKICAgICB1c2luZyBE
YXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAg
ICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2Vn
bWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhp
cyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBT
dHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9I
ZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0Owot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhcios
IHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29s
IG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7Cisj
ZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OworCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0gICAg
dm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsZWFyKCk7CiAKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBW
ZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1
ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVj
dG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7
CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAg
ICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYK
IH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0
IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5k
IHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMg
U2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4K
KyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4g
YXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7
CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAg
ICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1No
YXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVt
IGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVN
YXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAg
IFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNl
bmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0Owor
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJl
bmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpi
dWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8g
dGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIg
c2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlm
IChidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQo
V1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAg
OiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBw
ZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAg
ICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgp
OyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5
KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVy
ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAg
IHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigp
CisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY4LDIxICszNzYsMjEgQEAg
aW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXpl
X3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
bmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3Qg
U2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUo
KSBjb25zdDsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hh
ciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
I2lmIFVTRShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0
IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIo
Y29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4
NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBw
bGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsK
ICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8u
YXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBu
c0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZv
LmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29y
ay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFy
dHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0
d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNy
Yy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdk
MzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdl
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAK
QEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAg
ICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRh
ID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
bV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAs
IDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2
NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
ICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2
b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmlu
ZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjA1ZTBmOTU3NTk1
YzBiY2ZhNjE1MmM0MjBhMjcwMjJmODUzZTQ3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDE3ICs0MSwxMSBAQCBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxs
b3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVu
Y3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgog
I2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpIHsKLSAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkK
LSAgICAgICAgICAgIHJldHVybiAqZGF0YTsKLSAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNl
Z21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZE
YXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAg
IHJldHVybiBjZkRhdGE7CisgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkK
KyAgICAgICAgcmV0dXJuICpkYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShu
dWxscHRyLCBkYXRhKCksIHNpemUoKSkpOwogfQogI2VuZGlmCiAKQEAgLTcyLDcgKzY2LDYgQEAg
dm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9p
ZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsK
ICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2
MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNh
ZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRG
T1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJl
ZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBp
bWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRp
ZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0
YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHBy
b3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9
CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6
OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRo
U2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYz
NjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50
ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcg
QEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6
ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDoo
Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQo
YnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChj
cmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdt
ZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdt
ZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0u
c2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChh
dXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0
aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0
YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5Q
dHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAg
fSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNy
ZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZm
ZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpz
aXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUw
ODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBw
YXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCBy
ZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpz
b24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpz
b24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXgg
ZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFkZGVlN2VlOGI0ZWVi
ODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGlu
aXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6
ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7
CkBAIC0xOTYsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERh
dGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7
CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBD
aGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJ
ZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJu
IGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAg
IGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9i
amVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpT
T046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5
SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtl
eUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0
YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsK
KyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAg
ICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2lu
ZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVh
Y2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUg
b2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0Fy
cmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwg
aW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0
YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlk
c0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCku
dXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVu
Z3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5k
YXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0K
IAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4
Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5
KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygp
CiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwg
bV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNl
ZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNi
MzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVj
NzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTll
MjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2Rlckds
aWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rp
bmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1f
dmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3Zhcmlh
bnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBk
YXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4u
Y2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4
ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAK
QEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihi
eXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMo
KSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdC
eXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0g
YWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShn
cG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEp
LT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAg
ICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNp
emUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4
Nzk1ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhLCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChw
bGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlv
bkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAot
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwg
Rm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRh
KQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBm
b250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZv
clZlcnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9u
dERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0
KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVh
MjY0MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNp
YmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVu
dGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGlj
YWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmls
aXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0
aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZs
b2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBG
b250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250
PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+
Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0
YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApA
QCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBu
byBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBj
bGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAg
ICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZh
Y2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRh
OwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJl
ZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0
NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAK
QEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4g
TW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVS
TCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3Zl
KHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmlu
ZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RG
TW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBt
X3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
aAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFl
ODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJM
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hh
cmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+
c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAg
ICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05
Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBN
b2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3Zl
KCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWlt
ZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5k
ZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJj
YjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBz
dGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndP
RjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRp
YyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZz
ZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBz
aXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVh
ZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1
aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZm
ZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1
ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50
OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdv
ZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJl
OwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVy
dFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiti
b29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgp
KTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgp
ID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5
NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAg
aWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAg
ICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29u
dmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5k
ZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0
ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdP
RkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUg
d29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4
YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJl
dHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBj
b252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2Zu
dCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYs
IFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBX
T0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBm
b3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRo
ZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRo
ZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAx
M2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5j
b2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgp
KSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVl
ID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQw
NzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNP
Tjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMg
YXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNP
Tihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGlu
aXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0g
ICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAg
IGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7
Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRh
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBi
YXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBp
bml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNl
cmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNz
aFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsK
ICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVk
U2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQo
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRB
VkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVy
LmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAg
ICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAg
ICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25z
ZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkg
cHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNs
YXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VE
YXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3Vy
cmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVz
cG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNw
b25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8g
RklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNh
bGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJh
Y2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAg
ICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElk
ZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFn
ZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNz
aW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hh
bmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BB
TDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVw
b3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9y
eUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3Qp
OwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMu
Zmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAg
ICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6
YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5n
ZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICpl
cnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBA
IC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBt
X2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcg
UmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0
YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5
Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8g
ZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQg
PSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0
RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2
NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAg
ICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQu
Z2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0
SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyAr
MTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1
ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwot
ICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFt
aW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVu
dElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlv
bkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVn
YXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVz
dERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1Jl
cXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAg
aWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkK
LSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50
UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0Rh
dGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFt
aW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVu
dElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlv
bkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
ZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5Q
dHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlh
MTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDks
NyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0
TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3Jl
RGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRh
dGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xv
YWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0
RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShE
SVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZh
bHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2
NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUo
bG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewot
ICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxl
dGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZl
ZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVj
ZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMy
ZTIyZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBl
bmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFy
ZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0
ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAg
ICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3Ry
ZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYw
ZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2
MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVu
dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1
ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmI2
ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsx
NjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVu
dDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
Km1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBt
X3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0K
IAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
IH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAg
ICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgp
LCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCks
ICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpAQCAtMzg4
LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQo
KQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFS
ZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYg
KCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4
MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBk
MTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
MSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJv
X2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmlu
ZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2
OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsy
MzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6
ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNp
emVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVm
ZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVm
ZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJD
RyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+
PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRo
RGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAg
ICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikp
OwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtD
R0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9p
ZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVm
ZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIn
cyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3Jh
cCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQg
SW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNy
ZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VV
cGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3Jl
YXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEu
cmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5
dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25l
IGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBs
b2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92
ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBv
aW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlk
ZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwg
c2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwg
ZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURp
cmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNr
cykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEy
NGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ry
b3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRv
Y3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRl
ciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRl
Q0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50
ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5n
ZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2Rl
NzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5
NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcs
NyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQu
Z2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9w
ZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3
YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4
YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJl
ZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAg
IGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwog
ICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFk
NjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUx
LDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVx
dWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0
Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZv
bnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMp
KSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwog
CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRk
NjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2
MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0
aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
KQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5
ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZl
MDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDVi
NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0
OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFw
KCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9l
bmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VM
b2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNh
aXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShP
UEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0
OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMz
NGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkg
KzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3Rvcigp
IGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBp
c0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcxYmUu
LmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwg
Z3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihH
UmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjku
LjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERh
dGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRh
U3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVk
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAg
IGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0
aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBh
dXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhp
cywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCld
IHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVy
RGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29k
ZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdh
YTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNl
MGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAK
ICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUo
KS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkp
OwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9h
ZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFr
VGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBh
eWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjlj
My4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEg
ewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07
CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0Kiwg
Y29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBn
cG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2
b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBn
c2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRl
eHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAg
ICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkp
OworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0
aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50
ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxl
bWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1h
cmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9h
ZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVy
biBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApp
bmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi42NmUyOTc5ZTNl
Y2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZ
X0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRl
Z29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAg
ICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkp
IHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5Lgog
ICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEp
CkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9M
T0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnks
IEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRh
Iiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVk
KG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRv
IHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVh
dGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBh
eWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3Ry
aW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6
IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZO
ZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgewor
ICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQo
cGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVs
IGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAg
ICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3Bh
eWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5
bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVy
biBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QK
ICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMi
X3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5j
SWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9h
ZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0
YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xk
LCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0
UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZm
ZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5
YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIy
NWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNy
ZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4
ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHRO
UyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1
bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRl
Qm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1
ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNj
ZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291
bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsg
Ly8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFs
dWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJl
Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0Nv
cnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNz
Q29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5m
byA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hh
cGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNl
dDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAg
ICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDog
VGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAot
ICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0
CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5
UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBA
IC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0g
bWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0
aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAg
IHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3Ry
dWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJp
YW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9
CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBj
b25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhB
c3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJs
eSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3
MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2Ugewog
ICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVy
dGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRh
bEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0
aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29u
c3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2Fs
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNh
bEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3Vu
dF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1h
dGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29u
c3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlw
aEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAg
aWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZh
cmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNm
ZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1E
YXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
bWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250
X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4
ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2
Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5
cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1Rf
TUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8
ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAo
KHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVf
dCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlk
YXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNp
emVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBz
aXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0g
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsK
ICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zm
c2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMg
dmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQq
IHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3Np
dGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
UHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9z
aXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZj
YXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBj
YXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlk
YXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNv
bnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcg
KzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVO
QUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNl
IHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwg
dWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJs
ZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAg
ICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNj
YTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5k
UGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBm
b250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRh
YmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2Vk
IGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVu
YW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnRO
YW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVf
dCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFk
ZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5k
YXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAK
IC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRo
ZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQor
UmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFt
ZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTll
MzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90
LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWVi
YjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBA
QCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNl
dDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihi
dWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVy
YWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4g
dmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0K
IH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25T
dWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBP
cGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIg
dmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAot
ICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25z
KEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0g
c3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxl
T2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1
cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3Vw
VGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50
IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3
ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlw
ZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdElu
ZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlz
dCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
bG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1
cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zm
c2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1
cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3Qg
aW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3Vu
dDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZl
YXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVu
VHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsg
KytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkg
JiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3Ry
dWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0
dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBj
b25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25z
dCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVU
YWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0
dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhb
Y291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJh
c2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5n
U3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0y
OTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBP
cGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBj
b25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5U
eXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3
IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3Jp
cHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8
fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcg
QEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwog
ICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0
KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBA
QCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZl
YXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsK
IAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwg
c2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3Qo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNl
dCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0
TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0
T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxM
b29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0
TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRz
KQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAg
ICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUq
IGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBA
IHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVyZTsK
ICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBo
PiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVh
dHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVy
dGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6
IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0
YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6
SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFU
YWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBm
b3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFU
YWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVu
VHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlm
ICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJU
YWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+
KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVl
MjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMg
U3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBj
cmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVj
Nzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNl
bGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdz
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9u
dFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVh
dHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3Jt
RGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEy
ZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0
cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3Jl
YXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dp
bi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2
NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3Jt
T3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNi
NTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3
ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTks
MTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0
PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywg
LTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRG
b250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0
Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNp
emUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAo
UFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9s
ZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlv
bkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5k
ZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBj
NjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVw
bGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBt
X2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25z
dCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkg
eyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1h
Z2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThi
OTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAg
ICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25l
IGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0
YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNv
bnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGln
dW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5i
ZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0
dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1f
ZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6
ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
ZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uYTQyZTViYzRhY2NmMzcy
MmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZl
ZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAn
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19k
ZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0g
aW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAg
ICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9m
aWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0
aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJT
aXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQog
Ci0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJu
IGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcg
KzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURl
Y29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJl
ZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNF
KExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4
ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1
YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMg
PSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAg
IGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0
eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNT
RVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXpl
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAog
ICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3
ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNE
YXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxw
dHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApA
QCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9y
aWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwor
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0
ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFz
dGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAg
ICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0
eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRh
dGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlw
ZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0
aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAg
aWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1F
VHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGlt
YWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0
aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJ
bWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxF
X0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0g
W21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3Vz
dG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3Jp
Z2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygp
KQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUs
NyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVz
ZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9t
RGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBz
ZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJv
YXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFu
ZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlk
ZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5
cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEg
YmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRy
YWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilj
b2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNT
dHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAg
aWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVi
b2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyAr
NzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0
ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0
SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQw
M2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMy
ZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlk
ZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAg
OiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0K
ICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIg
eyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJl
dmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2Nzdm
OGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjEx
NjJjMGUyYjg4ZTlmMWNjMzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBw
ZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3
cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdp
dGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBl
ciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsK
ICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBA
IHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmlu
ZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5
cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYg
dHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5
JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ks
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAg
ICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5
cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ks
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5p
bF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewog
ICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAg
ICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3Jp
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0K
aW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4
NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bh
c3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
d2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVi
b2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRU
eXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2Vi
Q29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlw
ZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRh
OwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2lu
KTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVh
ZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsK
KyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0
ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2
OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlw
ZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2Fy
ZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhb
ZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8
U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRl
KGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2Fy
ZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVi
b2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7
Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0
KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAg
IGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAg
ZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90
IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRh
dGEpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJv
YXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAg
ICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JC
dWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3Ry
aW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAog
ICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEo
KSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAg
ICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JU
eXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0z
NDYsNyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRl
UGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07Cisg
ICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBl
OnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGlj
IFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9h
cmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRl
eCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkg
ewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
UGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0
b21EYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0
RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikp
IHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVl
ZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3
LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAK
ICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29t
cGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4g
bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2Nk
ZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVl
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7
CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJl
IHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxs
aWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAg
ICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwog
CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsK
QEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNv
bXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07
Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAg
IHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCmluZGV4IGEzN2EwZDg3NGY3MmJmOTFiZDUyYzNhYzZiNTg1ZDMzM2YwZmNhM2MuLmIxNzQ5
NzQ0NTRiZjczOTg5MDljYzhiZWE0ZDBhM2I5NTc5YTc4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB1aW50
NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0
aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFz
U2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1l
bnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhf
dD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURh
dGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmgKaW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4u
NDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7
CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7
CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVs
ZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25z
dCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29u
c3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShi
b29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZm
Li44MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFu
ZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFu
ZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBk
YmI4MzgxOTI1MzY5NGFhLi44OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmss
ICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAg
ICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAg
aWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFm
ZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1
MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0K
QEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3Jp
Z2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsg
fQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRh
PiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRh
IHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAg
ICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFll
dCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJl
c3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07
Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9u
c2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
ayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0g
ICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ug
b3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUg
LyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIElu
c3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGlj
aCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxl
bmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwog
CisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZm
ZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRh
c2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwg
YnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSBy
ZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsg
KnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxT
ZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsx
MjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRh
c2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRC
eXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAg
ICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJ
bmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
YXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAg
ICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBA
IC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
ZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0
dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXpl
KCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2Yg
dXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
ID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUy
LDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+
bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1f
Z2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0
OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJm
NmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAo
dm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVz
b3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERl
bGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0g
V1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVk
ICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBk
YXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdl
dCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTop
XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2
OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRo
ZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9i
dWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVy
LmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
IAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBA
QCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0
ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3Qg
YXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJl
bWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkp
KTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0
YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tG
b3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0
YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5k
YXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAg
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAg
ICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3Vu
ZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0
IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7
CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAg
ICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5n
dGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhl
MWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyAr
NzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJs
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxv
YWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0g
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmls
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUz
ZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3
M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
QEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5j
ZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdl
cjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVy
KCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwog
fQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3Vy
bFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMw
OWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1
M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFn
ZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVu
dHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQor
ICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKQEAg
LTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVu
dChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdy
aXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwog
ICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0
YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRl
bXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwor
ICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVk
ID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1w
RmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMu
LjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmls
ZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxl
U2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3Io
KTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNS
ZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0
ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAg
ICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1
IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1
MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZi
Y2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSBy
ZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2Uu
ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5z
cGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFs
aWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcy
LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJp
bmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VU
eXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3Bs
aXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNw
b25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgn
ICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1m
b3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGEx
NmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJi
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwog
fQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMg
QEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRC
dWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1
ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZl
ci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQo
KS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEz
IEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRC
dWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5i
ZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1f
YnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0
KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9p
ZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAo
IW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0Zjgu
ZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCks
IHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVy
JiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2Yx
YTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1
ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIg
PyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9Cisg
ICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZl
cihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxs
cHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
YnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8
ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5z
U2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsg
Ly8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07
CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZm
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li44NWU3
NjM4M2RhYjM1M2E0ZmM0YjA5ZDEyNzcxODVhMDBlOWUyMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExv
YWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9t
T3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC03NSwxMiArNzYsMjEg
QEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkod29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUocmVxdWVzdCksICp0aGlz
LCBvcHRpb25zKTsKIH0KIAorYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYm
IG1fZGF0YS0+aXNOdWxsKCk7Cit9CisKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1
cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewot
ICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAgIGlm
IChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
b250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAgICBj
b250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAg
aWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGln
dW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRl
bnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAo
bV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAg
ICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBw
ZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVj
NmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFlODFlNDVlMmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAg
LTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQotICAgIGJv
b2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vy
cm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGlu
ZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJy
b3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRS
ZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAg
IFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRl
eCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRhOWQ0
YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAK
QEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVu
dD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9k
eSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZd
IChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVG
b3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6
Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVh
YzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4
MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVm
ZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNh
YmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBm
aWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQ
cml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpN
YXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6
Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZm
ZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0
Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVz
dDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAs
IG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAg
LCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0
aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIw
OCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAog
ICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nl
c3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAg
ICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxw
dHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlz
TnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+
ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6
bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVz
KSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJl
IGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4
ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VU
eXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0g
ICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShu
dWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAg
YXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5
QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
NzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJz
KCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1
bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApA
QCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAg
ICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0
YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4
OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJk
NmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5o
IgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4
dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFy
Y2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1
bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNl
QnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAK
aW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFh
OGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERv
Y1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFs
Q2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAg
ICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQw
YTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2Ri
Zjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQq
IG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlw
dG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwog
CiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXgg
N2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2
YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3
LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRv
dWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRh
dGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0
YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/
IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0
YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJl
bmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4
NGM2MzM2YzguLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAg
IFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZl
ci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJl
c3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0
cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZv
aWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpT
eW5jaHJvbm91c0xvYWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYg
c3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVy
cykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVk
RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2Zp
bGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVy
cykpCiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0
ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5
QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlz
LCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkgfQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25u
ZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBt
X3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfQogewpAQCAtMzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAg
ICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hy
b25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUo
cmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5
KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3Bh
cmFtZXRlcnM7CkBAIC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgog
ICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVk
RGF0YQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAq
IE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAg
JiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9i
dWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVk
RGF0YS0+ZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1l
ID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQog
CiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNl
QXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1
aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNw
b25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNN
dWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQg
PSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVk
CkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNT
RVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkg
ewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcg
ZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29u
c3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8g
ODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdp
blByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24g
T1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4K
ICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAot
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVs
bCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAg
ICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0
aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkx
MSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5j
aHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5j
aHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNz
KTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNM
b2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWRE
YXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRo
ZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9i
dWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRh
LT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAg
ICAgfQpAQCAtMTI1NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7
CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25l
dHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZl
RGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVM
RUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBi
ZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5
U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
Mjg3LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFz
Q2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIp
OwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hD
YWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1v
dmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0
b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAg
IG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9u
c2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhp
cyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25l
dHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5
KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAo
bWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1
OTdmOTcuLjM0NWMyZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcs
OCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNz
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9h
ZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVy
IG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2Fj
aGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JD
YWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZm
ZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBi
b29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNj
MmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1f
Ym9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZh
MTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4
MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2lu
ZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JS
ZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNr
JiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4
ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4
Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChh
dXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVj
b2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVj
NGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3Jk
IENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9u
LCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25z
ZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5
ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlv
bmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2Up
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1v
dmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6
ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkp
OwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJj
MjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZj
NjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAg
U3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAg
ICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
ICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAg
ICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9k
eSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVm
ZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0
dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEw
NTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEw
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJl
c3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAo
dmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWlu
ZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEw
ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXpl
KCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkg
eyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8m
IG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBl
bnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNT
dGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkp
Ci0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5h
bFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwor
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAg
fQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmlu
ZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMw
MzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhmMGI3ODA3
ZDc0MTcxYWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6
OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpk
YXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwot
ICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAg
IG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9t
X2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
aW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2Mz
MjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJl
MTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEz
MWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVm
ZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9
CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29w
eShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZl
cihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZm
ZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJu
IG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5
PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3
N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwx
MCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRh
dGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQo
ZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoewor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBj
b25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5
ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3Mg
RW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAg
c3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAx
Yzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcx
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0K
QEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURh
dGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdl
YkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZE
YXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxl
YXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2
YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46
OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Ig
c2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdy
ZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNl
RGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0g
Zm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRl
bUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQx
NjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5
IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFH
ZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYx
YzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5
YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJj
ZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgewor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYt
PmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNl
bGYtPnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNl
PiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVz
b3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRh
MWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0
YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAg
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwg
SGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcg
KzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShS
ZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZm
ZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJj
NDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2
MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVT
aGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIp
CiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAg
LTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIy
MSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIo
RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZp
eGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0
YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkp
OwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQg
ZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5n
ZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0Fu
ZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlw
ZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRh
U2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRh
dGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBk
YXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcg
KzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQu
dXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9k
eVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25z
dCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQu
cmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
YwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZl
ckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29k
ZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNC
dWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25O
dWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBl
KSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5
cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3Rk
OjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFs
PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6
ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYw
MTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlm
aWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFz
cyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1
YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3
ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25h
bDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9u
LnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxl
Y3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikp
OwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJk
NzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3
MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0
ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRh
KiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRh
LnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9u
dEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAg
ICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4
IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5
MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5Mjlj
ZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQy
YjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwog
T0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xv
c2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQog
ICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2lu
Z0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5
YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2Zjhj
NzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBA
QCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0
YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwog
fQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24p
Cit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYg
ZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThk
NGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBj
b25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRv
cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigp
OwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlm
ICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRh
KTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0
ZWU1MjUwNzY0MmRiNGU1NGNmYWRmN2ZlZTNiZjFiN2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3
MmY4ZTY1YjUyY2ZjYjBiNTIxYjdkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3Rv
cmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAg
ICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFs
dWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0
IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9
IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hs
aWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRl
eHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVl
c3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0
b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0Lmlz
TmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdl
YkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1
YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3
ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBE
cm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9u
RGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0
byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChk
YXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3Nl
bGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0
YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlv
bkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3Rv
bURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYu
LjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyAr
MTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVs
ZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5
MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3
YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBp
ZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJp
bmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzpt
X3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAg
ICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4K
ICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwg
dmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAg
ICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bh
c3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
QEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFz
dGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYm
IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YToo
X19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAg
fQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJl
dGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAg
ICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVs
c2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmls
ZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRo
UmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUp
OwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBk
YXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
OwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewog
ICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQYXN0
ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4
Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50
ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFy
RXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5n
ZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBl
bGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2Fy
eShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYjA0NTM5ZDYwMDVkNTQzYmM2MmZiODkwNTk5NjQ2ODkzMmEzM2U5Mi4u
ZjNhZDU3NmIzMzNhOTMyOTUwMDYzZjdhM2E5NGNmNTc3M2I0MmM1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzksNyArMTE3OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRv
d1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3Bv
bmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjU4NTQ3ZDg0ODgxZGM4
MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6
OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVBy
b3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAg
ICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMu
ZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBt
X2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9z
eW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIp
OworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBA
IGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAg
ICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEo
KSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNE
YXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRh
LT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5
bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkp
OwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNj
aGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1f
d2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApp
bmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0
ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3Mg
RnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9z
eW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9z
eW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMz
MTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBA
IC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgp
IG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRp
b25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5
KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3Np
dGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhi
Li42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyAr
MzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5n
ZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9z
aXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1w
bDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VE
YXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVU
b1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KaW5kZXggMWE4MWNjZTQ0NTVlYjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYS4u
MGM2MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdhYWZhMzRjZjdjMzQ5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3
OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFs
bEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBl
OkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6
aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9h
cmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5v
cmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFlFUzsKICAgICAgICAgfQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFz
dGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBj
b25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50
aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAsNyArNzU3MCw3IEBAIC0g
KHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Np
c3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJ
bWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGlt
YWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7
IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVz
ZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1l
LCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJl
c2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURh
dGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53
ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGY4MGM4MjQ5ZGE0NjdiOTQy
MDM1ZTQ2MDZlODk5YmNiNjRlZGJjNmMuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZh
ODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTAz
ZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFiNjZiNTk4ZGI0Ni4uYTdmYjRhYWJjZjc0ZDFiZDcy
OTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQ
cm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3
NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQw
OTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7
CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxX
VEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0
OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJL
aXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6
U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdh
NmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClf
c2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRl
PillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdh
dGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250
cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVI
YW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0g
KHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdE
ZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9j
b250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndy
YXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBm
b3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0
ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRh
LmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7
CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4u
YzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFz
dGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xp
ZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBl
cyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28K
ICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAg
ICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRh
dGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUo
KSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5k
OThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0
aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNv
bnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBl
cmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNv
bnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFs
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRl
NjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQg
Y2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4g
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0g
ICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5k
ZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9j
YXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwm
IHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwog
ICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAg
ICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2ln
bmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVs
ZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1
b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
Y29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3Vz
QnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0
KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShN
SU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5y
ZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVj
Mzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9k
ZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShm
aWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
ICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1
ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFy
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZl
cigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNy
ZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291
cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlm
ODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUK
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwg
Ik5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0
ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9s
bGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRy
b2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0
YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMx
ZThjYzEyMzFhNjc3Li41OGMxYzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0NjE1ODUyYTAyMDg3Zjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1l
bnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBh
Z2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBh
cmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAg
LCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
KQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0
MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7
CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRl
OjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEp
Ci0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVh
bFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVy
cm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTky
OSw4ICs5MjcsOCBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1f
bWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7Cisg
ICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5p
c2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRS
ZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVy
IHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFu
dWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVh
bFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
YnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1l
bnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZi
MzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjM0YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBk
YjNjZDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29y
ZS4KIApAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBp
cyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVy
aW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFp
bnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5k
ZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZkNWYy
MDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3Bv
bnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0g
U2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWls
ZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hP
bihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAo
bV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZm
ZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlm
IChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBk
ODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zl
dGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2gu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2Vi
Q29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVz
cG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNo
IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFh
OWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYw
MjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
IHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJk
RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2
MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9T
dGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVw
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNm
YmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYw
NmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEx
ODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
ZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51
bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsK
KyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJj
ZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0
MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIg
QEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVy
KGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5
cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMu
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJv
YXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJy
aWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikp
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
b3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkg
cHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBA
IC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5m
bzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9h
cmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlw
Y0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYz
ZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgwOGUxZDZlYjJhZTMyYjU3
YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVt
YmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0
aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJp
bmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3
ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5k
ZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1
MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQog
ICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7Cisg
ICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
bV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJl
c2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3
b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5Yjlj
ZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFlMDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQx
ZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBA
IC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsK
ICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMz
NmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIx
ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAg
dm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0g
aW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VT
aXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYz
LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBh
cmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEp
IHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9f
YnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEu
Z2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJj
aGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEw
M2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMx
MzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBj
b25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVu
dExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygp
LmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUo
KSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsK
IH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2
OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkp
CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0
ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYx
OGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0
ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VE
X1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5U
RVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgog
I2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBv
cnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRl
eCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgw
MDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChO
U0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byog
ZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1h
Z2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJk
NjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJh
OGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5h
bDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVx
dWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6
OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0
ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3Qg
aW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8v
IE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJm
OS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVu
dGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJl
YWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBW
ZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4
IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1
MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAg
aW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5k
ZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNi
ZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5T
RGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4p
cmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3
YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEy
NzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNh
dmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAo
W3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNo
YXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2Rv
Y3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2Vk
QXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFy
c2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSku
YXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTVi
YmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0
MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1l
bnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBp
bWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtp
dGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0p
LmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9
CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAx
MjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4
ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRo
Q29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKwor
ICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBO
U1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUg
PSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBp
ZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNE
YXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAg
ICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNv
ZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVz
b3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25z
ZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRh
dGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0
RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAK
ICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
TlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1
ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAg
IFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2
YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5n
LmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRh
LT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7Cisg
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFk
NDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyAr
MzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlT
dHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9
CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYy
MTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5
YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAt
MzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0K
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxN
ZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3Ry
ZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAw
IH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5Mzgx
NzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VM
VCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAg
ICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUy
Yjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYx
MjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBm
aW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVj
NzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4
ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNw
cApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091
dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAg
cmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwor
ICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBI
UkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdl
YkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRj
NGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWRE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNU
UiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEs
IF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNU
UiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBz
dGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1F
KSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9J
bl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAg
ICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0
dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBv
ciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVE
RUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFC
dWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUo
KSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRF
bmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRh
a2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRl
eCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0
NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2Uo
KQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2Vi
UmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1v
cnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2
OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJj
Y2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcg
KzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNDg2OGQyZTIzNjVmZWU3NTEwNDFmNDRmZjNlNjQwZmMwZGJhZGJhZC4u
OTRmMDYzY2MwNTJhODhjMjE2NGU0MzIxZTY1OGY0MzljYWM3MzQ1OSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIx
LTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRl
c3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAor
ICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGF0aW9uIGVycm9yIG9uIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBk
ZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4yMjBhMzgwMDc4MjMxYTVk
YjUzNGU3NDMwZGNkOGU3N2NkMGYwNzdkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgpAQCAtNDMsNTIgKzQzLDQ1IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRf
TlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6
ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNU
X1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVY
UEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6
ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRh
dGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
Ci17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVy
LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNU
X1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBw
ZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBw
ZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVt
Y21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZm
ZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7
CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNp
emUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
XSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikK
QEAgLTk2LDEwICs4OSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0
RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTAp
KTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29y
bGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiks
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhw
ZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRD
b25jYXRlbmF0aW9uKSkpOwpAQCAtMTExLDEwICsxMDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIo
MHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RG
TW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAw
VSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTEsMTcgKzE0NCw1MyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBt
YXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGli
dXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywg
YXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5n
dGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVy
MS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29u
dGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHko
KS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAg
QVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBt
ZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkp
KTsKLSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShs
ZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVp
bGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIx
LmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWls
ZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgq
Y2xvbmUpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBF
Q1RfRVEobGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1
aWxkZXIyLnRha2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkp
OworICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRl
cjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
MS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBF
WFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQg
U2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8v
IEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERh
dGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVs
bCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVy
Mi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAg
RVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAt
MTc1LDYwICsyMDQsNzAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydh
JywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAn
ZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307
Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMy
KSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90
PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0g
eyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywg
J2onLCAnaycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVy
ID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAg
IGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWpr
bCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7Cisg
ICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0g
Y29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgp
LCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVj
a0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5k
YXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwg
a2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+
c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gy
LnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNp
emUoKSwgImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0
cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVy
ID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQot
ICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJl
dHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQp
KTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZm
ZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZl
cjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1
ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2In
LCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAn
ZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsg
J2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwg
eyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgp
KTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAn
YScgfSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmlu
ZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2Uo
KTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVD
VF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRl
ci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShi
dWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWls
ZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxk
ZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1
MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3
ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0
aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVk
LCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChu
aWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0
YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1
aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVs
bG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZG
aWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
ICAgICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRh
U2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAog
ICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQi
IGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3
b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRh
LCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0Rh
dGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21l
bnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkK
KyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBv
c2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1
ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxE
YXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWls
ZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0
YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpl
eHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBp
bmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBl
Y3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFz
dEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6
W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAg
ICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445925</attachid>
            <date>2021-12-03 17:02:42 -0800</date>
            <delta_ts>2021-12-03 19:52:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211204120240.patch</filename>
            <type>text/plain</type>
            <size>136541</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNkYzUyMjc2ZjVjYzAy
ZTFhZDk2MmFkY2FlNWQ2ZmM2MzY0MzJlOC4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkN2Y1YTViYjAxNzAzMzQ4ZDhlYTRmNTFk
Njg0NDNhN2JlNmJjMGY1Li4wNDdlNDA3ZmQ2NGY1NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZiNWM0ZjJiMGZk
ZWUuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0
ZjU2MC4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRh
ID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikK
ICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hh
cmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5p
c051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVz
b3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2
NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4NjdkNDc4M2VjYWExMzZiNTc4MzkyYzI4MGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
QEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBS
ZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50
IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJl
c291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0
YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7
CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jl
cXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUg
cmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0
OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0
ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAt
MzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0K
KyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2Iz
ZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0Yzcx
MjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRh
KCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Ut
PmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkuLmM3NzBkNzY0
MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRh
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNo
ZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcg
ZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3Mywx
MiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVj
dXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJj
ZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBk
YXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVt
b3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0
YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2Ut
PnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4
IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMwZGMz
ZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSog
cGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBh
c2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVND
SUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAg
ICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBz
dHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwg
Y29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5z
dHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJl
YW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0g
cmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291
cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBx
dW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVk
UHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAg
ICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFz
IGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZz
LgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGgg
LSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAg
ICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGlu
ZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlT
dHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAg
IG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmlu
Zy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERh
dGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5
YjZjMzFkNDJjNTMyZi4uNDAyNWI5ODBlNWVlNjgyZGIwNzYyYWZhODZlY2E5ZDkyZmU4NThkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAg
ICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91
bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wg
Y2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBl
bmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5z
ZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkg
Y29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsK
KyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJl
YWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRD
aGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikg
ewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3
ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3Bl
Y2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAg
ICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3Ro
KCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5l
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVu
Y29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0g
Zm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29k
ZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRl
bnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJc
clxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsMTAgKzE5
MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwotICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29k
ZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZh
bGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFi
bGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRl
bnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoK
ICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBl
bmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxp
ZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NjFh
OTlhZTU3NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmLi45MGQxYzZhMmJhOGM0YTQyZTFm
ZWJkODAxZTUyODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qo
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVm
ZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2
ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51
bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcyNzI3
NjdlNTNmYTJmOGM1MC4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQ
YXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZi
OTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2MGNjYWU0
NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCBmNjQz
MzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjLi5mOWFkNzcxM2M2MDNhNmEwYTU2
YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENh
Y2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENh
Y2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDBiN2Vk
OWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQuLjE1NGRiOGNiYWJmM2Q1YTM4ZTA5
NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9f
QVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA3MmMx
OWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllLi43YzAxYzhjYzIzMTE3ODZjNjI0
ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFn
ZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDcgKzUyMyw3IEBAIGJvb2wgQ2Fj
aGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4g
KE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25k
cygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShk
YXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFi
ODczYjEyODM0MmY1Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjks
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFn
ZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAg
ICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0
ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyAr
MTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBj
b25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJ
bWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5k
ZXggODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYy4uODQyYmY1ZjIwZTA2
ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3Vz
RGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZl
cnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0
ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5v
dGlmeSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2Ug
bWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2Fs
bGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5
OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNiYWM0
NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2Rl
RXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xp
ZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFp
bjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4g
bV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkZTc4YWNiMjIxMGExZmY0ZWZhOTZjMDVmODQ5
MTliMjY1ZDAxY2FkLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2FmNjE2Njg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNo
ZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQp
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3
Mjk2ZmZlNzU3Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkg
KzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3Ry
aW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBkZTU3ZjQwNDAzNzI0
YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllLi5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBi
OWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3Vt
ZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhl
IG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVm
MzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMz
NjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCmluZGV4IGVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEuLmI4
N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2ln
bmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsK
IH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2Qu
Ljc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0
KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCBhYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3
MWYzYjI0NzE5YTJhMzJhLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CkBAIC01MSwxMyArNTEs
MTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciog
ZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNl
KCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJh
Y2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4Yjkx
NTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCAr
MzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29k
ZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciop
OworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2Zj
MjVkODUyZGE2YjExZmQzMC4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6
ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgp
OwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYx
Y2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjll
ZmFmNDEyNTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZk
M2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAw
MmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVy
dGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQ
dHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxE
YXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsK
ICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wg
bV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5
NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41MmZmZDUzN2JmZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1
NzA2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAg
ICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsK
ICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRl
cihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5w
cmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252
ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVy
KTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5
UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUs
NyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9
IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAg
IDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlz
KSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJl
dmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3Jp
Z2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0
YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Jlc291
cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9y
ZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3
MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUs
NyArNjUsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3
RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnBy
ZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAg
ICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3
Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQp
CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwog
CiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkp
Ci0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1f
cHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJl
Y2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXgg
MmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5
NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBA
QCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZp
ZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpV
cGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
NWUyNWFlM2U0ODExNmFmNDg0MzljM2ZmMjM4ZWViZDQwNWU1YWM4Zi4uYmJlMzkyM2EyMDdhMGU5
MzYxMTczMDc0Zjk3NjA3ZmFkMDU4N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0xOTIsNyArMTkyLDYgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2Nv
bnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6
ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7CiAgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBw
ZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwpAQCAtMjAzLDcgKzIw
Miw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
KSkgfSk7CkBAIC0yMTMsNyArMjExLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMp
OwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBt
X3NpemUgKz0gZGF0YVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmlu
ZGV4IDU5ZjBjYTJjNDZjMDMyMjA4YjY3ODgzMWMyNDYxY2YxY2IwMmMwZGYuLmFjYzZhOTNmMDg0
NDU4NDg2ZmJhMGE1NjI2ZmNkNWUzMzVjNTNlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTgxLDE5ICsxODEsNiBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotI2lmIFVTRShGT1VO
REFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRp
ZgotI2lmIFVTRShDRikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYp
OwotI2VuZGlmCi0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0KICAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKQEAgLTI0OSw2ICsyMzYsMjAgQEAgcHJv
dGVjdGVkOgogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKICAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhf
dD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdt
ZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwpAQCAtMjc1LDExICsyNzYs
NiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3Ug
Y2FuJ3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5Lgot
ICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0Lgot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LikgPSBkZWxldGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rl
cigpIGNvbnN0OwpAQCAtMzA2LDYgKzMwMiw3MSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAorY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJC
dWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFz
IGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNy
ZWF0ZWQuCisgICAgICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAg
ICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNo
YXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAg
ICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSkgewor
ICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7Cisg
ICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7
CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorCisgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9
CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVt
cHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOwor
ICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAg
ICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigp
OworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1
ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNP
bmVSZWYoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAppbmRleCAwMWMyMWU2ZjVjNjAwMjdiYWQ0ZWNjMjUwNDkzNTgwMjUzY2M2M2YwLi4wNWUwZjk1
NzU5NWMwYmNmYTYxNTJjNDIwYTI3MDIyZjg1M2U0Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC02Niw3ICs2Niw2IEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdl
dExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAzODI5OGEx
ZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcw
YzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0x
OTcsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5p
dERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0y
MDUsNyArMjA1LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlm
IGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQg
fHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRz
LnRha2UoKTsKIAogICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7
CkBAIC0yMjYsMTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2Jq
ZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5n
IGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5h
cHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtl
eUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3Ro
KCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVj
ayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRh
LmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJ
ZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNTEsOCAr
MjUxLDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKIAogICAgIG9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRh
LmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5
SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1
cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xl
YXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1Mzlk
ZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBA
IC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGRmNjJiM2Q3MzYzZWVlNjll
ZWUyNzIyYTRjZDA2YTJkYTQ5YTYwZTguLmI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMx
ODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJl
c291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3Jt
UmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUo
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjEzLDExICsyMTMs
OCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAog
dm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1f
YnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKLSAgICBtX3BhcmVudC5uZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsK
QEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZp
bmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwog
ICAgIGlmICghZGF0YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaAppbmRleCA3YmIyNzQzYTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMyYzUwLi42
NmUyOTc5ZTNlY2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVH
X0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9k
ZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1
YmxpYzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkpIHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUg
c2FmZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciog
aW5pdERhdGEpCkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NB
VF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdf
Y2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVj
dGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAg
IGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXRE
YXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5k
KHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEo
Y29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQog
ICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJh
Y3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9h
ZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZO
ZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXls
b2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3
NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBj
YXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwog
Ci0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAg
ICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNv
bnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXls
b2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7
IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkg
Y29uc3QKICAgICB7CkBAIC05MCw3ICs5Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9u
U3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGU1NjQ3
MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3ZDQ0NDQuLmE0MmU1YmM0YWNjZjM3MjJhNWFm
OWM5MDU0NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFy
a2VyX3B0ciBtYXJrZXIpCiAKIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+
bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlm
ICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEz
ICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUND
UHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmYKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVu
Z3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtl
clNpemUpOworICAgICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9
CiAKLSAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmll
d0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29u
dmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJi
NDIuLjdhNGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04
Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRl
cjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsg
cmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZv
cm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5
NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMw
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3Nl
dFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2Nr
KTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRv
dWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhj
MWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAz
ZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAg
ICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3
ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBz
YWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYg
KG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAg
ICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0
YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsK
KyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBs
b2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwot
ICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uZTJj
MzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkK
KyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNl
KCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRl
eCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5v
dFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRp
b25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVk
WWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBj
bGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nl
c3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8g
fTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwy
MiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBk
YXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBk
YXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAg
IC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGgg
YSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5n
ZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21w
bGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9t
IHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7
CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAg
IAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNr
RGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0
YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBn
ZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rh
c2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0
YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0
YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJl
c3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1
dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0
YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAg
ICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJ
bmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+
IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVz
KQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRh
dGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3Rl
ZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9
IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRS
YW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
Y3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0
NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAg
ICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBl
bmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0
QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1
ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAog
ewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6
OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmls
ZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZl
ci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWlu
c01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgp
LT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0
ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXIm
IGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAz
MTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFm
YTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4
LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0
QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0g
ICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsg
fQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25z
dCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPiht
X2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQo
KSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVu
Y29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRh
aW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCBhNGUwYWIzOWI5ZDY2
ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3Li44NWU3NjM4M2RhYjM1M2E0ZmM0YjA5ZDEyNzcx
ODVhMDBlOWUyMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwo
V1RGTW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21P
cGFxdWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpKQogewogfQogCkBAIC03NSwxOCArNzYsMjMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29ya2VyR2xv
YmFsU2NvcGUsIFdURk1vdmUocmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKIH0KIAorYm9vbCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFt
X2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmIG1fZGF0YS0+aXNOdWxsKCk7Cit9CisK
IGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBB
dG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9l
cnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBpZiAobV9kYXRhKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEg
PSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKLSAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRp
Z3VvdXNEYXRhOwotICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5n
KCkpOwotICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAg
ICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwotICAgICAgICAgICAgfQor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7Cisg
ICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBt
X2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0
YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAg
ICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmlu
ZygpKTsKKyAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAg
ICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTEyMSw5ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JP
Y2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1f
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4
NjNjNy4uMWIzZDc4NzBmMTI4YmZlNTM4ZWU2Yzk4NTljZGFhZTgxZTQ1ZTJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyAr
MzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVp
bGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVu
ZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3Vy
cmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KICAg
ICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vycm9yT2NjdXJy
ZWQ7IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENs
aWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFrUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0MWNjNWUyOWNlOTZiNC4uZmNjYzJhOWVkMjBk
NzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2Fj
aGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFkeVN0YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
c3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAgICwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogICAgICwgbV9wcm9ncmVzc0V2
ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlhNTEh0dHBS
ZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsKQEAgLTIwNyw4ICsyMDgsOCBAQCBSZWY8Qmxv
Yj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAKICAgICAvLyBGSVhNRTog
V2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNl
bmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBz
dGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERh
dGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSkKKyAgICAg
ICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPmV4dHJhY3REYXRhKCk7
CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250
ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25z
ZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAg
ICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUo
ZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOCArMjE5LDcgQEAgUmVm
UHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZl
cigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZm
ZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0
ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0g
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0g
IW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSA/IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNw
b25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsK
ICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+cmVzZXQoKTsK
ICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOCArMTA2
NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJp
bmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAg
ICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDcyODk0YWY2Y2M0N2RiYWU1
ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNhOTVhZWI3NTQ0ODliZDZjZDhjZGM1MDg2MmM4
NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx2
YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAt
MjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9u
c2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBiNzc4OTMyZjI4MWI3MTJlMDBmZjdhZjI2NmFhMzliZGQyMDFjMzJkLi41
NGRjMjBhOWExOTVkNTllODhhZDQ0ZGI1NDA1ZTkyOTMzMTM4ZmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1
ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5j
aHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3Bh
cmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNv
bm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29s
dmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAg
ICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVm
ZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9u
cygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGlt
dW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7
CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2Fk
UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAg
ICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEt
PmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkg
PiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhS
KHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNl
Lm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFy
YW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1h
eGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhl
ZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRp
bWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlm
ICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAg
bV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQo
KTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LT5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAg
ICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
ID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXAKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
bik7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmICghbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkg
Z3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmll
cyBpbiB0aGUgY2FjaGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUg
PSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsK
ICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47
CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAt
MSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5n
dGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0
YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERh
dGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGlt
ZXJJZk5lZWRlZCgpOwpAQCAtOTA5LDExICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG8KICNlbmRpZgogCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERh
dGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLT5nZXQo
KS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1f
YnVmZmVyZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlm
ICghbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBh
c3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4K
LSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAg
ICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS0+Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VM
b2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KQEAgLTEyNTQsMTUgKzEyNTYsMTUgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgp
CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsK
LSAgICBBU1NFUlQobV9idWZmZXJlZERhdGEpOworICAgIEFTU0VSVCghbV9idWZmZXJlZERhdGEt
PmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9idWZm
ZXJlZERhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0s
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEtPmdldCgp
IH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHko
KTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI3
OSw3ICsxMjgxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNo
ZUVudHJ5KCkKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRy
eTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJs
ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JD
YWNoZSkgeworICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAg
ICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3Rvcmlu
ZyBjYWNoZSBlbnRyeSBiZWNhdXNlIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI4NywxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3Nz
T3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVj
dGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAg
ICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3Jp
bmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZl
dGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBX
VEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAg
ICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5j
dXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT50YWtlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRy
eSBpbiBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2Fk
LT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJs
ZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwg
bV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVm
IHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFi
NWJlZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li4zNDVjMmZiYTc5OGM2ZGI2YWRiNzcy
MTEzMGJlMDRmMGRmNDQxNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ3LDggQEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIyNSw3ICsyMjgsNyBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAg
IHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25l
ZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25v
dXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0
cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZv
ck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBk
YzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNl
aXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAg
ICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1
Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAg
IC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAg
ICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEw
MjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXIt
PnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAg
ICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVF
bnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkp
IHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBj
YW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2Fj
aGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1f
cmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jl
c3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlk
Q29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRi
MmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1
MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAt
NzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZjk0ZGU5
MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OC4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5
YTBjYTk3NjcwMzU0ZmVhZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJM
U2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAK
ICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2Zy
YW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUlu
Zm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmND
b21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpA
QCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNl
bnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRh
KQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDkgQEAgYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikg
LT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAo
aXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmICht
X3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBzaXplX3Qgc2l6
ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7
IG1fc3luY0RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAg
ICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RG
TW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBs
ZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQs
IGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcu
LmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVmZGFhYjdhNWExYmU2YWRmNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIEFQ
SSB7CiBjbGFzcyBGcmFtZUluZm87CkBAIC00NCw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVk
ZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkxZWNmNGRmNDYxNTg1MmEw
MjA4N2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQ
bHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAg
ICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFy
YW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZp
cmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBA
IC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxT
dHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywg
bGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lk
IFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3Rh
dGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFt
RXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVy
ZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAg
ICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51
YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJl
YW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5n
ZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQw
LDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51
YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAg
Ly8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAg
aWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVy
ID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwot
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4
ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0
NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3Zl
IHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMg
c25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4g
cnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3Ry
YW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2
ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAg
ICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3Bv
bnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVk
QnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAg
ICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwg
W3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURh
dGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVp
bGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwog
ICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9
LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4
NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
d2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0g
ICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1
ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBt
X2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0
ZTEwLi43NmM2MDI4ODgxMzUyMjA3MWEyMjc2OWQ3M2YyZDNlODA4YmFjM2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAg
LCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZl
ciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9idWZmZXIgeyBtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCkBAIC02OSwxMyArNjksMTIgQEAg
dm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1
ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsK
KyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5k
ZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uYWUwNTBhOTkyM2Vh
N2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC01NCw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29u
c3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFn
ZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1
ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkw
YTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjZkYzRhNDg1MmExNGQ5MTQ0
M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxU
IFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWlt
ZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAo
U1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CkBAIC01OTUs
MTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFt
KiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogICAgICAgICAgICAgLy8gRklY
TUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJp
Z2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZl
Y3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQo
ZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSks
ICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAg
ICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsb2Fk
RGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1
cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBl
LCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzcw
Y2M2Yjc4YTg2MjcxNWRjOThjMjM1YmQ4ZTY2ODJhZWZmNjA1ZS4uOTRmMDYzY2MwNTJhODhjMjE2
NGU0MzIxZTY1OGY0MzljYWM3MzQ1OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29u
dGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMWI3MzYzYTgy
NzI1YzczODU0ZDQ5OTY4NDAzYmMwZmE0NTRhNjc2Ny4uMjIwYTM4MDA3ODIzMWE1ZGI1MzRlNzQz
MGRjZDhlNzdjZDBmMDc3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQ5
LDcgKzQ5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09m
TWlzc2luZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZl
ci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7CiAgICAg
RVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKQEAg
LTcyLDI0ICs3MiwxNiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKICAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsK
LSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsK
LSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOwotfQotCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQog
ewotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9O
VUxMKGNvbnRpZ3VvdXNCdWZmZXIpOwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY29udGlndW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBidWZmZXItPmFw
cGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAg
RVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUo
KSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAg
LTk3LDEwICs4OSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0
YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsK
KyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRH
b29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0
ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25j
YXRlbmF0aW9uKSkpOwpAQCAtMTEyLDEwICsxMDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0
MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJl
ZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2
ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTIsMTcgKzE0NCw1MyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNz
YSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMg
cHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJj
dSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEo
dGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFp
biBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4K
LSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1j
bXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+YXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEo
bGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjbG9u
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1aWxkZXIyLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVpbGRl
cjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsKKyAgICBFWFBF
Q1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxkZXIgaXMgbm93
IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hh
ciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
MSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAg
IGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIx
LnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVm
ZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNU
X0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlk
ZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5
KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0
aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJM
ZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTgwLDE5ICsyMDgsMjEgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9
IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScs
ICdqJywgJ2snLCAnbCcgfTsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKLSAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEp
KTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAg
ICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKICAgICBhdXRvIGdoMSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3
KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wg
PSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1
b3VzQnVmZmVyLT5kYXRhKCk7CiAgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYp
OworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAg
ICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJj
ZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRh
KCksIGdoMS5zaXplKCksICJnaCIpOwpAQCAtMjAxLDYgKzIzMSw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNp
emUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUo
KSwgImFiY2RlZmdoaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXpl
KCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCks
ICJnaGlqa2wiKTsKICAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CiAgICAg
Y2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7
CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwpAQCAtMjA5LDE2ICsy
NDAsMTggQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAo
VmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAg
ICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1
ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAg
ICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKICAgICBhdXRvIGJ1ZmZlcjEgPSBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVm
ZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEu
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdk
J319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVm
ZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAn
YycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsg
eyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKwog
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0
KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwogICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdj
JyB9IH0pLmdldCgpKTsKQEAgLTIyOCwxMSArMjYxLDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBpc0VxdWFsVG8pCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAg
ICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEo
cmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVz
ZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVy
LT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKQEAgLTI1MywxNiArMjg4LDE3IEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVy
LnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7
CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNp
emUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9
CiAKICNpZiBFTkFCTEUoTUhUTUwpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA4NzI5MDM0NWI0MmYxMGM5
YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3Li44YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdi
NmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCwxNiArNDgsMTcgQEAgc3RhdGljIHZv
aWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNB
cnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJh
eSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBi
dWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0
ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3Js
ZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEs
IHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVy
LmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0
YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02OSwzMiAr
NzAsMzIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogewogICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAg
ICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0
aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRl
cywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAq
d29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAg
ICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAg
ICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwog
ICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3Js
ZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAg
ICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1
dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtz
ZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRh
W3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50
LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIgcG9zaXRpb24gPSAwOwogICAg
ICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBw
b3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdl
dFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9z
aXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQo
KS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3Jl
bWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdt
ZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5z
aXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwg
c2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21l
RGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIu
Z2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJV
RShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdF
bmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUs
IGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445926</attachid>
            <date>2021-12-03 17:04:11 -0800</date>
            <delta_ts>2021-12-03 19:52:26 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211204120409.patch</filename>
            <type>text/plain</type>
            <size>512985</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW01TRV0gRml4IGVyYXNlIHJhbmdlIHRvIHByZXZlbnQgYWNjaWRl
bnRhbCBkZWxldGlvbiBpbiBmaWxlcyB3aXRoIGNoYW5naW5nIGR1cmF0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1NmVhMWU0MGJiNGI3MTYzNTc1MTQ0NTllYmJmY2QwZGM0ODVmMjhlLi4wNDdlNDA3ZmQ2NGY1
NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAor
MjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVy
OjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6
YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpk
YXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNv
ZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAg
ICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BU
YXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3Rl
Ym9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
Y3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0Rl
bGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBEZXJpdmVkU291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4
MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1
bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
IChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1
YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1
NTAyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAy
MS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAg
IChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJB
cmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoK
KwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXSzJdIE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRl
eCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGEx
MzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewog
ICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5p
dGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6
OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41
OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9
IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jl
c3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVU
eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5k
ZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdl
MzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVU
eXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmls
IGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRp
b24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNn
SW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVz
OkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5
NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAg
ICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFT
aXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFk
NDI0Yy4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90
IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNv
cmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVz
cG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0
YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hh
bmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25l
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVy
LT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEp
KTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNv
cmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuZmV0Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
IHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRo
UmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRj
aFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7
CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVs
ZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7
CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkg
PSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVz
dC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICsz
NzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0Jv
ZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3Bv
bnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNd
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAg
LTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBS
ZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAg
ICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAg
ICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNj
YmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhj
ZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwg
UmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4m
Jik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNi
ZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJl
c3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkp
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAg
IH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91
c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhi
YThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJl
Njg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5
YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFs
dWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChh
dXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFl
YzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0
Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0
byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5k
YXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlh
S2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsx
MDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJz
dC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5m
aXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAg
IHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29u
ZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5k
ZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4
MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNo
YXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIu
Y29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywg
bG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVm
UHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAo
aXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3Jt
RGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0
YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFr
ZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkg
ewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYg
KGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBh
cmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwog
CiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAg
IGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5i
YXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNi
NzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5
M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlB
c0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsK
IAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEg
PSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlk
OGI3OWZmNjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAo
bV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsy
NjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAg
ICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1U
b1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEo
V1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBA
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVm
ZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1f
YnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewot
ICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVy
KCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1
ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCks
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0
YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURh
dGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBl
KTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4
ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIg
PSBtX2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3Qg
RXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODli
NzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApA
QCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFt
X2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5
QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsK
ICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZl
cnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4g
bV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0
MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBi
b2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0s
Ci0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0
aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAg
ICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQz
YzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2
YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0o
KSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VE
YXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hh
cmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owog
ICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVz
cG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcw
YWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFi
OTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGln
aGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7
CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlh
NjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZl
MjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYs
OCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUw
NDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwog
ICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1
ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFh
MWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwg
U3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5j
b2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAg
fQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXko
ZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25z
dCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3
MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFh
Y2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0
aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3
ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGlu
IGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZv
ciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRl
IGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5
KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExP
RyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlu
ZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkp
OwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2
NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmpl
Y3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBA
IC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0
ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBV
TlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUg
cmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9u
bHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0
b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFu
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXku
aXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
ICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkp
CiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Il9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAg
ICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBp
bmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2Uu
bG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktl
eTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07
CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8g
SURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAg
ICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAg
aWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0
ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRz
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAg
ICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
Y3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywg
KmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJp
bmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZm
YjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYx
ZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlU
b1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0
YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRh
KCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXgg
M2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5
NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2Fn
ZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBk
YXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwg
WyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdE
YXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4
OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxl
dGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVl
KCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBA
QCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRG
YWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3Jr
TG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9k
YXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2
MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVS
TCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAg
IFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRh
Q29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4x
MzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBt
b2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291
bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3
YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBA
QCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3Jt
RGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3Jl
YXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwog
ICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNm
YmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4
ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVy
ICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAg
ICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAg
ICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAg
ICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5n
KSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRv
U3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250
aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOwor
ICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1
ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRh
YmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJh
ZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQg
Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAg
ICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVu
dD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAg
IGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dl
bmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwg
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9v
bD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
fSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGlu
ZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
bV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0
ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5n
KCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPiht
X2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgy
ZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4
NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3Mg
Q1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3
ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBT
VkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0
aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVt
b3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywg
YSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNi
NzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3
MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNo
aXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29t
bWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3Rl
cDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBj
bGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYs
NyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5n
U3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2
b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25S
YW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxl
Y3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2Vi
QXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5n
IHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
ICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
Rm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAy
ODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5
YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5k
MGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFG
b3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykK
K3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNo
aXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRp
dG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkp
OworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0
cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUx
MWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2Vl
NDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRl
cjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmws
IEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJj
ZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlw
ZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4
dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIz
MDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJM
KERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1l
IHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVU
eXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFw
cGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsK
ICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgp
KSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEz
Y2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBj
NjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
IHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7
Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50
OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJj
ZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7
IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVu
ZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICgh
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVU
eXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBA
IC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNo
b3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBy
ZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZl
JiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpA
QCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hp
dmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8g
c3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5h
dGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBj
YW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5k
QWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRp
bmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2
MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSAr
MTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2Vy
dGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZl
LT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQo
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8g
dGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0
aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBv
bmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3Vw
cG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4
YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkg
QEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5l
KGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9j
ZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwg
cmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRp
bmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykK
IHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBA
QCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5z
dGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3
ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRl
IERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5l
dmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2
ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7
IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAg
LCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewog
fQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNp
emUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2
ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpl
dmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9k
YXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIp
Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBt
X2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBk
YXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4
ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNv
dXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9u
c2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsg
fQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
QnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4g
aGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7
CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVu
c2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hl
ZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0
MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYy
NzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIg
QEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAg
ICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29k
ZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdO
YW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVk
ID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2
NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3
ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
ZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
YXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUz
YjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUw
YTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291
cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2Ex
YTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAg
IFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFBy
ZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5y
ZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxv
YWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5
MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6
Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNo
aXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYg
bWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRB
cmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIu
c2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJh
bWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRh
KCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2Vk
QXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNl
RGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFy
c2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFt
ZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNp
emUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpz
dGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0
ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFt
ZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8
QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0
cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRB
cmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xp
ZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYz
ZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1p
bmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0
cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzA4Nzg1YWY4
ZmM5MjRlMzUzZmZkNDgzZGY3Yjk1ZGEyNDQzYWU4NC4uOWU5ZjI5NDY3MmYzZDYyMjUwM2IxZTU1
YjE3OTZmMGNhMWVjZmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJl
ZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRh
dGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
NTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3
NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
IH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
bV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGlj
eTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9s
aWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMx
NDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdS
ZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5l
d1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsK
ICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJj
ZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAg
IChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNl
TG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1
MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3Mg
Q2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNl
OwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBA
IC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xh
c3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZl
cnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9
IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50
KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBz
dGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEw
ZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNl
TG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAg
OiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGlu
ZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpB
bGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAg
ICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJl
c2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApA
QCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQ
b2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNl
dCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRh
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURh
dGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNl
RGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3Vy
Y2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMg
UmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURh
dGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3Jl
IHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdl
ZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJl
ZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5
NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYx
MDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVk
QnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQo
KSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9k
YXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2Rh
dGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJs
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4
NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1
YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFt
YW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sg
b2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJz
ZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
QXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBz
dGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4
ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMy
NjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBA
IFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBh
dGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRp
YyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJj
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBD
bGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgot
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsK
KyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVz
b3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7
CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3Vs
ZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAg
LTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJl
ZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBh
IGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxl
bnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0
aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRo
ZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4
OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJh
Y2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0g
cmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9h
Ymx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIg
d2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcz
NmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1
NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDgg
KzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291
cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXli
ZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9p
ZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVk
MGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3Bv
bnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlw
ZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0
MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRp
b25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIw
YmQzMGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVu
c2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/
LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgp
LmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFT
dGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5n
ZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1h
bmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAg
ICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkg
d3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNl
IHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91
bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7
CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAg
ICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAg
ICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJs
b2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+
Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRl
eCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2Rm
OGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVt
cHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBh
dXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVS
TCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBm
b3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZE
YXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVBy
b3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwog
ICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAg
ICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+
KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0
eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVm
IE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAg
ICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFy
eSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291
cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8g
bWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
QEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnks
IGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0
byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAg
ICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1
YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFk
ZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVz
cG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNw
b25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4K
ICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
RnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAg
ICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBk
b2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5v
dGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMg
b3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwi
bm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIg
aGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uOTkzYzJiOGU4MzBk
YzNkNzVjNWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDgg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
KiBwYWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFz
IGFzY2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBB
U0NJSSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOwor
ICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAi
LCBjb250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJs
LnN0cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lp
U3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEu
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0
cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEg
PSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVz
b3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2Rpbmcs
IHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90
ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERh
dGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAg
ICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cg
YXMgaXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JM
RnMuCkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6
OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0
aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAg
bWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAg
ICAgICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAo
aW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2Np
aVN0cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0g
ICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1s
RGF0YS50YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVh
ZTRjYjJkMGJkYjgwMTVlLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsK
ICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRC
b3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9v
bCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29s
IGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJh
bnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3
IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNv
bnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFy
eSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkp
OworICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5l
UmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4
dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAy
KSB7CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0
IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBz
cGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgot
ICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5n
dGgoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxp
bmUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAg
ICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhl
bSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVj
b2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29u
dGVudC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQo
IlxyXG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5Myw5ICsx
OTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBh
dXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1
b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAg
aWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2
NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAg
ICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50
LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRl
cjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCks
IGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAg
ICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZl
LCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlv
bnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdl
bmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWVi
NjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li45MGQxYzZhMmJhOGM0YTQyZTFmZWJk
ODAxZTUyODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVm
ZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2
ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51
bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBi
Y2YwMDBiYTliMTc2Zi4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAg
ICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRl
Y29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEg
Yml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVT
aGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwot
ICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAg
dGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUg
ZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlm
eSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAg
IHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENs
ZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVk
aWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3
ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRi
OWU1NjE2MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVk
RGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVz
b3VyY2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mOWFkNzcx
M2M2MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRG
b250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAg
c3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7
CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6Zmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXpl
KG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1LDcgQEAg
U3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAg
IHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jv
b2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JP
Y2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBp
bmc7CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNv
bnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRl
cyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6
IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05v
dGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmcoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8
Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZv
bnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExv
YWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRl
eCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4xNTRkYjhjYmFiZjNk
NWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxO
ZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYg
cmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYg
d3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21D
dXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24m
LCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyAr
NjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9y
bURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJv
b2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3Vy
ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDli
ZGE2OTRlMGU2ZjZiNTQyLi43YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2
OCw5ICs0NjgsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAg
bV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2Rh
dGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUy
MywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VE
YXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBk
YXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVy
dmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQ
b3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRh
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNl
KCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFU
b1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vs
c2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlm
IHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERG
LgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWRE
YXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZm
ZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5
NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li5kNTEzZTE2Y2JhNWE5NzA3YzMz
YWZjNzkzOTE1MTg2NmZhNDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0
aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAg
ICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1h
Z2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERh
dGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlk
ZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVk
QnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJm
Li44NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVz
b3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29t
ZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBh
bnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhh
dmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5j
cmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1
b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAg
IHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTk2LDcgKzk2LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwg
bGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNy
ZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9u
b3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBz
cGlubmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxE
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBk
ODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYy
NmVjNGNiYWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBT
dGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVk
aXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQyNWNkZGQxODAy
MDkyMmY1ZWRiMjRkNGI5MTIwMDAyLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2Fm
NjE2Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyAr
MzQ0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTEzLDcgKzkxMyw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VF
bmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIp
CiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw4ICs5MjcsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVy
JiBuZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVy
KTsKKyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVk
QnVmZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJj
Mjc4Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkgKzExMiw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6
OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlm
CiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhh
c2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQg
YnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0
RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2Fj
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmIwZjc2
YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEy
IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVy
biBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3Vt
ZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0
ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFy
ZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRl
KG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3Vt
ZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1l
dHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5i
MDEyYmE5OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJl
c291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5
NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUw
YzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNh
bGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0g
ICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAg
ICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApA
QCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdU
b09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZl
cnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFs
dWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2Fi
YWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRj
Mzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0
aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
OwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAg
ICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9u
dEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3Qg
U2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdi
NjUuLmI4N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUg
QEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3Jp
cHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVl
YjVjYzM0YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4
dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUw
MzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQz
NDg5NDJlOTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4dFRyYWNrOjpD
YWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRh
OworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVz
b3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAg
ICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNl
Ojp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9V
cGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2
MzE3ODMyMWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lk
IGRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVk
MzQwMGMuLmI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAK
QEAgLTYxLDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2Rpbmco
KSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12
b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxl
U2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5j
b2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCks
IGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNl
KTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3
ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEy
NTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
ZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2
MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFk
MTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZl
ckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJl
ZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwog
CiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNv
dXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNl
UmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFl
OGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUg
bWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJj
ZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGlj
IGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVy
RnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNw
b25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZD
YWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tp
bmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpA
QCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVk
VVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25z
ZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlz
a0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmls
ZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxl
QmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAg
YXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1
ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5k
ZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDVi
YjdhZjkwZWJkYTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBj
bGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZh
dGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBAQCBwcml2
YXRlOgogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJl
ZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxv
YWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4
YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNTJmZmQ1MzdiZmQ2MmZmNjdk
ZWNkNDY0YjY1ZmI2YzkwNTcwNjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5
UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3
Q29udmVydGVyJiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNz
ZWRSZXNwb25zZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5h
bERhdGEtPnJlc2V0KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNl
dFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9u
c2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZl
cnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3Zp
ZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZl
cnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRl
ciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEu
cHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQo
KSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBk
ZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQ
cmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJl
dmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRl
KHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwg
bV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgp
KSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAg
ICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVh
YTYwMzMzY2YuLmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50Owog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IGYzN2QwNTliMGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMuLjZkNTFj
NWU1MTZhM2RiZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMTk1Miw3ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxv
YWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBl
dmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAg
IC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBh
dGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcAppbmRleCAxYTEyMTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYx
Li5kNzUwY2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1
bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGlu
Z05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3Rl
ZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4
dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhh
bmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAg
ICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxl
U2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRo
ZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRk
IG9uZS4KICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250
ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgp
KTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAg
ICB9CiB9CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VU
b1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2Ut
PnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNl
cy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0
YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBT
dHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBl
eHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4z
ZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBS
YXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZmlsZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwog
fTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIx
ZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+
U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAg
IGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlC
dWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVO
YW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
YXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1f
c2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNv
RmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxp
bnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVM
b2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6
ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
ZXllZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3
NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVE
b3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBl
bmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9
IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25z
dCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApp
bmRleCA3ZDI0N2RjZDFhMTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2Uw
Y2RjY2ExM2Q3MzkzNGFhMDQzNmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsK
QEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50
T3JpZ2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZv
cm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9y
bWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJ
blN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KEdUSykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0
cnVjdCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1h
Z2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0
ZWJvYXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShX
SU4pKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJj
ZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dl
c3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlw
ZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5
cGUpOwogICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYp
OwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhj
b25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQz
Zjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0
YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50
cnk+JiYgZGF0YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAg
ICBjb25zdGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lv
biA9IDE7CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1
c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29y
aWdpbjsKICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAg
ZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5i
dWZmZXJTaXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYg
ZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFz
dGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9t
UGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJk
MDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3
YzhjNWZiZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
UGFzdGVib2FyZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQg
c2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFy
ZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJl
YjJjLi5hNzg4ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRD
dXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGlj
OgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2Vu
ZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9y
PFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rp
b25EYXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4
ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2Mzhi
NmE0MTIxZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0
ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBj
b250ZW50T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAg
ICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5n
Rm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3
YTJhMzEwMDc0MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNh
YjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVi
b2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxl
Y3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsK
IHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVj
dCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxh
dGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IElu
Y2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0
ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwg
cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRl
OTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUs
NyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3Io
KSBjb25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1
cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVw
ZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVy
dGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAg
Y2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAg
aWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAg
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmll
d0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVE
YXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5
MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNm
Mzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmlu
aXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZp
ZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRh
OwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGlu
ZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2ht
ZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3
Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFBy
b21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRp
dGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFs
RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1
YjlhZmQzOTAwMzUzNTM4NWQuLmJiZTM5MjNhMjA3YTBlOTM2MTE3MzA3NGY5NzYwN2ZhZDA1ODdk
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMg
KzUwLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxl
RGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIu
c2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOworfQorCiAjaWYgVVNFKEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7
CkBAIC03MywyNiArNzgsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3Np
emUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBt
YXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0g
ICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAg
ICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3Vj
Y2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAg
fQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0
aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdt
ZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsK
QEAgLTEwMywzMCArOTIsMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVu
dHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4g
Y29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdt
ZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1h
a2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1F
OiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNz
ZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBh
ZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1z
IHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9
IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAg
cmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpz
dGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZm
ZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERh
dGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdt
ZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21l
bnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9P
bmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJl
dHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE4MSw2ICsxNTYs
MjEgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVy
Ojppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFy
ZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91
czsKK30KKwogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpA
QCAtMjAyLDEwICsxOTIsOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVu
dHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAg
bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5
UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAg
ICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDIs
MjYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxl
bmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBk
YXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRh
dGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorewor
ICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3Ro
KTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpA
QCAtMjQzLDE3ICsyMzUsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5
KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21l
bnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21l
bnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsK
ICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29u
c3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTM1NSw4ICszNDIsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2Vn
bWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9
IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09
IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVu
dCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9
CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3Vz
QnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsK
KyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3Vv
dXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOwor
ICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQor
ICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0g
dHJ1ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1h
cHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsK
KyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBh
dGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5n
U3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1sw
XS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6
ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAg
ICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7
IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKQEAgLTM5MSw3ICs0MjcsNyBAQCBjb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3Rk
Ojp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRh
U2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRh
YmxlRGF0YSk7CiB9CkBAIC00MDIsNyArNDM4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAg
IHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXpl
KCkgfX07CiB9CkBAIC00NTYsNyArNDkyLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9y
PT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90
IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1h
a2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNp
emVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MTEsNyBAQCBzaXplX3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6
dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYm
IHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21l
bnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50
KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRp
b25XaXRoaW5TZWdtZW50KQpAQCAtNDk5LDE2ICs1MzUsMjEgQEAgY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRh
dGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNo
YXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFT
ZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQs
IGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNp
emUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0
ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNv
bnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNTc1LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAg
ICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkx
ODM5MzY4YWQuLmFjYzZhOTNmMDg0NDU4NDg2ZmJhMGE1NjI2ZmNkNWUzMzVjNTNlM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2Miwx
MzMgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3Vs
ZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmpl
Y3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERh
dGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6
ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNz
IE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
ZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5T
QXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2Vu
ZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgp
IGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsK
LSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElC
KQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1Jl
ZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NU
UkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3du
ZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBj
YXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50
IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVz
aW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBj
YWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlv
biBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29u
c3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBj
b25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1
dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBp
cyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50
OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQg
Y29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
IHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVh
cigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4
X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAK
LSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxl
IGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBU
byBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQu
Ci0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0
YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUo
KSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVT
RShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxH
Qnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBk
YXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQotCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxj
b25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNp
emU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgorICAgIGV4cGxpY2l0IERh
dGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgp
IGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAg
ICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQo
R1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9p
bW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShG
T1VOREFUSU9OKQorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBG
b3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9
OworCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsg
fQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9y
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsg
fQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1v
dmUocHJvdmlkZXIpKSk7IH0KIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+
LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0Fy
cmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0Yp
Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lm
IFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwog
I2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwot
ICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5
aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBT
aGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RE
YXRhKCk7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIC8vIENyZWF0ZXMg
YW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRv
IHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZl
cnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHko
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAg
ICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJh
Y2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBi
ZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsxOTcsMTc2IEBAIHB1YmxpYzoKICAgICB1c2luZyBE
YXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAg
ICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2Vn
bWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhp
cyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBT
dHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9I
ZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0Owot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhcios
IHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29s
IG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7Cisj
ZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OworCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0gICAg
dm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsZWFyKCk7CiAKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBW
ZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1
ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVj
dG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7
CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAg
ICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYK
IH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0
IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5k
IHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMg
U2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4K
KyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4g
YXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7
CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAg
ICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1No
YXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVt
IGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVN
YXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAg
IFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNl
bmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0Owor
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJl
bmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpi
dWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8g
dGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIg
c2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlm
IChidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQo
V1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAg
OiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBw
ZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAg
ICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgp
OyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5
KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVy
ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAg
IHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigp
CisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY4LDIxICszNzYsMjEgQEAg
aW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXpl
X3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
bmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3Qg
U2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUo
KSBjb25zdDsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hh
ciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
I2lmIFVTRShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0
IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIo
Y29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4
NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBw
bGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsK
ICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8u
YXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBu
c0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZv
LmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29y
ay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFy
dHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0
d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNy
Yy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdk
MzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdl
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAK
QEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAg
ICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRh
ID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
bV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAs
IDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2
NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
ICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2
b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmlu
ZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjA1ZTBmOTU3NTk1
YzBiY2ZhNjE1MmM0MjBhMjcwMjJmODUzZTQ3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDE3ICs0MSwxMSBAQCBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxs
b3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVu
Y3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgog
I2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpIHsKLSAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkK
LSAgICAgICAgICAgIHJldHVybiAqZGF0YTsKLSAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNl
Z21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZE
YXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAg
IHJldHVybiBjZkRhdGE7CisgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkK
KyAgICAgICAgcmV0dXJuICpkYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShu
dWxscHRyLCBkYXRhKCksIHNpemUoKSkpOwogfQogI2VuZGlmCiAKQEAgLTcyLDcgKzY2LDYgQEAg
dm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9p
ZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsK
ICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2
MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNh
ZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRG
T1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJl
ZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBp
bWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRp
ZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0
YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHBy
b3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9
CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6
OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRo
U2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYz
NjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50
ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcg
QEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6
ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDoo
Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQo
YnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChj
cmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdt
ZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdt
ZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0u
c2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChh
dXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0
aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0
YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5Q
dHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAg
fSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNy
ZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRl
TlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZm
ZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpz
aXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUw
ODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBw
YXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCBy
ZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpz
b24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpz
b24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXgg
ZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFkZGVlN2VlOGI0ZWVi
ODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGlu
aXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6
ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7
CkBAIC0xOTYsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERh
dGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7
CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBD
aGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJ
ZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJu
IGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAg
IGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9i
amVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpT
T046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5
SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtl
eUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0
YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsK
KyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAg
ICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2lu
ZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVh
Y2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUg
b2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0Fy
cmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwg
aW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0
YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlk
c0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCku
dXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVu
Z3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5k
YXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0K
IAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4
Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5
KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygp
CiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwg
bV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNl
ZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNi
MzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVj
NzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTll
MjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2Rlckds
aWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rp
bmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1f
dmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3Zhcmlh
bnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBk
YXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4u
Y2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4
ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAK
QEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihi
eXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMo
KSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdC
eXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0g
YWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShn
cG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEp
LT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAg
ICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNp
emUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4
Nzk1ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhLCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChw
bGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlv
bkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAot
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwg
Rm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRh
KQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBm
b250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZv
clZlcnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9u
dERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0
KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVh
MjY0MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNp
YmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVu
dGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGlj
YWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmls
aXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0
aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZs
b2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBG
b250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250
PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+
Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0
YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApA
QCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBu
byBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBj
bGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAg
ICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZh
Y2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRh
OwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJl
ZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0
NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAK
QEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4g
TW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVS
TCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3Zl
KHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmlu
ZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RG
TW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBt
X3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
aAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFl
ODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJM
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hh
cmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+
c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAg
ICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05
Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBN
b2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3Zl
KCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWlt
ZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5k
ZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJj
YjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBz
dGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndP
RjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRp
YyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZz
ZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBz
aXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVh
ZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1
aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZm
ZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1
ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50
OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdv
ZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJl
OwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVy
dFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiti
b29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgp
KTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgp
ID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5
NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAg
aWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAg
ICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29u
dmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5k
ZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0
ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdP
RkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUg
d29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4
YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJl
dHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBj
b252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2Zu
dCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYs
IFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBX
T0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBm
b3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRo
ZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRo
ZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAx
M2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5j
b2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgp
KSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVl
ID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQw
NzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNP
Tjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMg
YXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNP
Tihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGlu
aXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0g
ICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAg
IGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7
Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRh
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBi
YXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBp
bml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNl
cmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNz
aFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsK
ICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVk
U2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQo
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRB
VkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVy
LmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAg
ICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAg
ICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25z
ZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkg
cHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNs
YXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VE
YXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3Vy
cmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVz
cG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNw
b25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8g
RklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNh
bGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJh
Y2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAg
ICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElk
ZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFn
ZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNz
aW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hh
bmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BB
TDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVw
b3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9y
eUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3Qp
OwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMu
Zmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAg
ICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6
YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5n
ZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICpl
cnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBA
IC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBt
X2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcg
UmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0
YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5
Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8g
ZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQg
PSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0
RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2
NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAg
ICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQu
Z2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0
SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyAr
MTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1
ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwot
ICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFt
aW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVu
dElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlv
bkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVn
YXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVz
dERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1Jl
cXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAg
aWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkK
LSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50
UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0Rh
dGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFt
aW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVu
dElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlv
bkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
ZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5Q
dHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlh
MTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDks
NyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0
TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3Jl
RGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRh
dGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xv
YWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0
RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShE
SVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZh
bHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2
NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUo
bG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewot
ICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxl
dGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZl
ZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVj
ZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMy
ZTIyZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBl
bmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFy
ZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0
ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAg
ICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3Ry
ZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYw
ZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2
MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVu
dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1
ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmI2
ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsx
NjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVu
dDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
Km1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBt
X3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0K
IAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
IH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAg
ICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgp
LCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCks
ICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpAQCAtMzg4
LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQo
KQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFS
ZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYg
KCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4
MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBk
MTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
MSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJv
X2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmlu
ZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2
OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsy
MzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6
ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNp
emVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVm
ZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVm
ZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJD
RyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+
PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRo
RGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAg
ICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikp
OwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtD
R0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9p
ZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVm
ZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIn
cyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3Jh
cCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQg
SW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNy
ZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VV
cGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3Jl
YXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEu
cmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5
dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25l
IGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBs
b2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92
ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBv
aW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlk
ZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwg
c2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwg
ZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURp
cmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNr
cykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEy
NGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ry
b3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRv
Y3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRl
ciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRl
Q0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50
ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5n
ZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2Rl
NzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5
NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcs
NyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQu
Z2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9w
ZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3
YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4
YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJl
ZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAg
IGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwog
ICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFk
NjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUx
LDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVx
dWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0
Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZv
bnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMp
KSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwog
CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRk
NjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2
MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0
aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
KQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5
ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZl
MDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDVi
NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0
OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFw
KCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9l
bmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VM
b2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNh
aXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShP
UEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0
OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMz
NGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkg
KzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3Rvcigp
IGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBp
c0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcxYmUu
LmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwg
Z3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihH
UmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjku
LjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERh
dGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRh
U3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVk
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAg
IGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0
aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBh
dXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhp
cywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCld
IHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVy
RGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29k
ZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdh
YTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNl
MGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAK
ICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUo
KS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkp
OwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9h
ZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFr
VGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBh
eWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjlj
My4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEg
ewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07
CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0Kiwg
Y29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBn
cG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2
b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBn
c2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRl
eHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAg
ICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkp
OworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0
aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50
ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxl
bWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1h
cmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9h
ZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVy
biBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApp
bmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi42NmUyOTc5ZTNl
Y2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZ
X0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRl
Z29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAg
ICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkp
IHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5Lgog
ICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEp
CkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9M
T0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnks
IEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRh
Iiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVk
KG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRv
IHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVh
dGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBh
eWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3Ry
aW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6
IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZO
ZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgewor
ICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQo
cGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVs
IGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAg
ICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3Bh
eWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5
bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVy
biBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QK
ICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMi
X3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5j
SWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9h
ZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0
YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xk
LCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0
UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZm
ZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5
YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIy
NWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNy
ZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4
ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHRO
UyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1
bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRl
Qm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1
ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNj
ZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291
bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsg
Ly8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFs
dWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJl
Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0Nv
cnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNz
Q29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5m
byA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hh
cGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNl
dDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAg
ICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDog
VGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAot
ICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0
CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5
UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBA
IC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0g
bWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0
aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAg
IHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3Ry
dWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJp
YW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9
CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBj
b25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhB
c3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJs
eSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3
MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2Ugewog
ICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVy
dGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRh
bEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0
aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29u
c3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2Fs
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNh
bEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3Vu
dF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1h
dGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29u
c3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlw
aEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAg
aWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZh
cmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNm
ZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1E
YXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
bWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250
X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4
ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2
Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5
cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1Rf
TUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8
ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAo
KHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVf
dCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlk
YXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNp
emVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBz
aXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0g
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsK
ICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zm
c2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMg
dmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQq
IHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3Np
dGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
UHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9z
aXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZj
YXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBj
YXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlk
YXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNv
bnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcg
KzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVO
QUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNl
IHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwg
dWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJs
ZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAg
ICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNj
YTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5k
UGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBm
b250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRh
YmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2Vk
IGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVu
YW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnRO
YW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVf
dCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFk
ZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5k
YXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAK
IC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRo
ZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQor
UmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFt
ZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTll
MzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90
LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWVi
YjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBA
QCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNl
dDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihi
dWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVy
YWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4g
dmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0K
IH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25T
dWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBP
cGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIg
dmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAot
ICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25z
KEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0g
c3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxl
T2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1
cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3Vw
VGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50
IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3
ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlw
ZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdElu
ZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlz
dCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
bG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1
cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zm
c2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1
cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3Qg
aW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3Vu
dDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZl
YXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVu
VHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsg
KytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkg
JiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3Ry
dWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0
dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBj
b25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25z
dCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVU
YWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0
dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhb
Y291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJh
c2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5n
U3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0y
OTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBP
cGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBj
b25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5U
eXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3
IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3Jp
cHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8
fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcg
QEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwog
ICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0
KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBA
QCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZl
YXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsK
IAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwg
c2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3Qo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNl
dCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0
TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0
T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxM
b29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0
TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRz
KQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAg
ICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUq
IGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBA
IHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVyZTsK
ICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBo
PiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVh
dHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVy
dGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6
IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0
YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6
SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFU
YWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBm
b3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFU
YWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVu
VHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlm
ICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJU
YWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+
KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVl
MjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMg
U3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBj
cmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVj
Nzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNl
bGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdz
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9u
dFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVh
dHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3Jt
RGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEy
ZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0
cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3Jl
YXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dp
bi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2
NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3Jt
T3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNi
NTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3
ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTks
MTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0
PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywg
LTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRG
b250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0
Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNp
emUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAo
UFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9s
ZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlv
bkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5k
ZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBj
NjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVw
bGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBt
X2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25z
dCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkg
eyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1h
Z2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThi
OTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAg
ICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25l
IGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0
YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNv
bnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGln
dW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5i
ZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0
dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1f
ZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6
ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
ZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uYTQyZTViYzRhY2NmMzcy
MmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZl
ZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAn
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19k
ZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0g
aW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAg
ICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9m
aWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0
aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJT
aXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQog
Ci0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJu
IGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcg
KzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURl
Y29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJl
ZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNF
KExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4
ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1
YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMg
PSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAg
IGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0
eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNT
RVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXpl
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAog
ICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3
ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNE
YXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxw
dHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApA
QCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9y
aWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwor
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0
ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFz
dGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAg
ICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0
eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRh
dGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlw
ZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0
aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAg
aWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1F
VHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGlt
YWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0
aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJ
bWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxF
X0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0g
W21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3Vz
dG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3Jp
Z2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygp
KQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUs
NyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVz
ZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9t
RGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBz
ZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJv
YXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFu
ZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlk
ZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5
cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEg
YmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRy
YWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilj
b2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNT
dHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAg
aWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVi
b2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyAr
NzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0
ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0
SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQw
M2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMy
ZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlk
ZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAg
OiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0K
ICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIg
eyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJl
dmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2Nzdm
OGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjEx
NjJjMGUyYjg4ZTlmMWNjMzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBw
ZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3
cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdp
dGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBl
ciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsK
ICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBA
IHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmlu
ZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5
cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYg
dHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5
JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ks
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAg
ICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5
cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ks
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5p
bF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewog
ICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAg
ICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3Jp
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0K
aW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4
NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bh
c3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
d2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVi
b2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRU
eXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2Vi
Q29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlw
ZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRh
OwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2lu
KTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVh
ZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsK
KyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0
ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2
OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlw
ZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2Fy
ZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhb
ZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8
U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRl
KGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2Fy
ZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVi
b2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7
Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0
KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAg
IGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAg
ZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90
IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRh
dGEpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJv
YXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAg
ICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JC
dWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3Ry
aW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAog
ICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEo
KSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAg
ICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JU
eXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0z
NDYsNyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRl
UGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07Cisg
ICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBl
OnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGlj
IFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9h
cmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRl
eCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkg
ewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
UGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0
b21EYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0
RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikp
IHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVl
ZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3
LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAK
ICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29t
cGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4g
bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2Nk
ZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVl
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7
CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJl
IHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxs
aWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAg
ICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwog
CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsK
QEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNv
bXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07
Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAg
IHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCmluZGV4IGEzN2EwZDg3NGY3MmJmOTFiZDUyYzNhYzZiNTg1ZDMzM2YwZmNhM2MuLmIxNzQ5
NzQ0NTRiZjczOTg5MDljYzhiZWE0ZDBhM2I5NTc5YTc4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB1aW50
NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0
aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFz
U2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1l
bnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhf
dD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURh
dGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmgKaW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4u
NDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7
CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7
CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVs
ZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25z
dCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29u
c3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShi
b29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZm
Li44MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFu
ZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFu
ZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBk
YmI4MzgxOTI1MzY5NGFhLi44OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmss
ICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAg
ICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAg
aWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFm
ZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1
MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0K
QEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3Jp
Z2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsg
fQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRh
PiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRh
IHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAg
ICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFll
dCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJl
c3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07
Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9u
c2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
ayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0g
ICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ug
b3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUg
LyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIElu
c3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGlj
aCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxl
bmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwog
CisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZm
ZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRh
c2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwg
YnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSBy
ZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsg
KnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxT
ZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsx
MjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRh
c2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRC
eXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAg
ICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJ
bmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
YXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAg
ICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBA
IC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
ZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0
dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXpl
KCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2Yg
dXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
ID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUy
LDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+
bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1f
Z2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0
OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJm
NmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAo
dm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVz
b3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERl
bGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0g
V1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVk
ICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBk
YXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdl
dCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTop
XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2
OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRo
ZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9i
dWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVy
LmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
IAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBA
QCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0
ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3Qg
YXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJl
bWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkp
KTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0
YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tG
b3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0
YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5k
YXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAg
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAg
ICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3Vu
ZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0
IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7
CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAg
ICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5n
dGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhl
MWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyAr
NzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJs
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxv
YWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0g
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmls
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUz
ZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3
M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
QEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5j
ZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdl
cjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVy
KCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwog
fQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3Vy
bFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMw
OWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1
M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFn
ZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVu
dHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQor
ICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKQEAg
LTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVu
dChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdy
aXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwog
ICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0
YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRl
bXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwor
ICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVk
ID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1w
RmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMu
LjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmls
ZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxl
U2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3Io
KTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNS
ZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0
ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAg
ICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1
IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1
MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZi
Y2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSBy
ZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2Uu
ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5z
cGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFs
aWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcy
LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJp
bmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VU
eXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3Bs
aXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNw
b25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgn
ICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1m
b3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGEx
NmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJi
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwog
fQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMg
QEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRC
dWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1
ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZl
ci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQo
KS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEz
IEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRC
dWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5i
ZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1f
YnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0
KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9p
ZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAo
IW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0Zjgu
ZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCks
IHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVy
JiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2Yx
YTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1
ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIg
PyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9Cisg
ICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZl
cihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxs
cHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
YnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8
ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5z
U2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsg
Ly8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07
CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZm
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li44NWU3
NjM4M2RhYjM1M2E0ZmM0YjA5ZDEyNzcxODVhMDBlOWUyMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExv
YWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9t
T3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC03NSwxMiArNzYsMjEg
QEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkod29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUocmVxdWVzdCksICp0aGlz
LCBvcHRpb25zKTsKIH0KIAorYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYm
IG1fZGF0YS0+aXNOdWxsKCk7Cit9CisKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1
cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewot
ICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAgIGlm
IChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
b250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAgICBj
b250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAg
aWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGln
dW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRl
bnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAo
bV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAg
ICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBw
ZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVj
NmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFlODFlNDVlMmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAg
LTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQotICAgIGJv
b2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vy
cm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGlu
ZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJy
b3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRS
ZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAg
IFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRl
eCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRhOWQ0
YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAK
QEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVu
dD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9k
eSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZd
IChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVG
b3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6
Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVh
YzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4
MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVm
ZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNh
YmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBm
aWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQ
cml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpN
YXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6
Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZm
ZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0
Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVz
dDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAs
IG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAg
LCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0
aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIw
OCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAog
ICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nl
c3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAg
ICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxw
dHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlz
TnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+
ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6
bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVz
KSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJl
IGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4
ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VU
eXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0g
ICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShu
dWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAg
YXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5
QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
NzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJz
KCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1
bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApA
QCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAg
ICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0
YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4
OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJk
NmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5o
IgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4
dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFy
Y2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1
bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNl
QnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAK
aW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFh
OGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERv
Y1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFs
Q2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAg
ICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQw
YTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2Ri
Zjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQq
IG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlw
dG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwog
CiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXgg
N2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2
YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3
LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRv
dWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRh
dGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0
YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/
IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0
YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJl
bmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4
NGM2MzM2YzguLjU0ZGMyMGE5YTE5NWQ1OWU4OGFkNDRkYjU0MDVlOTI5MzMxMzhmZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAg
IFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZl
ci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJl
c3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0
cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZv
aWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpT
eW5jaHJvbm91c0xvYWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYg
c3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVy
cykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVk
RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2Zp
bGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVy
cykpCiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0
ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5
QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlz
LCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkgfQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25u
ZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBt
X3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfQogewpAQCAtMzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAg
ICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hy
b25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUo
cmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5
KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3Bh
cmFtZXRlcnM7CkBAIC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgog
ICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVk
RGF0YQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAq
IE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAg
JiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9i
dWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVk
RGF0YS0+ZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1l
ID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQog
CiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNl
QXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1
aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNw
b25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNN
dWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQg
PSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVk
CkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNT
RVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkg
ewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcg
ZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29u
c3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8g
ODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdp
blByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24g
T1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4K
ICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAot
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVs
bCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAg
ICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0
aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkx
MSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5j
aHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5j
aHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNz
KTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNM
b2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWRE
YXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRo
ZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9i
dWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRh
LT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAg
ICAgfQpAQCAtMTI1NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7
CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25l
dHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZl
RGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVM
RUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBi
ZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5
U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
Mjg3LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFz
Q2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIp
OwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hD
YWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1v
dmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0
b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAg
IG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9u
c2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhp
cyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25l
dHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5
KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAo
bWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1
OTdmOTcuLjM0NWMyZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcs
OCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNz
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9h
ZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVy
IG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2Fj
aGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JD
YWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZm
ZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBi
b29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNj
MmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1f
Ym9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZh
MTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4
MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2lu
ZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JS
ZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNr
JiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4
ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4
Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChh
dXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVj
b2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVj
NGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3Jk
IENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9u
LCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25z
ZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5
ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlv
bmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2Up
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1v
dmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6
ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkp
OwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJj
MjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZj
NjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAg
U3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAg
ICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
ICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAg
ICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9k
eSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVm
ZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0
dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEw
NTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEw
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJl
c3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAo
dmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWlu
ZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEw
ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXpl
KCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkg
eyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8m
IG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBl
bnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNT
dGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkp
Ci0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5h
bFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwor
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAg
fQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmlu
ZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMw
MzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhmMGI3ODA3
ZDc0MTcxYWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6
OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpk
YXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwot
ICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAg
IG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9t
X2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
aW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2Mz
MjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJl
MTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEz
MWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVm
ZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9
CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29w
eShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZl
cihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZm
ZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJu
IG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5
PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3
N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwx
MCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRh
dGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQo
ZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoewor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBj
b25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5
ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3Mg
RW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAg
c3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAx
Yzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcx
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0K
QEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURh
dGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdl
YkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZE
YXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxl
YXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2
YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46
OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Ig
c2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdy
ZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNl
RGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0g
Zm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRl
bUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQx
NjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5
IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFH
ZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYx
YzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5
YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJj
ZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgewor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYt
PmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNl
bGYtPnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNl
PiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVz
b3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRh
MWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0
YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAg
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwg
SGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcg
KzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShS
ZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZm
ZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJj
NDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2
MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVT
aGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIp
CiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAg
LTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIy
MSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIo
RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZp
eGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0
YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkp
OwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQg
ZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5n
ZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0Fu
ZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlw
ZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRh
U2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRh
dGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBk
YXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcg
KzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQu
dXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9k
eVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25z
dCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQu
cmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
YwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZl
ckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29k
ZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNC
dWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25O
dWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBl
KSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5
cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3Rk
OjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFs
PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6
ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYw
MTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlm
aWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFz
cyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1
YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3
ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25h
bDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9u
LnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxl
Y3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikp
OwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJk
NzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3
MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0
ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRh
KiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRh
LnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9u
dEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAg
ICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4
IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5
MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5Mjlj
ZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQy
YjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwog
T0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xv
c2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQog
ICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2lu
Z0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5
YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2Zjhj
NzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBA
QCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0
YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwog
fQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24p
Cit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYg
ZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThk
NGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBj
b25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRv
cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigp
OwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlm
ICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRh
KTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0
ZWU1MjUwNzY0MmRiNGU1NGNmYWRmN2ZlZTNiZjFiN2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3
MmY4ZTY1YjUyY2ZjYjBiNTIxYjdkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3Rv
cmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAg
ICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFs
dWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0
IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9
IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hs
aWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRl
eHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVl
c3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0
b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0Lmlz
TmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdl
YkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1
YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3
ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBE
cm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9u
RGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0
byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChk
YXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3Nl
bGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0
YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlv
bkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3Rv
bURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYu
LjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyAr
MTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVs
ZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5
MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3
YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBp
ZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJp
bmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzpt
X3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAg
ICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4K
ICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwg
dmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAg
ICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bh
c3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
QEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFz
dGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYm
IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YToo
X19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAg
fQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJl
dGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAg
ICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVs
c2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmls
ZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRo
UmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUp
OwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBk
YXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
OwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewog
ICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQYXN0
ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4
Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50
ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFy
RXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5n
ZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBl
bGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2Fy
eShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYjA0NTM5ZDYwMDVkNTQzYmM2MmZiODkwNTk5NjQ2ODkzMmEzM2U5Mi4u
ZjNhZDU3NmIzMzNhOTMyOTUwMDYzZjdhM2E5NGNmNTc3M2I0MmM1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzksNyArMTE3OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRv
d1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3Bv
bmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjU4NTQ3ZDg0ODgxZGM4
MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6
OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVBy
b3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAg
ICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMu
ZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBt
X2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9z
eW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIp
OworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBA
IGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAg
ICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEo
KSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNE
YXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRh
LT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5
bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkp
OwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNj
aGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1f
d2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApp
bmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0
ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3Mg
RnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9z
eW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9z
eW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMz
MTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBA
IC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgp
IG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRp
b25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5
KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3Np
dGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhi
Li42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyAr
MzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5n
ZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9z
aXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1w
bDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VE
YXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVU
b1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KaW5kZXggMWE4MWNjZTQ0NTVlYjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYS4u
MGM2MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdhYWZhMzRjZjdjMzQ5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3
OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFs
bEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBl
OkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6
aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9h
cmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5v
cmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFlFUzsKICAgICAgICAgfQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFz
dGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBj
b25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50
aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAsNyArNzU3MCw3IEBAIC0g
KHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Np
c3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJ
bWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGlt
YWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7
IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVz
ZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1l
LCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJl
c2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURh
dGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53
ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGY4MGM4MjQ5ZGE0NjdiOTQy
MDM1ZTQ2MDZlODk5YmNiNjRlZGJjNmMuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZh
ODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTAz
ZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFiNjZiNTk4ZGI0Ni4uYTdmYjRhYWJjZjc0ZDFiZDcy
OTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQ
cm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3
NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQw
OTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7
CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxX
VEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0
OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJL
aXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6
U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdh
NmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClf
c2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRl
PillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdh
dGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250
cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVI
YW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0g
KHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdE
ZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9j
b250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndy
YXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBm
b3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0
ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRh
LmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7
CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4u
YzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFz
dGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xp
ZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBl
cyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28K
ICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAg
ICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRh
dGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUo
KSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5k
OThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0
aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNv
bnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBl
cmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNv
bnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFs
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRl
NjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQg
Y2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4g
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0g
ICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5k
ZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9j
YXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwm
IHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwog
ICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAg
ICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2ln
bmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVs
ZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1
b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
Y29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3Vz
QnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0
KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShN
SU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5y
ZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVj
Mzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9k
ZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShm
aWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
ICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1
ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFy
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZl
cigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNy
ZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291
cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlm
ODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUK
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwg
Ik5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0
ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9s
bGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRy
b2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0
YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMx
ZThjYzEyMzFhNjc3Li41OGMxYzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0NjE1ODUyYTAyMDg3Zjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1l
bnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBh
Z2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBh
cmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAg
LCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
KQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0
MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7
CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRl
OjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEp
Ci0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVh
bFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVy
cm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTky
OSw4ICs5MjcsOCBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1f
bWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7Cisg
ICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5p
c2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRS
ZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVy
IHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFu
dWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVh
bFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
YnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1l
bnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZi
MzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjM0YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBk
YjNjZDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29y
ZS4KIApAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBp
cyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVy
aW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFp
bnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5k
ZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZkNWYy
MDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3Bv
bnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0g
U2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWls
ZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hP
bihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAo
bV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZm
ZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlm
IChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBk
ODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zl
dGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2gu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2Vi
Q29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVz
cG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNo
IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFh
OWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYw
MjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
IHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJk
RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2
MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9T
dGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVw
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNm
YmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYw
NmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEx
ODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
ZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51
bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsK
KyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJj
ZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0
MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIg
QEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVy
KGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5
cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMu
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJv
YXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJy
aWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikp
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
b3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkg
cHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBA
IC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5m
bzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9h
cmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlw
Y0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYz
ZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgwOGUxZDZlYjJhZTMyYjU3
YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVt
YmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0
aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJp
bmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3
ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5k
ZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1
MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQog
ICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7Cisg
ICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
bV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJl
c2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3
b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5Yjlj
ZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFlMDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQx
ZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBA
IC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsK
ICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMz
NmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIx
ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAg
dm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0g
aW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VT
aXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYz
LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBh
cmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEp
IHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9f
YnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEu
Z2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJj
aGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEw
M2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMx
MzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBj
b25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVu
dExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygp
LmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUo
KSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsK
IH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2
OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkp
CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0
ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYx
OGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0
ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VE
X1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5U
RVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgog
I2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBv
cnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRl
eCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgw
MDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChO
U0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byog
ZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1h
Z2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJk
NjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJh
OGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5h
bDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVx
dWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6
OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0
ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3Qg
aW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8v
IE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJm
OS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVu
dGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJl
YWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBW
ZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4
IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1
MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAg
aW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5k
ZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNi
ZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5T
RGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4p
cmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3
YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEy
NzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNh
dmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAo
W3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNo
YXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2Rv
Y3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2Vk
QXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFy
c2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSku
YXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTVi
YmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0
MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1l
bnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBp
bWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtp
dGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0p
LmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9
CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAx
MjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4
ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRo
Q29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKwor
ICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBO
U1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUg
PSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBp
ZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNE
YXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAg
ICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNv
ZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVz
b3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25z
ZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRh
dGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0
RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAK
ICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
TlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1
ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAg
IFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2
YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5n
LmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRh
LT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7Cisg
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFk
NDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyAr
MzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlT
dHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9
CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYy
MTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5
YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAt
MzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0K
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxN
ZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3Ry
ZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAw
IH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5Mzgx
NzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VM
VCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAg
ICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUy
Yjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYx
MjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBm
aW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVj
NzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4
ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNw
cApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091
dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAg
cmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwor
ICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBI
UkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdl
YkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRj
NGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWRE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNU
UiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEs
IF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNU
UiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBz
dGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1F
KSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9J
bl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAg
ICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0
dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBv
ciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVE
RUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFC
dWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUo
KSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRF
bmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRh
a2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRl
eCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0
NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2Uo
KQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2Vi
UmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1v
cnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2
OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJj
Y2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcg
KzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNDg2OGQyZTIzNjVmZWU3NTEwNDFmNDRmZjNlNjQwZmMwZGJhZGJhZC4u
OTRmMDYzY2MwNTJhODhjMjE2NGU0MzIxZTY1OGY0MzljYWM3MzQ1OSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIx
LTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRl
c3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAor
ICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGF0aW9uIGVycm9yIG9uIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBk
ZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4yMjBhMzgwMDc4MjMxYTVk
YjUzNGU3NDMwZGNkOGU3N2NkMGYwNzdkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgpAQCAtNDMsNTIgKzQzLDQ1IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRf
TlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6
ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNU
X1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVY
UEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6
ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRh
dGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
Ci17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVy
LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNU
X1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBw
ZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBw
ZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVt
Y21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZm
ZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7
CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNp
emUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
XSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikK
QEAgLTk2LDEwICs4OSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0
RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTAp
KTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29y
bGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiks
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhw
ZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRD
b25jYXRlbmF0aW9uKSkpOwpAQCAtMTExLDEwICsxMDQsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIo
MHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RG
TW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAw
VSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTEsMTcgKzE0NCw1MyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBt
YXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGli
dXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywg
YXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5n
dGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVy
MS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29u
dGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHko
KS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAg
QVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBt
ZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkp
KTsKLSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShs
ZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVp
bGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIx
LmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWls
ZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgq
Y2xvbmUpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBF
Q1RfRVEobGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1
aWxkZXIyLnRha2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkp
OworICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRl
cjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
MS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBF
WFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQg
U2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8v
IEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERh
dGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVs
bCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVy
Mi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAg
RVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAt
MTc1LDYwICsyMDQsNzAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydh
JywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAn
ZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307
Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMy
KSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90
PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0g
eyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywg
J2onLCAnaycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVy
ID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAg
IGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWpr
bCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7Cisg
ICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0g
Y29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgp
LCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVj
a0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5k
YXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwg
a2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+
c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gy
LnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNp
emUoKSwgImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0
cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVy
ID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQot
ICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJl
dHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQp
KTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZm
ZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZl
cjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1
ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2In
LCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAn
ZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsg
J2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwg
eyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgp
KTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAn
YScgfSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmlu
ZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2Uo
KTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVD
VF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRl
ci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShi
dWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWls
ZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxk
ZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1
MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3
ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0
aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVk
LCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChu
aWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0
YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1
aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVs
bG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZG
aWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
ICAgICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRh
U2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAog
ICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQi
IGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3
b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRh
LCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0Rh
dGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21l
bnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkK
KyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBv
c2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1
ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxE
YXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWls
ZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0
YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpl
eHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBp
bmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBl
Y3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFz
dEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6
W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAg
ICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445942</attachid>
            <date>2021-12-03 19:52:34 -0800</date>
            <delta_ts>2021-12-03 20:14:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211204145232.patch</filename>
            <type>text/plain</type>
            <size>139689</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNkYzUyMjc2ZjVjYzAy
ZTFhZDk2MmFkY2FlNWQ2ZmM2MzY0MzJlOC4uMGUzMjQ0ZTMwOTU5MzRjZWM5M2E0ODgxMGYwMzRh
MDA2ODFlYjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkN2Y1YTViYjAxNzAzMzQ4ZDhlYTRmNTFk
Njg0NDNhN2JlNmJjMGY1Li4wNDdlNDA3ZmQ2NGY1NTE3YjZiYzNjNjJlNzFmY2JiYWI2MmNiNDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZiNWM0ZjJiMGZk
ZWUuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0
ZjU2MC4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRh
ID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikK
ICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hh
cmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5p
c051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVz
b3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2
NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4NjdkNDc4M2VjYWExMzZiNTc4MzkyYzI4MGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
QEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBS
ZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50
IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJl
c291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0
YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7
CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jl
cXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUg
cmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0
OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0
ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAt
MzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0K
KyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2Iz
ZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0Yzcx
MjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRh
KCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Ut
PmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkuLmM3NzBkNzY0
MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRh
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNo
ZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcg
ZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3Mywx
MiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVj
dXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJj
ZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBk
YXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVt
b3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0
YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2Ut
PnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4
IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMwZGMz
ZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSog
cGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBh
c2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVND
SUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAg
ICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBz
dHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwg
Y29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5z
dHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJl
YW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0g
cmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291
cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBx
dW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVk
UHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAg
ICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFz
IGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZz
LgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGgg
LSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAg
ICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGlu
ZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlT
dHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAg
IG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmlu
Zy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERh
dGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5
YjZjMzFkNDJjNTMyZi4uNDAyNWI5ODBlNWVlNjgyZGIwNzYyYWZhODZlY2E5ZDkyZmU4NThkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAg
ICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91
bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wg
Y2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBl
bmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5z
ZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkg
Y29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsK
KyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJl
YWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRD
aGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikg
ewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3
ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3Bl
Y2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAg
ICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3Ro
KCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5l
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVu
Y29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0g
Zm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29k
ZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRl
bnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJc
clxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsMTAgKzE5
MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwotICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29k
ZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZh
bGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFi
bGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRl
bnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoK
ICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBl
bmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxp
ZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NjFh
OTlhZTU3NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmLi45MGQxYzZhMmJhOGM0YTQyZTFm
ZWJkODAxZTUyODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qo
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVm
ZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2
ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51
bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcyNzI3
NjdlNTNmYTJmOGM1MC4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQ
YXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZi
OTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2MGNjYWU0
NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCBmNjQz
MzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjLi5mOWFkNzcxM2M2MDNhNmEwYTU2
YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENh
Y2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENh
Y2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDBiN2Vk
OWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQuLjE1NGRiOGNiYWJmM2Q1YTM4ZTA5
NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9f
QVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA3MmMx
OWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllLi43YzAxYzhjYzIzMTE3ODZjNjI0
ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFn
ZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDcgKzUyMyw3IEBAIGJvb2wgQ2Fj
aGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4g
KE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25k
cygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShk
YXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFi
ODczYjEyODM0MmY1Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjks
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFn
ZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAg
ICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0
ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyAr
MTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBj
b25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJ
bWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5k
ZXggODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYy4uODQyYmY1ZjIwZTA2
ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3Vz
RGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZl
cnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0
ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5v
dGlmeSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2Ug
bWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2Fs
bGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5
OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNiYWM0
NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2Rl
RXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xp
ZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFp
bjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4g
bV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkZTc4YWNiMjIxMGExZmY0ZWZhOTZjMDVmODQ5
MTliMjY1ZDAxY2FkLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2FmNjE2Njg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNo
ZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQp
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3
Mjk2ZmZlNzU3Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkg
KzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3Ry
aW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBkZTU3ZjQwNDAzNzI0
YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllLi5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBi
OWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3Vt
ZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhl
IG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVm
MzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMz
NjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCmluZGV4IGVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEuLmI4
N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2ln
bmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsK
IH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2Qu
Ljc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0
KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCBhYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3
MWYzYjI0NzE5YTJhMzJhLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CkBAIC01MSwxMyArNTEs
MTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciog
ZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNl
KCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJh
Y2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4Yjkx
NTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCAr
MzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29k
ZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciop
OworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2Zj
MjVkODUyZGE2YjExZmQzMC4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6
ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgp
OwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYx
Y2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjll
ZmFmNDEyNTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZk
M2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAw
MmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVy
dGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQ
dHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxE
YXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsK
ICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wg
bV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5
NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41MmZmZDUzN2JmZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1
NzA2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAg
ICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsK
ICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRl
cihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5w
cmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252
ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVy
KTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5
UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUs
NyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9
IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAg
IDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlz
KSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJl
dmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3Jp
Z2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0
YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Jlc291
cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9y
ZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3
MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUs
NyArNjUsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3
RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnBy
ZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAg
ICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3
Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQp
CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwog
CiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkp
Ci0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1f
cHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJl
Y2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXgg
MmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5
NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBA
QCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZp
ZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpV
cGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
NWUyNWFlM2U0ODExNmFmNDg0MzljM2ZmMjM4ZWViZDQwNWU1YWM4Zi4uYmJlMzkyM2EyMDdhMGU5
MzYxMTczMDc0Zjk3NjA3ZmFkMDU4N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0xOTIsNyArMTkyLDYgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2Nv
bnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6
ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7CiAgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBw
ZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwpAQCAtMjAzLDcgKzIw
Miw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
KSkgfSk7CkBAIC0yMTMsNyArMjExLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMp
OwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBt
X3NpemUgKz0gZGF0YVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmlu
ZGV4IDU5ZjBjYTJjNDZjMDMyMjA4YjY3ODgzMWMyNDYxY2YxY2IwMmMwZGYuLmFjYzZhOTNmMDg0
NDU4NDg2ZmJhMGE1NjI2ZmNkNWUzMzVjNTNlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTgxLDE5ICsxODEsNiBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotI2lmIFVTRShGT1VO
REFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRp
ZgotI2lmIFVTRShDRikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYp
OwotI2VuZGlmCi0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0KICAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKQEAgLTI0OSw2ICsyMzYsMjAgQEAgcHJv
dGVjdGVkOgogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKICAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhf
dD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdt
ZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwpAQCAtMjc1LDExICsyNzYs
NiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3Ug
Y2FuJ3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5Lgot
ICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0Lgot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LikgPSBkZWxldGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rl
cigpIGNvbnN0OwpAQCAtMzA2LDYgKzMwMiw3MSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAorY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJC
dWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFz
IGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNy
ZWF0ZWQuCisgICAgICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAg
ICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNo
YXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAg
ICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSkgewor
ICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7Cisg
ICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7
CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorCisgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9
CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVt
cHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOwor
ICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAg
ICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigp
OworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1
ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNP
bmVSZWYoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAppbmRleCAwMWMyMWU2ZjVjNjAwMjdiYWQ0ZWNjMjUwNDkzNTgwMjUzY2M2M2YwLi44OTFlNjcz
MmM3NTE2OWYwNWU3YjliZGNmNzBiNDhlYTRmYTFiNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00Myw4ICs0MywxMCBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKICNpZiAhVVNFKEZPVU5EQVRJT04p
CiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRy
PENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCi0g
ICAgICAgIHJldHVybiAqZGF0YTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgewor
ICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+
PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQorICAgICAgICAgICAg
cmV0dXJuICpkYXRhOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVs
bHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgpAQCAtNjYsNyArNjgsNiBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9jb250
aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRh
dGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMzgy
OThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3Yi4uMmFkZGVlN2VlOGI0ZWViODM1
ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpA
QCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVj
ayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENv
dW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtl
eUlkcy50YWtlKCk7CiAKICAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1h
a2VDb250aWd1b3VzKCk7CiAgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0
YSgpOwpAQCAtMjI2LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAg
IG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0
cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlk
cy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVy
biBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8g
Q2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0
RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4g
a2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjUx
LDggKzI1MSw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2Vi
TUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAKICAgICBvYmplY3QtPnNldEFy
cmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEg
PSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29u
RGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAg
IGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAg
cmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9y
eUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhh
NTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBkZjYyYjNkNzM2M2Vl
ZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4Li5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3
ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVk
aWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3Jl
YXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMSAr
MjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgp
CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYg
KCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxz
ZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0gICAgbV9wYXJlbnQu
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVy
PiB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Omxv
YWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0
XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmgKaW5kZXggN2JiMjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1MWYzMmM1
MC4uNjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9E
RUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5
cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7
CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0
eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZm
ZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdT
VF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2Rl
YnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHBy
b3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFj
dENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJ
bml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9h
ZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChl
eHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBh
eWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1f
cGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03Miwx
MCArNzUsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28g
YmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1J
ZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAg
ICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAg
ICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJl
dHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29u
c3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlw
ZSgpIGNvbnN0CiAgICAgewpAQCAtOTAsNyArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2Fk
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVj
dGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBl
NTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0Li5hNDJlNWJjNGFjY2YzNzIy
YTVhZjljOTA1NDYyZDA4ZWQ4ODQxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVk
X21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGlu
Zm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAg
ICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIz
NiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRh
X2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBt
YXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAg
ICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmll
d0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRj
YzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpA
QCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252
ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRh
IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25z
ZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3Bs
YXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdm
NGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJl
Y2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFW
QXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRh
TG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRy
PENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRl
eCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVj
MTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQog
ICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRl
ciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQg
YmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAg
IGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07
Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFt
X2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6
ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRh
KTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYu
LmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9u
c2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNv
dXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVy
SW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3Qg
eyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21w
bGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVz
aXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0
YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVu
dW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBz
dWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6
Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0x
MDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2so
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5n
ZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0
YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAK
ICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3
aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2gg
cmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMg
Y29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGgg
ZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6
ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsK
LSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byog
dGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9
IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEg
fSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVz
VG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFz
a0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhp
cyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFz
ayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6Omdp
dmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAg
ICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4
ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAg
ICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShi
eXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5k
ZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNv
bnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3Nm
dWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6
OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVy
biBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRh
dGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFk
YXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlz
aGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41
Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIu
YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNj
cmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3Jp
cHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVU
Rjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVm
ZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1Npbmds
ZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9i
dWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5n
ZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50
LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmlu
Zy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0K
IAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVm
ZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMw
MzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdmOGM1MmI0NGVhMjQzMGNj
Y2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBA
IC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNj
cmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0
KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29s
YXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8
U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsg
fQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdt
ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYt
OCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBD
b250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggYTRlMGFiMzli
OWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNy4uODVlNzYzODNkYWIzNTNhNGZjNGIwOWQx
Mjc3MTg1YTAwZTllMjM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmws
IExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1f
dXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRG
cm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUsMTggKzc2LDIzIEBAIHZvaWQgV29ya2VyRm9udExv
YWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAg
ICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtl
ckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jv
b2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVy
biAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOwor
fQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgaWYgKG1fZGF0YSkg
ewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNE
YXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAgICBtX2RhdGEgPSBj
b250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewotICAgICAg
ICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0
cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkK
LSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRh
OworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRh
ID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91
c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7Cisg
ICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAg
ICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMjEsOSArMTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vy
cm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAg
ICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0
YTFlODYzYzcuLjFiM2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAs
MTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBp
c1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JP
Y2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9
CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9j
Y3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVl
c3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vh
a1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2Rh
dGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTll
ZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRw
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25z
ZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jl
c3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxI
dHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVm
PEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklY
TUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFy
ZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRh
ID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJh
Y3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisg
ICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0
YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVz
cG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0
LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZN
b3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlC
dWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5
YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJl
c3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDAp
OwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3Vs
dCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNy
ZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQx
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1f
cmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFs
c2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0
KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDgg
KzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZl
ciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAg
ICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdk
YmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4
NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJV
c2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVk
ZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsK
QEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jl
c3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMy
ZC4uNTRkYzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5MjkzMzEzOGZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3Vz
UmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDog
bV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24g
eyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5y
ZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9
CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwx
MCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVu
c2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5t
YXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0
eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMy
LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIp
OwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWRE
YXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hP
clhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNw
b25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBt
X3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVk
aWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gt
bWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAg
ICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAg
ICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJl
c2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAg
ICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlk
YXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVt
b3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVu
dHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0
KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0
dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBn
ZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRh
TGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7
CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJl
ZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVy
ZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+
Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1
cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAg
ICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0K
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291
cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVk
ZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgp
CiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWRE
YXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1f
YnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0
YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5n
ZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVt
cHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAg
LTEyNzksNyArMTI4MSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFz
Q2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hl
RW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxp
Z2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsK
ICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0
b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXND
cm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nv
bm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7
CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBT
dG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5w
cmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwo
KSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7
CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3Jpbmcg
ZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3Jr
TG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11
dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0
KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291
cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIz
NGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFk
Yjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAK
ICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5z
aWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNo
cm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBS
ZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdp
bGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2
ZWEwZGM4MTkzLi5kNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsK
IAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJl
c2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRp
b25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAg
ICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4K
ICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQg
KiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJl
c2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2Nh
Y2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7Cisg
ICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBt
X3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRC
b2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYg
d2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29k
ZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAg
ICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0
LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAg
ICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwg
bV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAg
IGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUx
ZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmEx
MWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgK
QEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVu
dHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGY5
NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLjU4NTQ3ZDg0ODgxZGM4MzBm
Njk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6Oldl
YlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5
JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwg
bV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJh
bWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShz
eW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZl
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2Rh
dGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5j
RGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOwor
ICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1
dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAg
aWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBp
ZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90
IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
ID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9
OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3Is
IFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRD
b21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRl
cklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1
MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9h
ZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3
ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4
NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhI
VE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMK
ICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBt
X3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGlt
ZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwog
fQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lz
SW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFu
dWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0
ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAg
dm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVh
bVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0
cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7
CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJl
bmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURh
dGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewot
ICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0g
TWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFs
U3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3Ry
ZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0
YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCAr
MTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAg
bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAog
ICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewot
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQor
ICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1
ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgp
KTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBp
ZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEy
NmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTli
ZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQg
bW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBU
aGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1
Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
bV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJm
Li43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAg
ICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9y
ZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAg
IH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgp
KTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAg
ICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3
NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9u
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9
OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBV
bmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJv
b2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEz
Yzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQog
ICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9i
dWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5LDEy
IEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAg
aWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAg
bV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFy
KCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
CmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFlMDUwYTk5
MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAt
NTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAg
IGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBt
X3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBV
bmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRl
eCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJhMTRk
OTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJF
U1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RS
IG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsK
LSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAg
aWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpAQCAt
NTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0
cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAgIC8v
IEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVh
ZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRo
ZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5S
ZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXpl
KCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFC
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAg
ICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
bG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFt
ZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1l
VHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGM3MGNjNmI3OGE4NjI3MTVkYzk4YzIzNWJkOGU2NjgyYWVmZjYwNWUuLjk0ZjA2M2NjMDUyYTg4
YzIxNjRlNDMyMWU2NThmNDM5Y2FjNzM0NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMS0yOCAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDFiNzM2
M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZhNDU0YTY3NjcuLmM2OWIxNjE2YzBjYWRhNTMyNGQ3
MmRiNzMyMTJkZmNlZmJhNWRlMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBA
IC00OSw3ICs0OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVu
dHNPZk1pc3NpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBT
dHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CkBAIC03MiwyNCArNzIsMTYgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJD
cmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUo
KSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9O
T1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwot
ICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5z
aXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAg
ICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIp
CkBAIC05NywxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFy
cmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVz
dERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEw
KSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dv
cmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24p
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4
cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVk
Q29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMiwxMCArMTA0LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Iy
KDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBz
aGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAw
MFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUyLDE3ICsxNDQsNTMg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0g
bWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRp
YnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMs
IGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRl
cjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNv
bnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5
KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAg
IEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwg
bWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNU
X0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAo
Y2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVy
Mi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1
aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAg
RVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlz
IG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAg
IGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsK
KyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWls
ZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCks
IGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVY
UEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBp
cyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRh
MCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNF
bXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVy
Mi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAog
c3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE4MCwxOSArMjA4LDIxIEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWludDhfdD4g
czIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsg
J2knLCAnaicsICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7Ci0g
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAg
IAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBnaDEg
PSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRv
IGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYp
OwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVy
KGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihnaDEu
ZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMSw2ICsyMzEsNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBr
bC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5z
aXplKCksICJhYmNkZWZnaGlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIu
c2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6
ZSgpLCAiZ2hpamtsIik7CiAgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwog
ICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRy
KCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAgLTIwOSwx
NiArMjQwLDE4IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0g
W10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAg
ICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVy
biBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsK
KyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBidWZmZXIx
ID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZl
Y3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZm
ZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2Mn
LCAnZCd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3Zl
KGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdi
JywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7
CisKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAn
ZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0p
LmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2In
LCAnYycgfSB9KS5nZXQoKSk7CkBAIC0yMjgsMTEgKzI2MSwxMyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgaXNFcXVhbFRvKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5n
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNU
X0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVy
LnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1
ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNTMsMTYgKzI4OCwxNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxk
ZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRl
ci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzE3LDE1ICszNTMsMTcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90
IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAg
ICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwg
cGVla0RhdGEpCkBAIC0zNjIsMTYgKzQwMCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIp
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBF
WFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQxMCwxNyAr
NDQ5LDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVu
a3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1
KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAg
RVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0
KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcy
OTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkz
ZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3
IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAq
ZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7Cisg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciop
aGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJp
ZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERh
dGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwpAQCAtNjksMzIgKzcwLDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0Rh
dGFBcnJheSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2Vn
bWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKilo
ZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAg
ICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxl
bmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3
b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEu
bGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRD
b3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAg
ICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRh
OmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0
aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZl
ci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVy
LnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVD
VF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBl
Y3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNy
ZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5
dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0Ai
ZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBF
WFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445949</attachid>
            <date>2021-12-03 20:14:45 -0800</date>
            <delta_ts>2021-12-05 21:52:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211204151443.patch</filename>
            <type>text/plain</type>
            <size>139689</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMzZDk3YzdkYzUzMjU3
YzgzYWI3YmE2Nzk0ODdmMmI3MmVkYmFhMC4uOTI4YmFhZWY0OWEwZmNhMTNhZjM3YWU3YTExZDEz
NzRlOWNkNWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNWEyZWY3ODE4NDdmZmQ2OGM0YmNiNDQy
ZTc1MzVjN2JkZDU4NDA2Li45MzMxMGY4Mzg3MGM2NGIxNjAzMTI2NTZkNjQ4YTYyNTJmMzk1MmQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZiNWM0ZjJiMGZk
ZWUuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0
ZjU2MC4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRh
ID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikK
ICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hh
cmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5p
c051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVz
b3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2
NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4NjdkNDc4M2VjYWExMzZiNTc4MzkyYzI4MGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
QEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBS
ZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50
IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJl
c291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0
YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7
CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jl
cXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUg
cmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0
OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0
ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAt
MzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0K
KyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2Iz
ZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0Yzcx
MjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRh
KCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Ut
PmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkuLmM3NzBkNzY0
MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRh
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNo
ZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcg
ZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3Mywx
MiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVj
dXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJj
ZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBk
YXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVt
b3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0
YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2Ut
PnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4
IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMwZGMz
ZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSog
cGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBh
c2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVND
SUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAg
ICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBz
dHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwg
Y29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5z
dHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJl
YW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0g
cmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291
cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBx
dW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVk
UHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAg
ICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFz
IGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZz
LgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGgg
LSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAg
ICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGlu
ZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlT
dHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAg
IG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmlu
Zy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERh
dGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5
YjZjMzFkNDJjNTMyZi4uNDAyNWI5ODBlNWVlNjgyZGIwNzYyYWZhODZlY2E5ZDkyZmU4NThkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAg
ICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91
bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wg
Y2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBl
bmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5z
ZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkg
Y29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsK
KyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJl
YWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRD
aGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikg
ewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3
ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3Bl
Y2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAg
ICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3Ro
KCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5l
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVu
Y29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0g
Zm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29k
ZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRl
bnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJc
clxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsMTAgKzE5
MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwotICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29k
ZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZh
bGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFi
bGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRl
bnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoK
ICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBl
bmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxp
ZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NjFh
OTlhZTU3NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmLi45MGQxYzZhMmJhOGM0YTQyZTFm
ZWJkODAxZTUyODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qo
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVm
ZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2
ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51
bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcyNzI3
NjdlNTNmYTJmOGM1MC4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQ
YXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZi
OTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2MGNjYWU0
NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCBmNjQz
MzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjLi5mOWFkNzcxM2M2MDNhNmEwYTU2
YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENh
Y2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENh
Y2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDBiN2Vk
OWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQuLjE1NGRiOGNiYWJmM2Q1YTM4ZTA5
NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9f
QVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA3MmMx
OWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllLi43YzAxYzhjYzIzMTE3ODZjNjI0
ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFn
ZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZv
aWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDcgKzUyMyw3IEBAIGJvb2wgQ2Fj
aGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4g
KE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25k
cygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShk
YXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFi
ODczYjEyODM0MmY1Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjks
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFn
ZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAg
ICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0
ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyAr
MTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBj
b25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJ
bWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5k
ZXggODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYy4uODQyYmY1ZjIwZTA2
ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3Vz
RGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZl
cnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0
ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5v
dGlmeSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2Ug
bWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2Fs
bGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5
OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNiYWM0
NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2Rl
RXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xp
ZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFp
bjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4g
bV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkZTc4YWNiMjIxMGExZmY0ZWZhOTZjMDVmODQ5
MTliMjY1ZDAxY2FkLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2FmNjE2Njg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNo
ZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQp
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3
Mjk2ZmZlNzU3Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkg
KzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3Ry
aW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBkZTU3ZjQwNDAzNzI0
YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllLi5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBi
OWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3Vt
ZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhl
IG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVm
MzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMz
NjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCmluZGV4IGVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEuLmI4
N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2ln
bmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsK
IH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2Qu
Ljc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0
KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCBhYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3
MWYzYjI0NzE5YTJhMzJhLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CkBAIC01MSwxMyArNTEs
MTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciog
ZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNl
KCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJh
Y2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4Yjkx
NTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCAr
MzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29k
ZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciop
OworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2Zj
MjVkODUyZGE2YjExZmQzMC4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6
ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgp
OwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYx
Y2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjll
ZmFmNDEyNTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZk
M2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAw
MmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVy
dGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQ
dHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxE
YXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsK
ICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wg
bV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5
NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41MmZmZDUzN2JmZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1
NzA2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAg
ICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsK
ICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRl
cihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5w
cmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252
ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVy
KTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5
UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUs
NyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9
IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAg
IDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlz
KSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJl
dmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3Jp
Z2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0
YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Jlc291
cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9y
ZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3
MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUs
NyArNjUsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3
RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnBy
ZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAg
ICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3
Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQp
CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwog
CiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkp
Ci0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1f
cHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJl
Y2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXgg
MmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5
NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBA
QCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZp
ZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpV
cGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
NWUyNWFlM2U0ODExNmFmNDg0MzljM2ZmMjM4ZWViZDQwNWU1YWM4Zi4uYmJlMzkyM2EyMDdhMGU5
MzYxMTczMDc0Zjk3NjA3ZmFkMDU4N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0xOTIsNyArMTkyLDYgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2Nv
bnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6
ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7CiAgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBw
ZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwpAQCAtMjAzLDcgKzIw
Miw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
KSkgfSk7CkBAIC0yMTMsNyArMjExLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMp
OwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBt
X3NpemUgKz0gZGF0YVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmlu
ZGV4IDU5ZjBjYTJjNDZjMDMyMjA4YjY3ODgzMWMyNDYxY2YxY2IwMmMwZGYuLmFjYzZhOTNmMDg0
NDU4NDg2ZmJhMGE1NjI2ZmNkNWUzMzVjNTNlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTgxLDE5ICsxODEsNiBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotI2lmIFVTRShGT1VO
REFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRp
ZgotI2lmIFVTRShDRikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYp
OwotI2VuZGlmCi0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0KICAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKQEAgLTI0OSw2ICsyMzYsMjAgQEAgcHJv
dGVjdGVkOgogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKICAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhf
dD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdt
ZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwpAQCAtMjc1LDExICsyNzYs
NiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3Ug
Y2FuJ3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5Lgot
ICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0Lgot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LikgPSBkZWxldGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rl
cigpIGNvbnN0OwpAQCAtMzA2LDYgKzMwMiw3MSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAorY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJC
dWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFz
IGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNy
ZWF0ZWQuCisgICAgICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAg
ICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNo
YXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAg
ICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSkgewor
ICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7Cisg
ICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7
CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorCisgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9
CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVt
cHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOwor
ICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAg
ICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigp
OworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1
ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNP
bmVSZWYoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAppbmRleCAwMWMyMWU2ZjVjNjAwMjdiYWQ0ZWNjMjUwNDkzNTgwMjUzY2M2M2YwLi44OTFlNjcz
MmM3NTE2OWYwNWU3YjliZGNmNzBiNDhlYTRmYTFiNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00Myw4ICs0MywxMCBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKICNpZiAhVVNFKEZPVU5EQVRJT04p
CiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRy
PENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCi0g
ICAgICAgIHJldHVybiAqZGF0YTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgewor
ICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+
PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQorICAgICAgICAgICAg
cmV0dXJuICpkYXRhOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVs
bHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgpAQCAtNjYsNyArNjgsNiBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9jb250
aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRh
dGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMzgy
OThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3Yi4uMmFkZGVlN2VlOGI0ZWViODM1
ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpA
QCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVj
ayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENv
dW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtl
eUlkcy50YWtlKCk7CiAKICAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1h
a2VDb250aWd1b3VzKCk7CiAgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0
YSgpOwpAQCAtMjI2LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAg
IG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0
cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlk
cy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVy
biBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8g
Q2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0
RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4g
a2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjUx
LDggKzI1MSw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2Vi
TUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAKICAgICBvYmplY3QtPnNldEFy
cmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEg
PSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29u
RGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAg
IGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAg
cmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9y
eUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhh
NTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBkZjYyYjNkNzM2M2Vl
ZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4Li5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3
ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVk
aWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3Jl
YXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMSAr
MjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgp
CiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYg
KCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxz
ZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0gICAgbV9wYXJlbnQu
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVy
PiB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Omxv
YWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0
XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmgKaW5kZXggN2JiMjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1MWYzMmM1
MC4uNjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9E
RUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5
cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7
CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0
eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZm
ZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdT
VF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2Rl
YnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHBy
b3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFj
dENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJ
bml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9h
ZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChl
eHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBh
eWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1f
cGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03Miwx
MCArNzUsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28g
YmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1J
ZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAg
ICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAg
ICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJl
dHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29u
c3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlw
ZSgpIGNvbnN0CiAgICAgewpAQCAtOTAsNyArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2Fk
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVj
dGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBl
NTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0Li5hNDJlNWJjNGFjY2YzNzIy
YTVhZjljOTA1NDYyZDA4ZWQ4ODQxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVk
X21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGlu
Zm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAg
ICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIz
NiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRh
X2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBt
YXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAg
ICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmll
d0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRj
YzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpA
QCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252
ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRh
IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25z
ZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3Bs
YXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdm
NGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJl
Y2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFW
QXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRh
TG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRy
PENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRl
eCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVj
MTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQog
ICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRl
ciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQg
YmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAg
IGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07
Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFt
X2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6
ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRh
KTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYu
LmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9u
c2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNv
dXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVy
SW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3Qg
eyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21w
bGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVz
aXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0
YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVu
dW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBz
dWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6
Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0x
MDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2so
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5n
ZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0
YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAK
ICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3
aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2gg
cmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMg
Y29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGgg
ZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6
ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsK
LSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byog
dGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9
IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEg
fSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVz
VG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFz
a0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhp
cyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFz
ayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6Omdp
dmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAg
ICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4
ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAg
ICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShi
eXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5k
ZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNv
bnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3Nm
dWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6
OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVy
biBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRh
dGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFk
YXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlz
aGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41
Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIu
YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNj
cmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3Jp
cHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVU
Rjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVm
ZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1Npbmds
ZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9i
dWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5n
ZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50
LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmlu
Zy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0K
IAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVm
ZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMw
MzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdmOGM1MmI0NGVhMjQzMGNj
Y2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBA
IC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNj
cmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0
KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29s
YXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8
U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsg
fQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdt
ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYt
OCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBD
b250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggYTRlMGFiMzli
OWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNy4uODVlNzYzODNkYWIzNTNhNGZjNGIwOWQx
Mjc3MTg1YTAwZTllMjM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmws
IExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1f
dXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRG
cm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUsMTggKzc2LDIzIEBAIHZvaWQgV29ya2VyRm9udExv
YWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAg
ICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtl
ckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jv
b2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVy
biAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOwor
fQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgaWYgKG1fZGF0YSkg
ewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNE
YXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAgICBtX2RhdGEgPSBj
b250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewotICAgICAg
ICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0
cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkK
LSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRh
OworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRh
ID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91
c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7Cisg
ICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAg
ICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMjEsOSArMTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vy
cm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAg
ICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0
YTFlODYzYzcuLjFiM2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAs
MTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBp
c1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JP
Y2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9
CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9j
Y3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVl
c3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vh
a1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2Rh
dGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTll
ZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRw
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25z
ZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jl
c3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxI
dHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVm
PEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklY
TUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFy
ZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRh
ID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJh
Y3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisg
ICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0
YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVz
cG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0
LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZN
b3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlC
dWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5
YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJl
c3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDAp
OwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3Vs
dCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNy
ZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQx
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1f
cmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFs
c2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0
KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDgg
KzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZl
ciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAg
ICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdk
YmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4
NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJV
c2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVk
ZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsK
QEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jl
c3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNTc3ZDY1NmU2N2ZjY2E0NjQwNTBiZmQzNGRhZGMyYTM2MjVlMjMw
MS4uNjM5OWFmZDE2ZWQ4MzMxYWIyMzg4OGJiYTY5NmE3MGQ4NzI4ZmUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3Vz
UmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDog
bV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24g
eyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5y
ZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9
CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwx
MCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVu
c2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5t
YXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0
eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMy
LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIp
OwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWRE
YXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hP
clhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNw
b25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBt
X3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVk
aWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gt
bWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAg
ICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAg
ICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJl
c2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAg
ICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlk
YXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVt
b3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVu
dHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0
KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0
dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBn
ZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRh
TGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7
CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJl
ZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVy
ZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+
Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1
cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAg
ICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0K
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291
cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2LDE1ICsxMjU4LDE1
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVk
ZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgp
CiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWRE
YXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1f
YnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0
YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5n
ZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVt
cHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAg
LTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFz
Q2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hl
RW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxp
Z2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsK
ICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0
b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEsMTIgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXND
cm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nv
bm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7
CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBT
dG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5w
cmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwo
KSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7
CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3Jpbmcg
ZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3Jr
TG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11
dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0
KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291
cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIz
NGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFk
Yjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAK
ICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5z
aWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNo
cm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBS
ZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdp
bGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2
ZWEwZGM4MTkzLi5kNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsK
IAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJl
c2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRp
b25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAg
ICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4K
ICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQg
KiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJl
c2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2Nh
Y2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7Cisg
ICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBt
X3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRC
b2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYg
d2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29k
ZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAg
ICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0
LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAg
ICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwg
bV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAg
IGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUx
ZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmEx
MWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgK
QEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVu
dHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGY5
NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLjU4NTQ3ZDg0ODgxZGM4MzBm
Njk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6Oldl
YlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5
JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwg
bV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJh
bWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShz
eW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZl
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2Rh
dGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5j
RGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOwor
ICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1
dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAg
aWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBp
ZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90
IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
ID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9
OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3Is
IFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRD
b21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRl
cklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1
MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9h
ZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3
ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4
NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhI
VE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMK
ICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBt
X3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGlt
ZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwog
fQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lz
SW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFu
dWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0
ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAg
dm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVh
bVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0
cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7
CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJl
bmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURh
dGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewot
ICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0g
TWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFs
U3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3Ry
ZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0
YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCAr
MTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAg
bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAog
ICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewot
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQor
ICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1
ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgp
KTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBp
ZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEy
NmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTli
ZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQg
bW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBU
aGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1
Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
bV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJm
Li43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAg
ICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9y
ZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAg
IH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgp
KTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAg
ICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3
NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9u
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9
OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBV
bmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJv
b2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEz
Yzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQog
ICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9i
dWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5LDEy
IEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAg
aWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAg
bV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFy
KCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
CmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFlMDUwYTk5
MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAt
NTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAg
IGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBt
X3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBV
bmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRl
eCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJhMTRk
OTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJF
U1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RS
IG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsK
LSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAg
aWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpAQCAt
NTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0
cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAgIC8v
IEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVh
ZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRo
ZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5S
ZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXpl
KCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFC
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAg
ICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
bG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFt
ZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1l
VHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDBjOTljZDc3Mjk2Y2U2YjUwNTQxYmNlOWEwNGUwZjJiNzE4YmY1MTkuLjBiZTkxNjJjYzY0ZTJm
MWNiNDQyMWVmYWE0ZjM1MDNmYzYxZjY4ZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMS0yOCAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDFiNzM2
M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZhNDU0YTY3NjcuLmM2OWIxNjE2YzBjYWRhNTMyNGQ3
MmRiNzMyMTJkZmNlZmJhNWRlMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBA
IC00OSw3ICs0OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVu
dHNPZk1pc3NpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBT
dHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CkBAIC03MiwyNCArNzIsMTYgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJD
cmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUo
KSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9O
T1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwot
ICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5z
aXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAg
ICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIp
CkBAIC05NywxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFy
cmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVz
dERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEw
KSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dv
cmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24p
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4
cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVk
Q29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMiwxMCArMTA0LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Iy
KDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBz
aGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAw
MFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUyLDE3ICsxNDQsNTMg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0g
bWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRp
YnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMs
IGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRl
cjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNv
bnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5
KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAg
IEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwg
bWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNU
X0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAo
Y2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVy
Mi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1
aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAg
RVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlz
IG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAg
IGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsK
KyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWls
ZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCks
IGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVY
UEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBp
cyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRh
MCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNF
bXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVy
Mi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAog
c3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE4MCwxOSArMjA4LDIxIEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWludDhfdD4g
czIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsg
J2knLCAnaicsICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7Ci0g
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAg
IAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBnaDEg
PSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRv
IGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYp
OwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVy
KGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihnaDEu
ZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMSw2ICsyMzEsNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBr
bC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5z
aXplKCksICJhYmNkZWZnaGlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIu
c2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6
ZSgpLCAiZ2hpamtsIik7CiAgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwog
ICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRy
KCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAgLTIwOSwx
NiArMjQwLDE4IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0g
W10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAg
ICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVy
biBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsK
KyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBidWZmZXIx
ID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZl
Y3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZm
ZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2Mn
LCAnZCd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3Zl
KGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdi
JywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7
CisKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAn
ZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0p
LmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2In
LCAnYycgfSB9KS5nZXQoKSk7CkBAIC0yMjgsMTEgKzI2MSwxMyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgaXNFcXVhbFRvKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5n
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNU
X0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVy
LnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1
ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNTMsMTYgKzI4OCwxNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxk
ZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRl
ci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzE3LDE1ICszNTMsMTcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90
IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAg
ICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwg
cGVla0RhdGEpCkBAIC0zNjIsMTYgKzQwMCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIp
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBF
WFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQxMCwxNyAr
NDQ5LDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVu
a3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1
KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAg
RVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0
KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcy
OTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkz
ZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3
IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAq
ZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7Cisg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciop
aGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJp
ZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERh
dGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwpAQCAtNjksMzIgKzcwLDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0Rh
dGFBcnJheSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2Vn
bWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKilo
ZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAg
ICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxl
bmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3
b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEu
bGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRD
b3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAg
ICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRh
OmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0
aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZl
ci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVy
LnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVD
VF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBl
Y3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNy
ZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5
dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0Ai
ZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBF
WFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445950</attachid>
            <date>2021-12-03 20:18:26 -0800</date>
            <delta_ts>2021-12-05 21:52:27 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211204151823.patch</filename>
            <type>text/plain</type>
            <size>515498</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmMDU5YTA5MjFhOWRj
NmYwM2VhNDA3ZGQ2M2JkOTAwOWQ0ZDI5Yi4uOTI4YmFhZWY0OWEwZmNhMTNhZjM3YWU3YTExZDEz
NzRlOWNkNWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBCcm9hZGNhc3RDaGFubmVsLCBDT09QLCBDT0VQIGFuZCBXZWIgTG9ja3Mg
dG8gZmVhdHVyZXMuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4Nzc2OTE0OTc2YjJhOTJmNzZkZDg3NjExZDI4
MWEwMjhiMTM3NDk1Li45MzMxMGY4Mzg3MGM2NGIxNjAzMTI2NTZkNjQ4YTYyNTJmMzk1MmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIK
KyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxT
Y2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJl
YW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZm
ZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5
Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAg
KEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBD
OjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0
YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNX
aW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6Cisg
ICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhp
Z2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFG
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNl
bmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1l
bnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVh
dGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFu
ZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIgY29udGVudCBwcm9jZXNzIHNvbWV0aW1lcyBj
cmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4MzNkZTky
ZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3Vv
dXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1t
dXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgor
ICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAg
KC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNv
dXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVh
dGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJl
c291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisK
IDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1YWI4MzYw
ZTg2MTQ1NTQ3MjQ3Y2MuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0w
MSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBT
aGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1v
cnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZl
LmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFT
b3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJl
c291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAy
MS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJd
IE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0
NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2
ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0
YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAg
ICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7
Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9
IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxT
dHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5t
bQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5
YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBi
b2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1f
bWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxv
Y1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1h
Z2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9
IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRj
MzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODky
NmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09
ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBh
bGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBp
ZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRl
eHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBh
ZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2Vd
KTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1d
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFh
MjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWlu
dDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZv
cm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
KyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6
Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0Yy4u
ZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERP
TUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29y
ZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVx
dWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2Uu
Y29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFu
ZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVz
cG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIg
PSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZm
ZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAgdm9pZCBE
T01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBp
ZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRS
ZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3Np
dGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0
Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVl
c3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9u
c2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVl
c3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAg
aWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4
Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAg
aWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAg
ICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQo
KSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZv
aWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICszNzUsNyBA
QCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNl
aXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNlLmdl
dCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNw
b25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
cGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2Vp
dmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVm
ZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4Myw5
ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0
Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAg
ICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAg
IHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7
IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRl
eCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNlZGIz
YjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkg
ZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
OwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9u
T3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZl
dGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9vbCB7
IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRl
eCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJkYWUw
MzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3BvbnNl
Qm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0
ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0sIFtd
KGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJv
ZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwg
W10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIsNyAr
MTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5
JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9y
bURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZm
ZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9u
c2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4
IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThhM2Nh
M2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNvbnZl
cnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwogV0VC
Q09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQg
Ym9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBSZXNw
b25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJl
ZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6
Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsK
IFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsK
IFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3Bv
bnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5YThk
MmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcyMTcz
YzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlk
cyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAo
YnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
YXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBi
dWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJp
bmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3OTdh
My4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29u
c3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0byBsZW5n
dGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRhKCks
IGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlhS2V5U3Rh
dHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsxMDMsNyBA
QCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBidWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6
ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAgIHJldHVy
biBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMmZk
YzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4MDc0YjUw
OGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
QmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
CiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1
ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25z
dW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUo
KSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0
aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZv
cm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3Jt
RGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJv
ZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAg
cmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
ICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRj
aEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEo
KTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpAQCAt
Mjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRl
eHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRl
eHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJM
U2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0Jv
ZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAg
aWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJh
eUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJv
ZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChp
c0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRk
cmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJW
aWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNiNzcxYjM0
N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4
MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1E
YXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpu
dWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBU
YWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAogICAg
IHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZN
b3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZm
NjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBA
IC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1
ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5r
KSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTgg
QEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAg
IEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJl
ZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0g
U2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92
ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
ZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdp
dGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAg
ICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMw
Niw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0
byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2th
Z2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0
byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRl
cmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBz
aXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRh
dGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7
Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1fYnVmZmVy
LnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewotICAgIHJl
dHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAg
LTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1
cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdU
Rk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0K
IAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQs
OCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3Vy
Y2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0
aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0
MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAs
OCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZl
cjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkg
eyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRh
a2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVy
KCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBT
dHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFBy
b21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3Vy
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApp
bmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0MzkyYTkw
M2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5
Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
cGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURh
dGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJl
c3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6
ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBi
b2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAg
ICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlz
Qm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBi
b2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUy
ZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2YWViNTQ3
YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0g
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVm
ZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFJl
c3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VE
YXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0
ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2Yjll
NTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0
LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdo
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAg
ICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3
Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0Yjdk
OGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBAQCBj
b25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMw
MzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRl
Y29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJl
dHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUy
ZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0
ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5n
LCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6
ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVLZXko
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURh
dGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwg
a2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1aW50
OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRm
NDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBh
dGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEm
KTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZi
N2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4
NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlz
dGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRl
VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJl
Z2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6
ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJp
YWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNh
dmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcg
b2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBu
ZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlv
biJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0g
c2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0
aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBh
dGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4
IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5m
byYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAg
ICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAg
ICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUz
MywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tl
ZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRl
eGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0g
JXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAg
YXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAg
IGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5k
ZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZh
bHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyAr
MTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8
fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9y
ZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwor
ICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBp
ZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQx
LDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0
aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURf
UEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9t
IHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1w
dCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJh
bnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBp
biBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVj
dCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxs
KCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2Vy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQog
ICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAg
ICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07
CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNT
RVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1h
eCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sg
dXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCBy
ZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJL
ZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
bG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxv
d2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAg
fQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRv
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1
cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBw
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRl
eCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJk
YTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAt
MjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8g
YnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYg
KG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29y
IHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUs
NyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhT
dGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7
CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1f
cHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZl
cikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQg
YXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiOTRj
OWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5
Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODIs
NyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQo
KQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2Ug
OiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3Jl
bW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1f
cmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5n
TWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1
NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0YzY5
ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBj
bGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsK
ICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7
Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0
cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRl
eHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUwLi42
M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VV
UkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUgPSBm
YWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7CiAg
ICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9p
ZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRP
ckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRh
LnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVu
ZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAg
ICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6
Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgp
LCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3Vy
Y2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVy
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2MzQ5YWE1
YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3Nv
dXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9y
ZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1
ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxl
dGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAzZWM0
ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVT
RC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQv
U2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNv
dXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
Ik1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQgPSBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRh
dGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291bnQg
PSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0
YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5NjFj
OTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0
aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSBs
b2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9N
RXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAi
Tm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAgIH0s
IFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1Y2U4
OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFlYTg0
ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYmICgh
bV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAgICAg
ICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAg
ICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwor
ICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSSht
X2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAg
ICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBt
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
Km1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAg
ICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5n
KCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1b3Vz
QnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11
dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsK
ICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0
cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQuLjRi
NDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9u
dEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBT
VkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1f
c3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChh
dXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAg
ICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRl
ZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZv
bnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikg
ewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5n
KCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9p
bkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENT
U0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNl
IGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlh
dGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1l
ZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0
aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdy
YXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVk
aWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMx
MjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEwODgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9u
dFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2
IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVk
Q2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250
RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxp
bnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
V2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZv
bnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9h
ZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2lu
dGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4g
bV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdh
YTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNobWVu
dEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7
Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVmOThi
MTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVz
b3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2Ns
YXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBF
ZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyArNTM3
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9k
ZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRh
bG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5m
byhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdl
dFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3Ry
aW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBv
dXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25J
bkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2
ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJW
aXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
KyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRp
ZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0
dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5
MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMx
ZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVu
dGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Vk
aXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5MzMx
MDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVkaXRv
cjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZv
bnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRy
aWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAgaWYg
KCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERh
dGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZ
RVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1
dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwogfQog
CiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcsNyBA
QCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9yOjpn
ZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBW
ZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50
JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
IGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAgICAg
ICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAgICAg
ICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOworICAg
ICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEs
MTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRl
ckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNl
dFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCiB7
CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0K
IAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5z
ZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1c2Vy
VmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJs
ZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7
IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcg
UlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpA
eyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewog
ICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5NmI3
ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5
ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wK
ICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1cmwp
KSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwog
ICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9odG1s
IikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2Vz
dGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3Vt
ZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAgICAg
ICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3Vi
cmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+
ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNwb25z
ZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8ICFb
ZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCkp
OwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBp
ZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1dG8q
IHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1NGU4
MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMxNzM2
NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsKICAg
ICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0gICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50OwogICAg
IH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5
LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFj
aG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2Ut
PmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0
dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMg
dm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFw
cGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9u
SW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCks
IHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9iamVj
dEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJl
cGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJh
Z21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUg
PSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBX
VEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1
ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFw
cGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00NDIs
NyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFj
dE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1F
VHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJl
dHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4g
TWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBt
YWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07
CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJr
dXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgx
LDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxk
UmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6
OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1h
aW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3Vi
ZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJh
bWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRv
Y3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93
TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMo
ZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcgQEAg
Ym9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2Yzg5
MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2LDE1
IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBh
c3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6Omlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1l
bnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdE
YXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhpcyBm
dW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0aHJl
ZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5IHVz
ZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9ydCBP
UyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVj
dG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEuLjEw
MTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9p
ZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0
IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmls
ZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlF
bnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0
LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBz
ZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNl
dHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5m
dHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9H
KEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0
aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNl
cjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRl
bXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQo
KS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRv
Y3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBv
ZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3Vs
ZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3Vt
ZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdl
IGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYw
NDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2
ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUw
TUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVx
dWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2Rh
dGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBA
IC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJU
KCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsK
LSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5y
ZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4Miwz
NyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENv
bnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0
YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVm
ZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAg
ICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgp
OwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0Nv
bnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRh
TGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFC
dWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9
IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2
NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29u
dGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5n
dGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAg
ICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgp
LCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
YnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9
IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVu
Z3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcuLmQ3
NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNE
YXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1l
c3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0g
ICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVy
OyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0
YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAg
ICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVk
IGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBl
OwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
bV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291
cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2
Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1NzQ2
NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9v
bCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1
dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkp
OwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1
bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1
ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3ZGYx
MjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAwM2Vl
NDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAg
ICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNv
ZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVu
Y29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNv
bnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNl
NjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29u
dGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMw
ZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIw
ZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDVi
MWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6
OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291
cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdo
dFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJl
cigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5k
b2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJl
ZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNkODQ1
MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5MjgwNmVh
ZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJl
Q3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsK
ICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJl
c291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZl
RGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBt
YWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlN
RVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1h
aW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2
ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0
cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZl
cnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9h
ZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJj
aGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRl
cigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAg
ICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7
CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydElj
b25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJm
NTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3MmZm
Yzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsK
IGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAg
LTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxB
cmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFy
Y2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2
ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBV
UkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFy
c2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1
bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
I2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwog
I2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNo
aXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZl
RGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZl
RGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25v
d3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3Yzgz
Mi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5
NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFy
a1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNu
aWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmll
cjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzA4Nzg1YWY4ZmM5MjRl
MzUzZmZkNDgzZGY3Yjk1ZGEyNDQzYWU4NC4uOWU5ZjI5NDY3MmYzZDYyMjUwM2IxZTU1YjE3OTZm
MGNhMWVjZmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3
Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVj
dGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAg
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwg
eyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9y
U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBm
aW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2MTA4
MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3NmI3
OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwog
fQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50
aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENs
aWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFk
ZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFt
ZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2Vu
ZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCks
IHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDksNyBA
QCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVl
c3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFj
a1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAg
ICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRp
bmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1Nj
cmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9i
c2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYwOTM0
MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVk
RnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xh
c3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBw
ZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3
ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2Fj
aGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBv
bGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJh
bWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwg
c3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51
bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51
bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4
NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEwZGY4MWI1
NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lE
RU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVy
KEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2Zy
YW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9w
dGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0Rl
ZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9v
cHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAg
ICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7
CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4
LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3ko
RGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkg
YWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0
LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25z
LmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJE
YXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1
ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXls
b2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURhdGEt
PmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRl
cjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdl
dCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgp
CiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xl
YXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNv
dXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3Vy
Y2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2lu
ZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJl
IGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2Vu
ZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1f
ZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEo
dGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgp
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQy
YjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC01
NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdh
Y3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291
bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBA
IC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJj
ZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAt
MjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0
OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGly
ZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYz
NTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01
NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4
NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3MGYy
MzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXIm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVy
PihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsg
fQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9k
YXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVt
cHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5j
b3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29w
eSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCkBA
IC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2Rh
dGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1
Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVz
dCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNB
Q0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlm
ZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGlj
YXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3
aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVm
NDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFhMjZk
YjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVSTCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9t
UmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBpbmxp
bmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRz
IHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8v
IFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdp
bGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2Uu
cGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hy
b25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCiti
b29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRS
ZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3OSw3
ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91
c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQor
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0
IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRp
dmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAg
ICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNl
ciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNo
ZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNv
dXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRv
IG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVt
b3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBu
b3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5
KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2
NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3MDgz
NTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEwNCw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9y
UmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBtYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2
MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYg
bG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCks
IG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91
cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1f
cGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNp
Z25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0
N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3
ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2
MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVk
CiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJf
cyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1w
dHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAg
ICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50
LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1l
bnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7
CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkg
ewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAg
ICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUg
dGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSBy
ZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAg
ICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
c291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAg
ICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpA
QCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBpbnQg
aHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAgICAg
IHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQtPmNv
bHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikp
OwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1u
VGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBkZTdk
YWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2RmOGQ5ZGEy
MDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVtcHR5LCBi
dXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBhdXRvJiBk
YXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5jcmVh
dGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5u
b3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygp
LmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRp
b24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBmb3IgdGhl
IG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIGlmIChh
dXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRp
b24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtl
eSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNl
UmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0gICAgCisK
ICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShDRkRp
Y3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRhLCBj
YW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VSZXNwb25z
ZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9uS2V5KSk7
CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJRChyZXNv
dXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIHZl
cnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNv
dXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5
TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKTsK
ICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENy
ZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNoaXZl
PiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgIGlm
ICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBDRkVy
cm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGUHJv
cGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJ
bW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJV
RwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAgICAg
ICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFy
Y2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lXZWJB
cmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVn
YWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNlRGlj
dCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFpbiBy
ZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAgLTMz
Myw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0
aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBzdWJy
ZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAgICAg
ICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAg
IH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rp
b25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBh
dXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZyYW1l
QXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YmZy
YW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3IEBA
IGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52
YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1
cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9uc2Uu
dXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3
aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBp
ZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUq
IGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1
cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVu
dCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBk
b2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4g
CiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBt
YXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0
PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVz
cG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggYWNm
YmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uOTkzYzJiOGU4MzBkYzNkNzVj
NWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDggQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFzIGFzY2lp
KCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBBU0NJSSBj
aGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpLmlz
QWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJp
bmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOworICAgIG1o
dG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRCdWZmZXI+
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiLCBjb250
ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJsLnN0cmlu
ZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEuYXBwZW5k
KGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgIC8v
IEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0cmVhbSB3
aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEgPSByZXNv
dXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2Uu
ZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3Rl
ZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmlu
dGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERhdGEtPmFw
cGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAgICAgICAg
ICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAgICAgICAg
ICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cgYXMgaXQg
d291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JMRnMuCkBA
IC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVy
YXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAtIGlu
ZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBl
bmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAgICAgICAg
ICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgICAg
IGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXgg
PCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2NpaVN0cmlu
ZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0gICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxl
bmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1sRGF0YS50
YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJk
MGJkYjgwMTVlLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAgICBB
U1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFy
eS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBjaGVj
a0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9m
UGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1J
TUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250
ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAg
ICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVhZGVy
LnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJz
OwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CkBA
IC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHVz
ZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVjaWFs
IGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAgICAg
ICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7
CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVu
Z3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2Rp
bmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBmb3Ig
dGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2RlciBl
eHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29udGVudC0+
YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4i
LCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5Myw5ICsxOTMsMTAg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlKCktPm1ha2VD
b250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29k
aW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRl
Y29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgp
KTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29u
dGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250
ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFy
c2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRh
dGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250
ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6Qmlu
YXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUo
KSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRp
Z3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8g
RklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBz
aG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3
YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcj
c2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRl
IG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdm
YzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li45MGQxYzZhMmJhOGM0YTQyZTFmZWJkODAxZTUy
ODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAgQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0
YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVmZmI2OTdj
MzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0ZDFk
NTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6
Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYg
bWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBi
YTliMTc2Zi4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hl
ZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1
cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQg
dGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9m
IG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0K
IAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
ICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENh
Y2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRh
dGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8v
IERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNo
ZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rp
bmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisg
ICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExv
YWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRo
ZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5
IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2Vl
M2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2
MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgp
IGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2Um
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRl
eCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mOWFkNzcxM2M2MDNh
NmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250Ojpk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAK
LXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
bV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNl
KTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1LDcgQEAgU3RyaW5n
IENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVy
biB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgQ2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JPY2N1cnJl
ZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBpbmc7CkBA
IC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5n
ZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9Owor
ICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxw
dHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlmeShj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVk
Rm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZvbnRDbGll
bnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExvYWRlZCgq
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBjZWJk
YzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4xNTRkYjhjYmFiZjNkNWEzOGUw
OTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xv
YWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3Rl
VVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBp
bmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21E
YXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAgICB2
aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFG
cm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRh
bGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBh
bGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRl
MGU2ZjZiNTQyLi43YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5ICs0
NjgsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRh
dGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAm
ZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiAr
NTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1h
Z2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tp
bnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3Qg
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2Ny
aXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisg
ICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEt
PmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihk
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAg
ICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBz
eXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3Rh
dHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRl
cm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBt
X2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRj
YWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkz
OTE1MTg2NmZhNDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lk
dGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2Vk
U2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29k
ZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRh
KCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVk
KFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0
dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAg
LTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJ
bWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NDJi
ZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6
OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEo
cHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBhbnkgdXBk
YXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhhdmUgdGhl
IGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5jcmVtZW50
YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
LSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7
CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAgIHdoaWxl
IChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTk2LDcgKzk2LDcgQEAgdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRh
bERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkg
ZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmlu
ZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9
IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9
IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5j
cmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGlu
Y3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3
MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNi
YWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXND
b2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxs
Q2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RD
aGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGlu
Zz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQyNWNkZGQxODAyMDkyMmY1
ZWRiMjRkNGI5MTIwMDAyLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2FmNjE2Njg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
QEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5Rmlu
aXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWdu
ZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTEzLDcgKzkxMyw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAg
ICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw4ICs5MjcsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdC
dWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAg
ICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li4y
MThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkgKzExMiw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQog
ICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1
cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNp
Z25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNl
RW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3Vu
dGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGlu
ZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2Rl
ZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmlu
ZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmIwZjc2YTUwOTYx
MGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0
cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2Rl
Y29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5l
dyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVz
ZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxw
dHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5z
ZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7
CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3Mp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5iMDEyYmE5
OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNl
RGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRl
eHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2
YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04
MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAg
ICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4
dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAg
ICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEs
NyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVs
ZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZv
bnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZv
bnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkp
OworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3Nzdm
ZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXpl
RXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAg
IFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1v
dGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1l
bnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGlu
Z3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmI4
N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAgdW5z
aWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNo
OwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0
YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2
MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJl
OTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRU
ZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQK
IHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNs
aWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZv
aWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRh
dGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
aW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3ODMy
MWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMu
LmI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYx
LDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25z
dAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1f
c2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNp
emUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
bV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29k
ZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAg
ICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJm
N2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEyNTRlMmQ3
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7
CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQdHI8VGV4
dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3
NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5Zjcx
YzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZl
ckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2
YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpT
ZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVz
dDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vz
c2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3
ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2Eu
bW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11
bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBi
ZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0
IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNG
VVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRG
aWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRV
UkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9y
ZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEz
LDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVz
cG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxv
Y2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tl
ZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2Vk
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byog
cmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1f
cmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggNTUy
NTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDViYjdhZjkw
ZWJkYTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBM
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJl
dmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmln
aW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsK
ICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5
NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNTJmZmQ1MzdiZmQ2MmZmNjdkZWNkNDY0
YjY1ZmI2YzkwNTcwNjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVy
dGVyJiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNw
b25zZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEt
PnJlc2V0KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZp
ZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBj
b252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWlu
UmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBt
X2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9
CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0
OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3
TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xv
YWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3Bv
bnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252
ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0g
ICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9v
cmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAg
ICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGlj
eUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMz
Y2YuLmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdp
dGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGYzN2QwNTliMGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMuLjZkNTFjNWU1MTZh
M2RiZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1
Miw3ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0
CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcs
IGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBm
aXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxh
eW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwor
ICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcAppbmRleCAxYTEyMTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5kNzUw
Y2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUp
OwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVU
eXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5l
bmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9y
IChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJp
YWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQs
IGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBj
aGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4K
ICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygp
LmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAg
ICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRF
bmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpF
bnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291
cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3Bv
bnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgw
YWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcg
bWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNp
dCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3
MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxl
IHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAg
ICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZm
NDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVE
YXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAg
ICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJS
ZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0g
ZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlC
dWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVE
YXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7
Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1f
cGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5j
bGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFu
Z2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENv
ZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNk
ODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUo
Y29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVT
dHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJp
bmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3
ZDI0N2RjZDFhMTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2Ex
M2Q3MzkzNGFhMDQzNmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgy
LDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVf
RVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2lu
OwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmlu
Z0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRh
SW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJk
VVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVU
eXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5h
bWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0
SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwog
ICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAg
IFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBT
dHJpbmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZv
clR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkx
MTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQw
MGQ2ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYg
ZGF0YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25z
dGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7
CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsK
ICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2Rl
ciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5j
b2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJT
aXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2Rl
cikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2Fy
ZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lz
dGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZj
YTZlYzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZi
ZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3Jp
Z2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNo
YXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZm
ZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3Ry
YXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5h
Nzg4ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21E
YXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmly
dHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAg
ICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRl
bUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRh
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5
NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIx
ZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwx
NCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50
T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0
cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0
OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEw
MDc0MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2
ZjBiY2E1NDM2NGFmYzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVj
dCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0
ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Q
YXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJ
bWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdl
dFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJk
VVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVS
TChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4
Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1f
cHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpy
ZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50
LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFt
X3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEu
Z2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0
aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTlj
ZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5
NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
c3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRD
b252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRh
OworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAg
IFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29y
aWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmlu
ZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBh
NjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2Vk
QXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQz
OTAwMzUzNTM4NWQuLmJiZTM5MjNhMjA3YTBlOTM2MTE3MzA3NGY5NzYwN2ZhZDA1ODdkZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMgKzUwLDEz
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgp
KQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFwcGVuZChX
VEZNb3ZlKGRhdGEpKTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworfQorCiAjaWYgVVNFKEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7CkBAIC03
MywyNiArNzgsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0
TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFw
cGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRG
aWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYg
KG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAg
Ym9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEg
bWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7
Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19
Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywg
c2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEw
MywzMCArOTIsMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29tYmlu
ZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkg
Y29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250
aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBv
dWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9u
cyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBj
YWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNl
IHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7
Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJu
OwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNf
Y2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0
aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
ID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9z
ZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBj
b21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5j
bGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0g
MSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1aW50
OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdt
ZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBt
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE4MSw2ICsxNTYsMjEgQEAg
U3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0Vt
cHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFyZWRCdWZm
ZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91czsKK30K
KwogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpAQCAtMjAy
LDEwICsxOTIsOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6
ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBw
ZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdt
ZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkg
fSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAg
ICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDIsMjYgQEAg
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgp
OwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsK
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNp
emUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXpl
OwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30K
Kwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpAQCAtMjQz
LDE3ICsyMzUsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29u
c3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVs
ZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBB
U1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVy
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3Zp
ZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVu
Y3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsK
ICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTM1NSw4ICszNDIsNyBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgp
IGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgp
ICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7CiB9
CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9F
TkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEo
KSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcigp
Cit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sK
KyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0Nv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3VzQnVmZmVy
LT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBt
X3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZm
ZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBjb250
aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOworICAgIG1f
Y29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDog
U2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsK
K30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcg
bWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1h
cHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2Vz
cykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdt
ZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRh
dGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgp
IGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAg
W10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBkYXRhLmRhdGEoKTsgfSwKQEAgLTM5MSw3ICs0MjcsNyBAQCBjb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNp
dCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0
YSk7CiB9CkBAIC00MDIsNyArNDM4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAgIHJldHVy
biB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07
CiB9CkBAIC00NTYsNyArNDkyLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29u
c3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6
ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90IERhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNp
dG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7
IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MTEsNyBAQCBzaXplX3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQo
dmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21l
bnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBz
aXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRh
U2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQog
ICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAg
ICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRo
aW5TZWdtZW50KQpAQCAtNDk5LDE2ICs1MzUsMjEgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdt
ZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50
PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEg
PSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBz
aXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJl
dHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZm
ZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1
ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0IHNp
emVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNTc1LDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAK
ICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0
YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4
YWQuLmFjYzZhOTNmMDg0NDU4NDg2ZmJhMGE1NjI2ZmNkNWUzMzVjNTNlM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAg
Y2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBp
bW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgor
Ly8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdt
ZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0
YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YS5z
aHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWlu
UHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+
IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAj
aWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0
OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2
b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxH
Qnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVS
KQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBl
ZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMg
YWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRo
ZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJl
Z2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNp
dGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBw
b3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hh
ciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsK
LSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsgfQogCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9p
ZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZl
IChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBl
eHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVz
IHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVy
IHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwotCi0g
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0g
ICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOwor
ICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+
IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBtb2Rp
Znkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0gICAg
Y2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21l
bnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25z
dDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBib29s
IGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElC
KQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQor
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQot
Ci0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1
aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3Zp
ZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJv
dmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92
aWRlcikpIHsgfQogCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQor
ICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBE
YXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NU
UkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisgICAgICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFi
bGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFU
SU9OKQorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3Jl
YXRlQ0ZEYXRhCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9OworCitj
bGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVm
ZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYg
cHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJv
dmlkZXIpKSk7IH0KIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lm
IFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBj
cmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShH
TElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVT
RShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFw
cGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAg
ICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmKTsKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFu
ZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRC
dWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7
CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIC8vIENyZWF0ZXMgYW4gQXJy
YXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQK
KyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50
byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25z
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNX
aXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2lu
ZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJk
IGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAg
ICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBv
c2l0aW9uOwpAQCAtMjEwLDU1ICsxOTcsMTc2IEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2Vn
bWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRh
U2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3Nl
Z21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25l
U2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgp
IGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtl
cyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShz
aXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcg
dG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJp
bmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsK
IAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
IW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBj
b25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29u
dGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisjZW5kaWYK
KyAgICBzaXplX3QgbV9zaXplIHsgMCB9OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0gICAgdm9pZCBj
b21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyKCk7CiAKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3Ig
YW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50
cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRh
YmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2Ug
fTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAK
Ky8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93
cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0
ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVk
QnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBz
dGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAg
ICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAg
JiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNz
IE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5n
ID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNl
bmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNP
UkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9Owor
CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRv
IHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxl
CisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVy
LT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIp
OworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBh
IHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxk
IGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZm
ZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92
ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1
ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7
IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFy
Z3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1f
YnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9Cisg
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0
cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9i
dWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVs
bHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAg
ICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAg
ICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAg
eworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0
YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY4LDIxICszNzYsMjEgQEAgaW5saW5l
IFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6
ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVk
QnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dDsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0
YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVT
RShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0
OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAg
ICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVf
dCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3Qg
U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43
ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRp
b24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9
CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29y
ay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8u
YXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdv
cmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQo
KSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmst
Pm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lk
ZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNo
KCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJj
OWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0
NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2Fy
cmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVu
Y29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRv
cHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290
RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51
bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApp
bmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNh
OGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5L
ZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVu
Y29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5h
bDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZi
NjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjg5MWU2NzMyYzc1MTY5ZjA1
ZTdiOWJkY2Y3MGI0OGVhNGZhMWI1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDE3ICs0MSwxMyBAQCBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxsb3dzIGZv
ciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24s
CiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lmICFV
U0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09
IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZE
YXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAg
ICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdl
dCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVy
biBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEo
KSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjgsNiBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5h
cHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3Np
emUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4
ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNi
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29j
b2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5
cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZm
QnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRv
UE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9
XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBA
IC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0
aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNr
KGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1
ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4
NTAuLmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0z
NSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50
ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNV
SW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlv
bjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRl
YWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jilk
YXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2Vy
KXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3Jl
OjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24g
c2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChk
YXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
KCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgp
KTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEo
KSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBp
ZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVh
dGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9
PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVh
dGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VE
YXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0
YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25z
dAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2Nd
IGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgz
NC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVj
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUg
cm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9Owog
CiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYg
KCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5
MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFk
NGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyAr
MTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlp
ZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0
eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsx
OTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5j
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5
SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7
CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsy
MDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0lu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXRE
YXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWlu
ZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2Uo
KTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1
b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEg
PSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6
T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNy
ZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAog
ICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAg
Q1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtl
eUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJl
dHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRh
Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAg
Ly8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChp
bml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1
cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAt
MjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZy
b21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9y
bWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAg
ICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9m
IHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5j
ZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJp
bmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXpl
KCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
Zyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwog
CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAg
ICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAg
a2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAg
cmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRh
dGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5
Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmlu
ZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJj
MmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkg
KzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5j
b2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
ZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0
NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUw
MDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXko
KQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAg
Z19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRl
cik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2Vu
ZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3Zhcmlh
bnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dl
dF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0
ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dl
dF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0
ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRl
eCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEz
ZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAg
dm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVf
dCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVm
ZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckds
aWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4
ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4
LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0
ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAK
LUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVm
UHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QK
IHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19i
eXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEp
IHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0g
ICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNf
Y2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29u
c3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0
ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEz
NjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZv
bnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBv
cmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwg
b3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlk
ZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9u
dDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4g
b3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4g
Rm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwg
Rm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRh
KQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFw
cGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVh
ODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4YzgyOTQw
MGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNp
YmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFj
azo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6
bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVy
c3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmls
aXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6
Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVs
bG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBu
dWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZv
bnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5
ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2
IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFz
cyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBz
aG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0
Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVh
dGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAg
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0
cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZv
bnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2Yz
NWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMw
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxN
b2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBT
dHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9k
ZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQog
Ci1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBV
UkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEs
IFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQog
ICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUo
dXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgx
MzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEw
MDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwg
U3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0
ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNP
UkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBT
dHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAg
ICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVU
eXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8
IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAg
UmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1
cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwg
V1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1v
dmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYy
MDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5
ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJ
bnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50
MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIu
c2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkp
CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1
ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwog
ICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcg
Kzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3Is
IHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9
IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyAr
MTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChT
aGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdP
RkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBz
Zm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMs
NyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZl
Y3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50
U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdP
RkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7
CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2Yy
OGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2Fi
ZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9v
bCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFs
aWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlm
IGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFu
ZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9T
Zm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29u
dmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4
X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQg
dGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBm
b250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZl
ciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxs
IGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYx
MTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1
NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAv
LyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4g
XSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3Ry
aW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1
ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQx
MzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFy
c2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1
cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24g
eyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpA
QCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlh
bGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFs
aXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNp
ZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5p
dERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0
byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5p
dERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXpl
KCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBk
YXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0
aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRp
ZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1
dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10g
KGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9
KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNl
c3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNl
c3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFn
ZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAg
ICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAg
W3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAg
IFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VE
YXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFW
Q29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3
ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5T
RGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25D
bGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJ
ZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAi
UGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAg
ICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElk
ZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFn
ZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAK
ICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtl
eUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRl
bnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVl
c3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVy
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3RE
YXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1
Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBh
cHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNl
cnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEg
PSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRh
Pj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRh
LmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsK
LSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJp
bmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNl
dFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3Ry
aW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywg
cGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2Jq
ZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJl
bnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0g
a2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBh
dXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAg
ICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5
UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpj
b250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5
SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVl
c3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VE
X1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9
IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11
dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgog
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2Vy
dGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMu
Zmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElk
ZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5
UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpj
b250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVl
c3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFp
blB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5
UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5h
NTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVT
aGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0
aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpO
T107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xv
YWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9u
b3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQg
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVj
ZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlm
IChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2
YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsy
MTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVu
dCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
ciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50
LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwg
ZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBh
cHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2Vy
U3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4
N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIy
OTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFp
blB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXgg
YTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2
YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0
cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAK
IFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
CkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjps
b2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAt
MjM4LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byBy
ZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNv
ZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0g
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAg
dm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExv
YWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFS
ZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1
ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFm
OWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25D
b250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsK
QEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+
IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNk
YTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNl
NmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRp
ZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsK
ICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0y
NTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAg
ICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9
IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAg
aWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VU
eXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2Rl
ckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNl
Y3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4K
ICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNp
ZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAg
ICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291
cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCku
Z2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9u
YXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQ
cm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3Vv
dXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9u
IGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFy
ZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUg
Ynl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAg
IC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFj
ay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9
IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJS
ZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwg
JnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBk
YXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3Vv
dXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQ
cm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUz
ZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAt
MzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRh
KGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewot
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENH
UERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRi
NDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIu
bV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0Yzhm
ZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwg
c2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVy
ID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZl
ci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNj
NTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWlu
UHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygp
IGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
aWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShj
dEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4g
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhj
MzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFh
NzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlw
ZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAg
c3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxp
emVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZh
OTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBA
IGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAg
ICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxl
X3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxl
ZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2Nr
ZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBp
ZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMw
NDc4ZTg0YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVj
dG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICBy
ZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBw
ZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1
Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5k
ZXggYmJiOGMxMzk2ZjAwM2Q2NDI2ODg5NzlhNjg0YzY2MWIxY2I4NzFiZS4uZDAxNGNjNmE1ZGM3
YjE3ZTM5OTYwMDZiZjZlYTY4YThiYzk5NGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApA
QCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5s
aW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwg
Z3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1h
cEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVm
ZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5
YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBi
dWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBt
X2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVh
dGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAg
ICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3OTc5NDgwZjkxYzU5N2FhOWY5MDA5N2MxODgz
MmM2YTE1YzMyY2U4Li5iMzI0Y2YxMTQ2NDdiMzM3NWU2YTQ1YmZhYjEwM2UwYTI5MGZiOGRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MzY5Miw3ICszNjkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1Rf
REVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQg
b2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRh
KCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdT
VF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7
CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkp
LCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXll
ci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5l
clR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApp
bmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMz
YzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBp
c1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZv
aWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciog
ZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJE
YXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4
dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5n
dGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0
aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEt
PnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAg
ICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1
cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGlj
IEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBF
bmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAo
IXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1
ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjY2ZTI5NzllM2VjZjJlZDY5NjJhZDJh
YjUwYWM0OWRiNTg0NWQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaApAQCAtMzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtp
dF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkK
LSAgICAgICAgOiBtX3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5p
dERhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51
bSBmb3Igc3lzdGVtIHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEo
Y29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0
OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVk
aWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VS
Uk9SLCBudWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9Ci0gICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERh
dGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9h
ZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpKSkKKyAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlk
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChz
eXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3Zl
KHBheWxvYWQpKSkKICAgICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtl
Q29udGlndW91cygpKSkKKyAgICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBh
eWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFw
cGVuZChJbml0RGF0YSYmIGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gaXQncyBub3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAg
ICAgbV9zeXN0ZW1JZCA9IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2Fk
LT5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQo
KmluaXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7
IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTg2
LDExICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xh
c3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
aW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0
NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJl
dHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3Jp
ZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2Rl
KCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRh
dGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4
OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZh
MzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwog
fTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2
YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2Ni
Y2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyAr
NDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3Jl
YXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRv
Y3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJy
ZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMw
NWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUw
MzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHN0cnVjdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2Ug
ewogICAgIE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVu
VHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUg
aXRhbGljc0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBp
bnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEds
eXBoIGdseXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2Nv
dW50XSkpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRo
Q292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zm
c2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29u
c3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0Nv
cnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNl
dCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQp
CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2Ugewog
ICAgICAgICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRB
c3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVN
YXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdl
dEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0
b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAo
IWlzVmFsaWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMs
NyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAg
T3BlblR5cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJp
YW50UmVjb3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50
UmVjb3JkJ3MuCiAKLSAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXpl
VmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5
cGg+JiB2YXJpYW50cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFy
aWFudENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFy
aWFudFJlY29yZHNbY291bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBo
Q29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0
aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQg
Z2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5U
eXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9p
ZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
VmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0
OwogICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVP
ZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBA
IHN0cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6
OlVJbnQxNiBob3Jpem9udGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhH
bHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291
bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2
ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
R2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhD
b25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkg
KyB1aW50MTZfdChob3Jpem9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQs
NyArMjA0LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZh
cmlhbnRzT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRz
KiBtYXRoQ29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7
CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNv
bnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpA
QCAtMjIwLDcgKzIyMCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhW
YXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRo
VmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNP
ZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXgg
Mjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0
YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAt
NDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lm
IEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwog
I2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9u
dDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNl
ZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQy
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYg
R2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEs
IGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3Qp
KGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNo
MSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFi
bGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25z
dCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0g
MSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNv
dW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRC
dWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3Np
dGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAo
cG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
OTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVy
LnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0K
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7
CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBv
c2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBA
IC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3Ry
dWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBF
X01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVk
OgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292
ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwg
R2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAg
ICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7
IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXgg
MzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2Fk
NGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQo
KQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQg
d3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5k
QWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1
aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rv
cjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0
YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0y
NjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRo
ZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVm
UHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1l
bW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0
YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
CmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBh
NjA1YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmln
RW5kaWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQ
cmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBA
IC01NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZm
ZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5h
bWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citi
b29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1l
QW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUy
Yi4uNzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNh
bERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJz
dGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJz
dEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29u
c3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJh
Z2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0
IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAg
LTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50
MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5n
dGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRT
dWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlw
aCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50
U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxl
QmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3Vw
KHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRF
bmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0
cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9v
a3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAg
ICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBI
YXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9v
a3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9v
a3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5k
ZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJs
ZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBm
ZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBp
bmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5
cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBp
ZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRd
KSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2Ugewog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRG
ZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFn
LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tp
XS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1Rh
YmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAg
ICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVh
dHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFd
OwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBA
QCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZz
ZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRh
YmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNj
cmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBj
b25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2Ny
aXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3Jp
cHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAg
Y29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNv
bnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAg
ICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VC
VGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZz
ZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3Qg
U2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3Qg
eyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zm
c2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+
KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9v
a3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNv
bnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIs
IHNjcmlwdExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Cisg
ICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1
ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVm
YXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRz
ID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyAr
MzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBz
Y3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1
cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVu
VHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRl
ZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJl
cyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAg
IGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+
KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVy
dGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBl
OjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVU
YWJsZSkKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsK
IAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGho
ZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIp
OwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3
IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjps
b2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAg
Ly8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0
IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0
byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7
CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0
ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAg
ICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2
b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpH
U1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0g
T3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAg
ICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMo
Jm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4u
OGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRl
VW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZv
bnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQo
YnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjcz
OTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVm
M2I3MTFmNTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEy
ICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENy
ZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlS
ZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGlu
Z3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7
CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlv
bkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApp
bmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0
ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVu
aXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250
TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1
ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAz
MWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4
YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2lu
LmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNF
cXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91
c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJk
MjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAx
ZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAg
Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQs
IGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RP
YmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMs
IHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBH
RElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAg
IERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRh
dGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6
ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBjZjJiNTFmNmYw
MjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJh
MjI1OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rp
b25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRS
ZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21h
cnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBt
X2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQotICAg
IFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9t
RGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEh
bV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0
YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxT
dHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29s
IG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2N1c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9t
RGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEz
YTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVk
RGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVy
ZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNl
Z21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEg
PSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0
YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21l
bnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVk
RGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVG
cm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNl
aXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYw
OGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5hNDJlNWJjNGFjY2YzNzIyYTVhZjljOTA1NDYy
ZDA4ZWQ4ODQxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw5
ICsyMjAsOSBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIg
bWFya2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3Ry
dWN0KiBpbmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUND
UHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZl
cjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJf
bGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lD
Q01hcmtlcihtYXJrZXIpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwx
MyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
ICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVy
U2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAg
ICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+
ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVm
ZmVyLT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLnRha2Uo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9p
ZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVj
b2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVj
Yi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAg
ICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICB2
b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2Vu
ZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRk
YWY0ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFjNGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8
U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAq
ZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5j
bGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250
ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5j
bGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRl
bnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRh
ID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3
OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAK
ICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAg
IGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJj
aGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0
dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAg
IGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJj
aGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0
dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6
bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXBy
ZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAx
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQu
Y29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
dXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3Rl
Ym9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgp
KTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRh
ID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9
PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXpl
KCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07Cisg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAg
ICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJl
c291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9
IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFy
ZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJv
bU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFz
dGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
aW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07
CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRh
dGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3Rl
ZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5k
aWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFU
QQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQo
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0
YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAg
ICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVh
dGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNl
dFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxl
SW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRh
dGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFy
ZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgewor
ICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAg
ICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4g
dGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAg
ICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJl
IGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAg
ICAgICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBu
ZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02
NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAg
IH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2
YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07Cisg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29h
VHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsK
QEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFs
bFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3Ry
aW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdl
cilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9m
SXRlbXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
cGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9
CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIz
ZTkzNjkxYmZlZGNjOTJiNDIuLjdhNGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAy
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVy
dGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVy
dGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1f
cHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0Rh
dGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmln
aW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0K
ICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVy
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2Ux
YjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYx
Y2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xv
ciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0
ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
YXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJl
ZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51
cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3
cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmlu
ZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6
Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBA
IC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRl
eHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAo
dHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAg
ICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdh
Y3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRh
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAg
ICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAg
ICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2
YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0ZjVh
OWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5n
OndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVT
dHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5j
bGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRE
YXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQo
KV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGll
bnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCld
OwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1
c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmco
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxy
ZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCld
OwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5Yjdk
MjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhm
OWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAg
dHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBl
OnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5n
ZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5T
KFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJl
ck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRm
b3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5n
JiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAg
aWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JU
eXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0
byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBk
YXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAg
IGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0
eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5j
cmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpw
bGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAg
ICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7
CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNob3Vs
ZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0
YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBp
ZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFzdGVi
b2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBA
QCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlw
ZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0
ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdy
aXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5
cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1
cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNh
ZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZv
cm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAg
ICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAo
IWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAg
aWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1
dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRl
bT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+
Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3Jt
RGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAg
ICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXgg
MjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUw
MzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9k
YXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllf
TE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2Yjdi
NTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAt
MTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAg
ICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkg
ZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdp
dGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3Jp
dGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1
MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERh
dGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRh
TG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0
YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9
CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtl
RGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRh
dGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0
YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggYTM3
YTBkODc0ZjcyYmY5MWJkNTJjM2FjNmI1ODVkMzMzZjBmY2EzYy4uYjE3NDk3NDQ1NGJmNzM5ODkw
OWNjOGJlYTRkMGEzYjk1NzlhNzg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRh
OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIo
KSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAg
ICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5k
YXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJM
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRl
eCA2ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1MzNjMGZm
NDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIyOSw3ICsy
MjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBt
X2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3Ry
ZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmlu
ZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUx
OTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9
IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2Vp
dmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuY3BwCmluZGV4IGY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5MjUzNjk0
YWEuLjg4ZGVkZmE0NWMzZjRjNDNhMzgxNTI4MGRhNWE0MWUyNjk3NWI3MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEoQ0ZECiAgICAgICAgIAogICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlk
UmVjZWl2ZURhdGEoaGFuZGxlPSVwKSAoJXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGhhbmRsZS0+Y2xp
ZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlQnVmZmVyKGhhbmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdl
UXVldWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4
ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0
MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVz
b3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAg
ICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNl
KHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1
Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkg
KzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBz
aXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFz
cyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9y
U2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7
IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAg
IEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5p
cXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRh
c2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0
ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25z
dCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0
ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZl
clNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBh
YmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5k
YXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVz
dCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2ls
bCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlm
ICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1
ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5n
ZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRh
c2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRv
IGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tE
YXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMg
fV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNr
KSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwg
Z2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3Rh
dGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdl
OwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZm
ZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5k
ZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZl
clNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZp
ZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1
ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQs
NyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZm
ZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8v
IEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hv
dWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlz
IGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdp
bmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91
cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEt
PmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdp
dmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0
ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNv
dXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRp
b246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEp
XSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6
ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9
IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5k
ZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZk
YTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMg
Y2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUg
KHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpF
bmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9m
IHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEu
Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJv
dW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91
bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFs
bCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVm
ZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChv
ciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEu
Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZm
ZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzVi
MGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2Yx
NGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lk
IEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUg
IT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2Fk
RmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0
M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNk
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0
OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50
bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0
b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUo
YnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24o
KS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBX
VEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5l
dHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2
MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2
LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQo
U2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAo
ZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlN
ZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4
LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYg
dXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEg
dG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wg
dGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0g
ICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChk
YXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUo
dGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsK
ICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5k
ZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYw
M2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5k
bGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3
ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAg
IGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5
dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVz
dWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSBy
ZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5h
c2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNk
MTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEz
LDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VD
b250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRh
KCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3Bv
bnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5
ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAK
ICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJf
cykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1v
Y2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQp
OwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0
cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBp
ZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7
CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2
NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1
ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZm
ZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmlu
ZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNj
cmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFp
bnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVy
ICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21l
bnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9i
dWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+
c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0Zjgu
bGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIz
OWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRl
YTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmco
KSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZm
ZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8g
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5z
aXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0Vt
cHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFw
cGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0
aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZl
cjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3
NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjg1ZTc2MzgzZGFiMzUzYTRm
YzRiMDlkMTI3NzE4NWEwMGU5ZTIzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJM
JiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAg
ICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2Uo
bG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUpCiAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwog
fQogCitib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051
bGwoKTsKK30KKwogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewot
ICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygp
KTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRh
OworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRh
ID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91
c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7Cisg
ICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAg
ICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcs
OSArMTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJy
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcu
LjFiM2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9v
bCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9
CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQq
IG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2Iw
ZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4
MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwg
RXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2Ut
PmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90Jikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0
M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRT
dG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
cwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBw
aW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRv
cnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3Vs
ZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBw
aW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
OjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9p
ZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmlu
ZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIw
ZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNh
Y2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
KG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NF
dmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRw
UmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJs
b2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6
IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBz
ZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0g
c3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3RE
YXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAg
ICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgp
OwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29u
dGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9u
c2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0Lgog
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3Zl
KGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZm
ZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVm
ZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwot
ICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9
ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0
ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVz
cG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7
CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7
CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEw
NjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNv
ZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBi
aW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAg
ICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFl
NWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJj
ODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2Vy
R2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8
dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAg
LTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3Bv
bnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0
MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1Yjkx
MzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRl
ckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
ICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJj
ZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0
QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEy
MWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29u
c3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAg
ICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIw
MjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0
MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1l
Q29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0
YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwor
ICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVy
LCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3Mi4uNjM5
OWFmZDE2ZWQ4MzMxYWIyMzg4OGJiYTY5NmE3MGQ4NzI4ZmUwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
OTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0g
ICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVw
cmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRl
KG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1Jl
cGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBt
X2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMo
Y29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JD
cmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0z
MDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3Jr
TG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1f
cGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAK
ICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAg
LTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYg
KG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAg
ICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlN
RVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJT
dHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3Ig
bXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBo
YW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCAr
ODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsK
KyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1p
dCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRl
IHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVk
IGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVm
ZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0g
ICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERh
dGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1
ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0
YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwg
LTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7
CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2
LDE1ICsxMjU4LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQo
IW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwog
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICpt
X2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVm
ZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAK
LSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CiB9CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5
U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVz
dCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVF
bnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEs
MTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkK
ICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXND
YWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAg
ICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNl
KSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1h
cHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2Uo
KSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNo
YXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJm
YmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0y
MjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7
IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERh
dGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0
MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdU
aW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVu
aXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRp
bmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3Bw
CmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5
MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3
IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2sp
Ci0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYz
YjE5ZGM1MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThh
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3Bv
bnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1
MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUo
YnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIx
NDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29k
ZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAg
RGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29u
c3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6
IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90
JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBD
YWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJl
Y29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJl
Y29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1
cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFh
YTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNk
N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNv
cmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRl
cihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5
OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwg
bV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZl
ciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5k
YXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwg
bV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRj
ODE5My4uZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2Vp
dmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAg
ICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3Vj
Y2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAg
Ly8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAg
ICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAy
NDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAg
ICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVu
dHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkg
eyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNh
bid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNo
ZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAg
IG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9y
ZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRD
b21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIy
YWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUx
ZDdhMDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03
NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1
YTMuLmY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAg
ICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25z
ZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRl
cyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdC
eXRlcygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVh
bSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMu
Z2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMw
YzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4
MTAxZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJl
ZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMx
MDhlNTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2
MGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aApAQCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBk
ZWZhdWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQor
ICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1
ZmZlcik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygp
KSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJl
dHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0K
KyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsg
fQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2
NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0
CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRC
dWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBz
aXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAg
ICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVj
dGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2
YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8v
IFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWdu
ZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJp
dmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNo
aXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1
ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgs
NyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBj
aGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291
cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hp
dmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFz
ZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0
NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAg
ICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28g
dGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0Lgot
ICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCkt
PnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEu
dmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5
YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgz
OGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQg
Ynl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRh
LmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
eyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdh
ZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUy
ZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApA
QCAtNTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291
cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAg
ICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAog
ICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9
CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0g
U2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0
ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2Ni
NGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
ICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAot
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJs
aWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1v
cnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAg
UmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBh
N2U2MGUyMWJkNDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1
ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQog
Ci1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNl
bHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBl
c0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5j
b2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEp
CiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2Rl
ciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0Fu
ZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwog
ICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAot
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVy
JiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNB
bmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEw
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVj
b2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVz
LnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1
ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25z
ZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAg
IFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHks
IFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAg
ICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkg
ewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVy
PFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQ
YXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAt
Mjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJl
dHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
IH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3
LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZm
ZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVy
KGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIo
ZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAg
ICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNv
ZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAy
NWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2
Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBj
bGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50
aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAg
LTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3
OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNh
N2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRh
dGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0
YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0
b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5
MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYx
MmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxG
b250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3Jt
RGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0
YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFj
ZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZv
bnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNj
NGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2
YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFk
ODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdi
NGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApA
QCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5T
U3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsg
bV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNF
bmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFiOWRk
YzdhNDYxOGZlZDQyMmVjMzg5NzQwMzUuLjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3
MTlhMWE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4g
dm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25z
dCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+
IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1
bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4g
dm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsK
ICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1
NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAt
MTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0
dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7
CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwx
MCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVk
RGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lk
IEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBz
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkK
IHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0
ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNi
MGI1MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdo
dDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxp
Z2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAg
YXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRX
aXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRl
eHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19X
S0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdo
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdl
Om5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGln
aHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBX
ZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVk
SW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxp
Z2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIw
NTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIy
ZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRh
dGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1
bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRh
ID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgp
OwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+
c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3Vz
dG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5k
ZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0
MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYw
MzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyAr
Mjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5T
UGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9i
amVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFz
dGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBu
aWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBA
IC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVB
bmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBw
YXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNE
YXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRh
ID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXRE
YXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJB
cmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0
NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZElt
YWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNl
ZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0Rh
dGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQs
NyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ry
b3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1f
cHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1f
cHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3
cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRp
bmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0Rh
dGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAg
ICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVm
ZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFn
ZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2Vu
ZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEz
MTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
Rm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVu
dChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZl
SW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBX
ZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFw
SWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA1YTgzMmU1NWFjYmExODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li45ZmYyM2E4NjZmZjBk
ODYyNzUxODViZjYyOWYxYTQ3NmNmNGZlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0
ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAg
IGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAg
dm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3
ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3
NjcwMzU0ZmVhZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1l
VGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAs
IG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5m
byhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAm
cGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0
aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTg3
LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0
cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAg
ICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1f
c3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhj
ZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5j
KCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNE
YXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRh
LT5zaXplKCkgfTsKLQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsK
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1f
c3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+
aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIx
YjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVm
ZGFhYjdhNWExYmU2YWRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBA
IC00NCw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE3
LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29t
cGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNw
b25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAg
IFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBm
YWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4u
ZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jiwg
Ym9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9u
RGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVs
ZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmlu
ZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4
MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0
aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NB
bGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCAxYTgxY2NlNDQ1NWViMWE3MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNm
YmQ5ODQ5Yjg0YjZlN2FhZmEzNGNmN2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyAr
MzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24g
d2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVi
b2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAg
ICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZv
Y3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAg
ICB9CkBAIC02NTk5LDcgKzY1OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9y
aWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAg
IGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAg
ICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25T
aGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVs
ZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0
YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1
bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBl
eHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFn
ZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1h
Z2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsg
W3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTli
Y2I2NGVkYmM2Yy4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0x
MzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBi
NDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThi
Yjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0
MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjlj
MWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
U2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYs
IFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYs
IGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4
ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVs
ZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxl
ZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdy
aXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSku
Z2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAg
ICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRp
dGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0
aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9l
ZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6
OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcg
KnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5h
cHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAg
ICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRl
eCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUy
OTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYg
cGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJ
KCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsK
QEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAg
cGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChh
dXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygp
LCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4
IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZi
ODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5h
bDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5h
bDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBE
cm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6
U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1
MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdm
NmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJl
cwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAg
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRh
dGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJl
ZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0g
QVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hh
cmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVm
ZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFy
ZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJl
ZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29u
c3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVm
ZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkp
OwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2Up
LCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwo
KSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5z
dHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0
ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBk
YTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAg
ICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291
cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBh
dGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNj
M2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAuLjhiNTgyMTE0YjkzNWIyNzI0ZTllYWQz
M2Q2Y2E0MmNmZGYxMmNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcg
KzI4MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFu
ZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYg
KCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1
ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYu
Ljg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9j
ZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9u
c2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNl
cHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlciht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBk
aWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVk
RGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2Nzcu
LjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5
LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxl
bWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1f
cGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAg
ICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1
Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3Ry
ZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93
ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNT
RVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVk
UmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAg
IG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFs
aXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6
OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAg
IG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBA
IHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9p
c0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1E
YXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
KQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAg
ICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6
OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25z
ZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0g
ICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRh
LT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+
dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkp
CiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5k
YXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJm
Y2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8g
RklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIs
NyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9t
YW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFs
U3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxT
dHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZv
aWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcu
CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2Jj
YzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2
YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVm
ZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9y
ZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJC
dWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9u
c2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VE
YXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkK
ICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAg
ICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNo
KQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0
N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1
Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRl
cj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0
YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7Cisg
ICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRi
ZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndp
bGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUy
MmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0
aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lk
IGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAg
ICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsK
ICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1
Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQz
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWlu
UmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5S
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFG
b3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCmluZGV4IGY0MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYy
YTEuLjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5
cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8
dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6
OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2Fy
ZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZl
cikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBu
YXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlw
Y0hhbmRsZTsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYs
NyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAx
ZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2ZmMzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2Zm
NGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVU
b0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVl
ZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi43NmM2MDI4ODgxMzUyMjA3MWEyMjc2OWQ3
M2YyZDNlODA4YmFjM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmll
d0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1f
ZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJ
RCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQor
ICAgICwgbV9idWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ewogfQogCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5k
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFr
ZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkK
IHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAog
dm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJj
MjZjMDdjYjUzZGE4Ny4uYWUwNTBhOTkyM2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEz
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViRnJhbWU7CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
U3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5
YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9u
c2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1h
Z2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1
ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdl
YkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7
CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBh
dXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRh
ICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAg
ICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1
ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVt
b3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0
MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5S
ZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1
cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcg
V2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2
M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIw
NzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
Q29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJv
YXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsK
ICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
KmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUz
MzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7
CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAg
cmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
U3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFW
RShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZk
ZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJl
NzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFS
ZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1h
Z2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilt
aW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2
YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmlu
YWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMy
YzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIy
MDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0
MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBX
ZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVu
dGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5
YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0
ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
Pj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2
YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdl
ODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcg
KzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JU
eXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJm
OTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdj
N2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQog
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1By
aXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNv
dXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5S
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQz
N2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2
ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNw
bGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpw
YXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJd
LT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9
IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0
YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERh
dGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIx
MGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3Qg
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVz
dFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVj
dDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhC
eXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAg
ICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICgh
aGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFk
NTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5
N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2Rl
ciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRy
PE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1l
VHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkg
ewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsK
KyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5
cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3Vy
Y2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVO
YW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNw
b25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2Vi
UmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBm
b3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJs
IGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1p
bWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVL
ZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3By
aXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3By
aXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApA
QCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVu
Y29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVy
KiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51
bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5j
b2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29y
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNv
cmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRi
NjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0
cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5
U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50
Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1l
bW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3
MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBA
CiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgot
ICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4g
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBw
cHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7
CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9O
RyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkw
YzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6
OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRh
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4u
ZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0K
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNm
MS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmco
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAg
dm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAg
IHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFm
YjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyAr
MTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0
cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVY
UEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+
bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0
YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXBy
ZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5
MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJhMTRkOTE0
NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VM
VCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1p
bWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYg
KFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpAQCAtNTk1
LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVh
bSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAgIC8vIEZJ
WE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCBy
aWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBW
ZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFk
KGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkp
LCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZm
ZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAg
ICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9h
ZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwg
dXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlw
ZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVj
OGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZj
ZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2Vi
UmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNv
dXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThm
Mjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBj
bGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0
YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAog
ICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBkMTBmYzJmZmViMmI1ZGJhMGM1MWIyYmFhN2M1YWNjNWUwZDY4OThiLi4wYmU5MTYyY2M2NGUy
ZjFjYjQ0MjFlZmFhNGYzNTAzZmM2MWY2OGU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjggIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVy
QnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6
Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorCiAyMDIxLTEyLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdlYiBjb250ZW50IHByb2Nlc3Mgc29tZXRpbWVzIGNy
YXNoZXMgdW5kZXIgV2ViUGFnZTo6cG9zaXRpb25JbmZvcm1hdGlvbigpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZj
MWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLmM2OWIxNjE2YzBjYWRhNTMyNGQ3
MmRiNzMyMTJkZmNlZmJhNWRlMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBA
IC00Myw1MiArNDMsNDUgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxM
KGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkg
PT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNU
X0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkg
PT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgp
LCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNp
emUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBFWFBFQ1RfVFJV
RSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
ImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+
ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgp
ID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAt
OTYsMTAgKzg5LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1
ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRh
MVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
c3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRl
c3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRl
c3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdv
b2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3Rl
ZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNh
dGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNCwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQw
MDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3Zl
KHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVk
QnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZl
Y3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTE1MSwxNyArMTQ0LDUzIEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3Nh
IGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBw
cm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1
IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0
ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWlu
IGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgot
ICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NF
UlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNt
cChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwot
ICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVy
MS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29w
eSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIx
LmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9u
ZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9F
UShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRl
cjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7Cisg
ICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5z
aXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
YnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAg
IEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxk
ZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1
dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFy
ZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0
IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAs
IHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJl
c2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xNzUs
NjAgKzIwNCw3MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAn
YicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywg
J2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAg
ICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsK
LSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMx
ID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdl
JywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaics
ICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIp
KTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBi
dWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRh
KDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gx
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVE
YXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0
byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0g
YnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYp
OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBh
dXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250
aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNv
bWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJh
YmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAg
IGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVm
ZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEo
KSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5z
aXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXpl
KCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6
ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgp
LCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAg
IGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkp
OwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBb
XSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAg
ICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJu
IGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOwor
ICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEg
PSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9
IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShi
dWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0
b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVy
MS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywg
J2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdj
J30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5n
ZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7
Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90
Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9
IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYics
ICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdj
JywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwor
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVm
ZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9
IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwog
ICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VR
KHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJl
c2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZl
ci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI4OCwxNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIp
OworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
fQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzEzLDE1ICszNTMsMTcgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRh
dGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBk
YXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAg
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
JmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxk
ZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVl
a0RhdGEpCkBAIC0zNTgsMTYgKzQwMCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVy
LnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBF
Q1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsK
KyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQwNiwxNyArNDQ5
LDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJ
bk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNp
bXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQot
ICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQ
RUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFk
NzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMw
YjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0IEBA
IHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhw
ZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEg
XSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZv
ckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgp
OwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3
b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxs
b0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhl
bGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIg
c2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdl
dCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1
YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVn
ZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGls
ZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1l
bnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUg
KGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50
YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9u
ICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RC
eXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0
byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRv
RGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445996</attachid>
            <date>2021-12-05 21:52:35 -0800</date>
            <delta_ts>2021-12-06 03:31:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211206165234.patch</filename>
            <type>text/plain</type>
            <size>137851</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMzZDk3YzdkYzUzMjU3
YzgzYWI3YmE2Nzk0ODdmMmI3MmVkYmFhMC4uOTI4YmFhZWY0OWEwZmNhMTNhZjM3YWU3YTExZDEz
NzRlOWNkNWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNWEyZWY3ODE4NDdmZmQ2OGM0YmNiNDQy
ZTc1MzVjN2JkZDU4NDA2Li45MzMxMGY4Mzg3MGM2NGIxNjAzMTI2NTZkNjQ4YTYyNTJmMzk1MmQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZiNWM0ZjJiMGZk
ZWUuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMmYyZTgyYzJiMTdmM2M5NGRlYmYwYTZhNDE4ZjQ0MzNlNGFh
YmQ2YS4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDE5ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
LSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJj
ZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQog
ICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitjb25zdCBTaGFy
ZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9yZXNvdXJjZURhdGEtPmlz
TnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNv
dXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0
ZWU0MmI5MTcuLmNmODIxNzRiZThlZDg2N2Q0NzgzZWNhYTEzNmI1NzgzOTJjMjgwYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpA
QCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3Mg
TGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NB
VE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNl
TG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJl
ZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQg
ewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVz
b3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVk
QnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRh
KCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsK
QEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVx
dWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSBy
ZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAg
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAg
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5
MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRm
Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0z
Nyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQor
ICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJv
dGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNm
YmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEy
OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEo
KS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+
YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OS4uYzc3MGQ3NjQx
MzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMzZDFmYzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBA
IC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFT
dGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hl
UmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRh
dGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBm
dWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODczLDEy
ICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1
dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNl
IGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRh
dGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1v
cnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRh
KCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+
c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXgg
YWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uOTkzYzJiOGU4MzBkYzNk
NzVjNWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDggQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFzIGFz
Y2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBBU0NJ
SSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmluZygp
LmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlT
dHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOworICAg
IG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiLCBj
b250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJsLnN0
cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3Ry
aW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEuYXBw
ZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0cmVh
bSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEgPSBy
ZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3Vy
Y2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1
b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQ
cmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERhdGEt
PmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAg
ICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxEYXRh
LmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAgICAg
ICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cgYXMg
aXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JMRnMu
CkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAt
IGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5h
cHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAgICAg
ICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgbWh0
bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAg
ICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAoaW5k
ZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2NpaVN0
cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0gICAg
bWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1sRGF0
YS50YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA3MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjli
NmMzMWQ0MmM1MzJmLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAg
ICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3Vu
ZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBj
aGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVu
ZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNm
ZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBj
b250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOwor
ICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVh
ZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENo
YXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7
CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVj
aWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAg
ICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgo
KSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUu
bGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBm
b3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2Rl
ciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29udGVu
dC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxy
XG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5MywxMCArMTkz
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZSgpLT5t
YWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0
byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2Rl
KGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFs
aWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTIwNSwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJs
ZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRh
YmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5z
aXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0Ogog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1
b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVu
ZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlk
IGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY2MWE5
OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYuLjkwZDFjNmEyYmE4YzRhNDJlMWZl
YmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZm
YjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZm
MzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVs
bHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA2NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2
N2U1M2ZhMmY4YzUwLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9k
eURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBh
cnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9p
ZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5
M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFs
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7
CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGY2NDMz
M2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MuLmY5YWQ3NzEzYzYwM2E2YTBhNTZi
Y2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2Fj
aGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggMGI3ZWQ5
YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2
MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19B
U1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDcyYzE5
ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUuLjdjMDFjOGNjMjMxMTc4NmM2MjRm
NDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdl
OjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsNyArNTIzLDcgQEAgYm9vbCBDYWNo
ZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAo
TW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRz
KCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZO
ZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5
LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRh
dGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERh
dGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4
NzNiMTI4MzQyZjUuLmQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEy
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAg
IHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRl
SW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsx
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNv
bnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IElt
YWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAg
ICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRl
eCA4NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjLi44NDJiZjVmMjBlMDZm
ZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNE
YXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBhbnkgdXBkYXRlQnVmZmVy
cyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRl
IGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90
aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJj
ZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBt
YXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxs
YmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5
NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1
MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVF
cnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGll
bnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWlu
OwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBt
X2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGRlNzhhY2IyMjEwYTFmZjRlZmE5NmMwNWY4NDkx
OWIyNjVkMDFjYWQuLmNmNGYwMmM1ZDc0MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAt
MzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hl
ZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7
CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcy
OTZmZmU3NTcuLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSAr
MTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVz
b3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNv
dXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGRlNTdmNDA0MDM3MjRj
NTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUuLmIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5
YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1l
bnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5h
bWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUg
bmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYz
NjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5iMDEyYmE5OGVlZGY3MzJjMDgyYzM2
M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQ
dHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKaW5kZXggZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MS4uYjg3
YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdW5zaWdu
ZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwog
fQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4u
NzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rlciog
dGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQo
KTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IGFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcx
ZjNiMjQ3MTlhMmEzMmEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKQEAgLTUxLDEzICs1MSwx
MyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2Uo
KnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFj
azo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1
MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICsz
NSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2Rl
ZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7
CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBjMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMy
NWQ4NTJkYTZiMTFmZDMwLi5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFj
ZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVm
YWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQz
ZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAy
ZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJldmll
d0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAK
IGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xv
YWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERh
dGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwog
ICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBt
X2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1
YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjUyZmZkNTM3YmZkNjJmZjY3ZGVjZDQ2NGI2NWZiNmM5MDU3
MDYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
ZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAg
ICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAg
IG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwog
ICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVy
KFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnBy
ZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZl
cnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9y
UHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIp
OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3
ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0g
ZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMp
IH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2
aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmln
aW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRh
IHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3Vy
Y2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3Jl
TG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcx
ODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgzYzZmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdF
cnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJl
dmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAg
IHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRl
cjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdD
b252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkK
ICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAK
ICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkK
LSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9w
cmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVj
ZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAy
YTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi4wNmI3NmY1OTg1MTgyYjk3
M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Myw2ICs0NCw3IEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3
Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
cHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmll
d0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVw
ZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDU5ZjBj
YTJjNDZjMDMyMjA4YjY3ODgzMWMyNDYxY2YxY2IwMmMwZGYuLmM5NTQ5NjhiOTFhYWZiZjA2NzA0
ZGY4ZWQyZmE5MDAyZDYwNTRmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtMTgxLDE5ICsxODEsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotI2lmIFVTRShGT1VOREFUSU9OKQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgotI2lmIFVT
RShDRikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwotI2VuZGlm
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0KICAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKQEAgLTI0OSw2ICsyMzYsMjAgQEAgcHJvdGVjdGVkOgog
ICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRz
IGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhl
IFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9z
aXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwpAQCAtMjc1LDExICsyNzYsNiBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2Fs
bCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgotICAgIC8vIFdo
ZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxl
dGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0
OwpAQCAtMzA2LDYgKzMwMiw3MSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAorY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90
IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFy
ZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisg
ICAgICAgIGlmICghYnVmZmVyIHx8IChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlz
Q29udGlndW91cygpKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIp
OworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBh
IHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxk
IGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZm
ZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSB7CisgICAgICAgICAg
ICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdz
JiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
ZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZv
aWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAg
IHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0K
KyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAg
IHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAg
ICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDY4
YjA4OTRjYzg1NmVmNTIyNzAzNDM3MDI5YjI2YzViM2RkNTkyNTQuLmI5Yjg4MjBhNjkwYzljNjY0
NTFhMWY1MjVmNDE4MzljODYyYzFiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTY4LDcgKzY4LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
aWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3
M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IuLjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4
OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcs
NyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRz
TWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAg
ICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUs
NyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEg
aXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgp
Ci0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwog
CiAgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygp
OwogICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwx
NyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFy
cmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEg
PSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29u
RGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAg
IGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAg
cmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRy
YWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXRE
YXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgp
IHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7
CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBr
ZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYQogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdU
Rk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMu
dGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2lu
Z2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4u
NTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAg
ICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggZGY2MmIzZDczNjNlZWU2OWVlZTI3MjJhNGNk
MDZhMmRhNDlhNjBlOC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1f
cmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQg
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9i
dWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZm
ZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg4LDcg
KzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQog
ICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpu
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1
ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFk
YXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmlu
ZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5ZWRkNzkzM2YzN2M0NTFmMzJjNTAuLjY2ZTI5NzllM2Vj
ZjJlZDY5NjJhZDJhYjUwYWM0OWRiNTg0NWQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllf
RVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVn
b3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAg
IEluaXREYXRhKCkKLSAgICAgICAgOiBtX3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkg
eyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAg
ICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkK
QEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xP
Ryh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwg
R1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEi
LCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQo
bWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8g
cGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5
bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJp
bmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDog
bV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5l
ZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXls
b2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAgICAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5k
KHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgLy8gaXQncyBub3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVy
ZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAg
bV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9h
ZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2Fk
LmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAg
IHsKQEAgLTkwLDcgKzkzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5
c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVu
dHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTU2NDcxMjAwMTY3YTNm
YmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NC4uYTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQw
OGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyAr
MjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1h
cmtlcikKIAogc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsK
ICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlz
dDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01h
cmtlcihtYXJrZXIpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBA
QCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpw
ZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NI
ZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7Cisg
ICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFy
a2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlm
IChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwor
ICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1Mu
bW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJi
MTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZlNjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcg
QEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3
Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkgfQorICAgIDogbV9wcmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9
CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRl
IHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhE
ZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgy
NTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAg
LTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBt
X3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEz
YjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdm
MTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0
ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBu
byBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xv
c2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJE
ZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9
IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
ZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJu
IGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRl
eCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMx
MTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6
IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNl
KSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNr
RGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9Owog
ICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6
ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIg
fSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAg
ICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAg
IFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nl
c3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5Rmlu
aXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIg
QEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJl
c3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVy
OwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6
IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIg
dGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAv
LyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQg
d2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZl
ciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAo
YnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBh
dXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0
YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFz
ayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9
IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNr
ID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0
ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5T
VVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAs
NyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rh
c2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2Ug
PSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5u
ZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChi
eXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAg
ICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5k
KQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNl
R2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAg
IHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIu
c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENv
bnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFk
IG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExl
bmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAg
LTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0
b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0
YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXgg
NmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdi
OGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRC
dWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0
ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRh
dGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVt
cHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0
eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsK
IH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVu
dCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVu
dCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0
YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmco
KSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2Vn
bWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVT
ZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmls
ZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNl
Z21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAg
IG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVm
ZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3
OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29u
c3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29u
c3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5n
ZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5j
b3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4o
bV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3Jp
cHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVU
Ri04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1
ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IGE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3
NjMwMjYwZDYxYzFmOWZiYzcuLjg1ZTc2MzgzZGFiMzUzYTRmYzRiMDlkMTI3NzE4NWEwMGU5ZTIz
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExv
YWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVy
bCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7
CiB9CiAKQEAgLTc1LDE4ICs3NiwyMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9h
ZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwg
V1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCitib29sIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5n
ICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051bGwoKTsKK30KKwogYm9vbCBXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
KQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJy
ZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkoY29udGlndW91c0RhdGEpOwotICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7
Ci0gICAgICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKLSAgICAgICAgICAgICAgICBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250
aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYg
KG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFr
ZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAg
ICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29u
dGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAg
ICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAg
bV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTIxLDkgKzEy
Nyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNk
Nzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFlODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAog
I2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xh
c3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpA
QCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1f
ZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xv
YWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJy
b3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBA
IC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2Zv
bnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAz
ZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2
YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQo
ZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkp
CiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBl
OjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRs
ZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRp
bWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJl
Y2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBi
YWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAg
IGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFu
Z2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAg
IGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJp
bmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJl
c3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUg
ZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9y
bWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBB
U1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAg
QVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwg
MCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2Rp
bmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVz
cG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBu
dWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVz
cG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEu
Ci0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5
MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBA
IC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZv
cm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNz
IFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7Cisg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
OwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDU3N2Q2NTZlNjdmY2NhNDY0MDUwYmZkMzRkYWRjMmEzNjI1ZTIzMDEuLjYzOTlhZmQxNmVk
ODMzMWFiMjM4ODhiYmE2OTZhNzBkODcyOGZlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwNSw5ICsx
MDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9h
ZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7
IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9
CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZl
cmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZm
ZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NF
bmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAtMzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAg
ICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmlu
Z1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAg
ICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0g
ICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkK
ICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VM
b2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUo
KSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1h
eGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZl
cmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2Ug
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1
ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNo
cm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVk
RGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAg
aWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7
CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZh
bGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAv
LyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4g
Y2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBj
YWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2Nh
Y2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7
CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBG
SVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhl
IHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBi
dWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9i
dWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCAr
PSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVk
KCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlm
CiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9u
b3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwg
bmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVl
c3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERh
dGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZl
cmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwg
dmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAg
ICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZm
ZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29y
a0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NiwxNSArMTI1OCwxNSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VS
VChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkp
OwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjgxLDcgKzEyODMs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQog
ICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3Rv
cmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Cisg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVu
dHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMjg5LDEyICsxMjkxLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVm
ZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3
b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAg
TE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBp
biBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgp
LnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9y
ZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAg
c2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1
ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJf
UkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAg
ZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRS
ZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFts
b2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBt
X2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9
XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3
MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjM0NWMyZmJhNzk4YzZkYjZhZGI3NzIxMTMwYmUwNGYw
ZGY0NDE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9s
YXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFz
cyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJl
Y3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRh
PiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtD
YWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2Fw
VmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RG
b3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZDQz
YzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9u
c2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9y
ZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0g
bnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAg
Ym9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09
IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYm
IG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVu
dCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0
IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxs
cHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0K
IH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9k
aWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+
c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAg
ICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3Jl
LgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURl
ZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVF
bnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwg
V1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThm
ODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQx
YTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JD
YWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBmOTRkZTkzM2ZkMGNkNDNl
NDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4Li41ODU0N2Q4NDg4MWRjODMwZjY5NjlhMGNhOTc2NzAz
NTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNr
KFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9y
ZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdl
KSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25I
YW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xODcsMTAg
KzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7
CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAg
ICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5j
RGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRp
b25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkg
ewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEp
Ci0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5j
RGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0
YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEp
KTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxT
Y2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBt
X3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
aW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uYjA3YzE0OWZk
NGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFu
ZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
c3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1f
c3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMx
ZThjYzEyMzFhNjc3Li41OGMxYzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0NjE1ODUyYTAyMDg3Zjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1l
bnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBh
Z2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBh
cmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAg
LCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
KQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0
MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7
CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRl
OjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEp
Ci0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVh
bFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVy
cm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTky
OSw4ICs5MjcsOCBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1f
bWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7Cisg
ICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5p
c2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRS
ZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVy
IHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFu
dWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVh
bFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
YnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1l
bnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZi
MzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjM0YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBk
YjNjZDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29y
ZS4KIApAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBp
cyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVy
aW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFp
bnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5k
ZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZkNWYy
MDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3Bv
bnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0g
U2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWls
ZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hP
bihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAo
bV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZm
ZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlm
IChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBk
ODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zl
dGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2gu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2Vi
Q29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVz
cG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNo
IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc2YzYw
Mjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsg
dXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVh
cigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVm
ZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVl
c3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2Vl
YzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5hZTA1MGE5OTIzZWE3ZWY5NTU1Y2Jh
MTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmll
d0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTU0LDcgKzU5LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcg
bV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZl
ZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3
YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1
LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6
OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0lu
XyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQo
ZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDEx
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9J
bl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBk
b2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0
aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNv
bWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkK
LSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNo
YXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0
YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1v
dmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0
cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNv
ZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYzk5Y2Q3NzI5NmNl
NmI1MDU0MWJjZTlhMDRlMGYyYjcxOGJmNTE5Li4wYmU5MTYyY2M2NGUyZjFjYjQ0MjFlZmFhNGYz
NTAzZmM2MWY2OGU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIw
MjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCAxYjczNjNhODI3MjVjNzM4NTRk
NDk5Njg0MDNiYzBmYTQ1NGE2NzY3Li5jNjliMTYxNmMwY2FkYTUzMjRkNzJkYjczMjEyZGZjZWZi
YTVkZTM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDksNyArNDksNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmls
ZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkg
PT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwpAQCAtNzIsMjQgKzcy
LDE2IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQogICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRh
KCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0K
IAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZl
ci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVD
VF9UUlVFKCFidWZmZXItPmRhdGEoKSk7Ci19Ci0KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBh
cHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoY29udGln
dW91c0J1ZmZlcik7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250
aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwg
MSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJs
ZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUo
IW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTcsMTAgKzg5
LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAg
ICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldv
cmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwg
c3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwg
c3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwg
c3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIg
PSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwog
ICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwog
ICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVu
YXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24p
KSk7CkBAIC0xMTIsMTAgKzEwNCwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ix
KDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZN
b3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIp
KTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihX
VEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsK
KyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTE1MiwxNyArMTQ0LDUzIEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZp
bmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3Jl
bSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBs
YWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwg
bGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVp
bGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0
RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9y
ZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VS
VF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVu
Z3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVY
UEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0
LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7
CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkp
OworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5n
dGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisg
ICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQor
CitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRh
MFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRh
MCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5
ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkp
OyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5n
ZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAg
IGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5p
c0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAg
YnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNo
ZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29u
c3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xODAsMTkgKzIwOCwyMSBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdm
JywgJ2cnLCAnaCcgfTsKICAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycs
ICdsJyB9OwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOwotICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMz
KSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFi
Y2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwogICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1
dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoMTApOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKTsKICAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0
byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwg
PSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwg
YWJjZC5zaXplKCksICJhYmNkIik7CiAgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNp
emUoKSwgImdoIik7CkBAIC0yMDEsNiArMjMxLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGdldFNvbWVEYXRhKQogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wi
KTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVm
Z2hpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7
CisgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIp
OwogICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKICAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVj
a0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CkBAIC0yMDksMTYgKzI0MCwxOCBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVj
dG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwog
ICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVy
biBidWlsZGVyLnRha2UoKTsKICAgICB9OwogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgp
LCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4o
eydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgp
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0p
KTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2In
LCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCiAgICAgRVhQRUNU
X0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCks
IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CiAgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0
KCkpOwpAQCAtMjI4LDExICsyNjEsMTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1
YWxUbykKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcg
cmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIx
MTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAg
IGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3Ry
aW5nKCksICIiKTsKIH0KIApAQCAtMjUzLDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxl
VGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVO
QUJMRShNSFRNTCkKQEAgLTMxNywxNSArMzUzLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiAgICAgdWludDhfdCBkYXRhWzI1Nl07CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkKICAgICAgICAgZGF0YVtpXSA9IGk7
Ci0KICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIDI1
Nik7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKGRhdGEs
IDI1Nik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCAyNTY7ICsraSkgewogICAgICAgICBjaGFyIGMgPSBpOwotICAgICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCgmYywgMSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZjLCAxKTsKICAg
ICB9Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQpAQCAt
MzYyLDE2ICs0MDAsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVl
a0RhdGEpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1w
bGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAK
LSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1
ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBF
WFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2so
YnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0
LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCkBAIC00MTAsMTcgKzQ0OSwxOSBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21l
bnQpCiAgICAgfTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDEpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwg
c3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIu
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
IAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gNSkKLSAgICAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOwotICAgIEVYUEVDVF9FUShzaGFy
ZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7CisgICAg
RVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNr
KGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVz
dCwgY2hhbmdpbmdJdGVyYXRvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDg3MjkwMzQ1YjQyZjEwYzli
MmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2
ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDE2ICs0OCwxNyBAQCBzdGF0aWMgdm9p
ZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0Fy
cmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5
KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1
ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRl
czoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIq
KWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRl
cywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBo
ZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAK
ICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Indvcmxk
IiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwg
d29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIu
Z2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRh
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKQEAgLTY5LDMyICs3
MCwzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAg
IE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3Ro
OjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVz
LCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIq
KWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3
b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAg
ICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAg
ICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxk
RGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAg
ICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0
byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Nl
Z21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFb
c2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQs
IHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAg
ICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBv
c2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3Np
dGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgp
LT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVt
ZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21l
bnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNp
emUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBz
ZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVE
YXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5n
ZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwg
bGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445997</attachid>
            <date>2021-12-05 21:53:53 -0800</date>
            <delta_ts>2021-12-06 03:31:50 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211206165351.patch</filename>
            <type>text/plain</type>
            <size>518248</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmMDU5YTA5MjFhOWRj
NmYwM2VhNDA3ZGQ2M2JkOTAwOWQ0ZDI5Yi4uOTI4YmFhZWY0OWEwZmNhMTNhZjM3YWU3YTExZDEz
NzRlOWNkNWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBCcm9hZGNhc3RDaGFubmVsLCBDT09QLCBDT0VQIGFuZCBXZWIgTG9ja3Mg
dG8gZmVhdHVyZXMuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4Nzc2OTE0OTc2YjJhOTJmNzZkZDg3NjExZDI4
MWEwMjhiMTM3NDk1Li45MzMxMGY4Mzg3MGM2NGIxNjAzMTI2NTZkNjQ4YTYyNTJmMzk1MmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIK
KyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxT
Y2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJl
YW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZm
ZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5
Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAg
KEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBD
OjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0
YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNX
aW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6Cisg
ICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhp
Z2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFG
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNl
bmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1l
bnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVh
dGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFu
ZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIgY29udGVudCBwcm9jZXNzIHNvbWV0aW1lcyBj
cmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4MGQ4MzNkZTky
ZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3Vv
dXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1t
dXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgor
ICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAg
KC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNv
dXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVh
dGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJl
c291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisK
IDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1YWI4MzYw
ZTg2MTQ1NTQ3MjQ3Y2MuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0w
MSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBT
aGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1v
cnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZl
LmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFT
b3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJl
c291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAy
MS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJd
IE1ha2UgV2ViIExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0
NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2
ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0
YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAg
ICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7
Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9
IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxT
dHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5t
bQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5
YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBi
b2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1f
bWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxv
Y1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1h
Z2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9
IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRj
MzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODky
NmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09
ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBh
bGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBp
ZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRl
eHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBh
ZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2Vd
KTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1d
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFh
MjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWlu
dDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZv
cm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
KyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6
Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0Yy4u
ZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERP
TUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29y
ZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVx
dWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2Uu
Y29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFu
ZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVz
cG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIg
PSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZm
ZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAgdm9pZCBE
T01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBp
ZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRS
ZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3Np
dGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0
Y2gpOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVl
c3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9u
c2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVl
c3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAg
aWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4
Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAg
aWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAg
ICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQo
KSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZv
aWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICszNzUsNyBA
QCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNl
aXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNlLmdl
dCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNw
b25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
cGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2Vp
dmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVm
ZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4Myw5
ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0
Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAg
ICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAg
IHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7
IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRl
eCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNlZGIz
YjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkg
ZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
OwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9u
T3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZl
dGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9vbCB7
IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRl
eCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJkYWUw
MzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3BvbnNl
Qm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0
ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0sIFtd
KGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJv
ZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwg
W10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIsNyAr
MTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5
JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9y
bURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZm
ZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9u
c2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4
IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThhM2Nh
M2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNvbnZl
cnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwogV0VC
Q09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQg
Ym9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBSZXNw
b25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJl
ZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6
Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsK
IFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsK
IFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3Bv
bnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5YThk
MmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcyMTcz
YzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlk
cyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAo
YnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
YXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBi
dWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJp
bmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3OTdh
My4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29u
c3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0byBsZW5n
dGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRhKCks
IGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlhS2V5U3Rh
dHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsxMDMsNyBA
QCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBidWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6
ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAgIHJldHVy
biBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMmZk
YzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4MDc0YjUw
OGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
QmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
CiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1
ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25z
dW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUo
KSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0
aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZv
cm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3Jt
RGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJv
ZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAg
cmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
ICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRj
aEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEo
KTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpAQCAt
Mjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRl
eHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRl
eHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJM
U2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0Jv
ZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAg
aWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJh
eUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJv
ZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChp
c0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRk
cmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJW
aWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNiNzcxYjM0
N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4
MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1E
YXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpu
dWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBU
YWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAogICAg
IHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZN
b3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZm
NjJiM2IuLjExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBA
IC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1
ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5r
KSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTgg
QEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAg
IEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJl
ZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0g
U2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92
ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
ZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdp
dGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAg
ICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMw
Niw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0
byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2th
Z2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0
byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRl
cmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBz
aXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRh
dGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7
Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1fYnVmZmVy
LnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewotICAgIHJl
dHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAg
LTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1
cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdU
Rk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0K
IAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQs
OCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3Vy
Y2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0
aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0
MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAs
OCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZl
cjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkg
eyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRh
a2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVy
KCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBT
dHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFBy
b21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3Vy
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApp
bmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0MzkyYTkw
M2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5
Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
cGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURh
dGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJl
c3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6
ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBi
b2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAg
ICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlz
Qm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBi
b2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUy
ZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2YWViNTQ3
YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0g
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVm
ZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFJl
c3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VE
YXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0
ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2Yjll
NTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0
LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdo
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAg
ICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3
Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0Yjdk
OGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBAQCBj
b25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMw
MzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRl
Y29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJl
dHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUy
ZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0
ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5n
LCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6
ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVLZXko
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURh
dGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwg
a2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1aW50
OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRm
NDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBh
dGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEm
KTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZi
N2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4
NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlz
dGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRl
VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJl
Z2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6
ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJp
YWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNh
dmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcg
b2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBu
ZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlv
biJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0g
c2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0
aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBh
dGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4
IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5m
byYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAg
ICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAg
ICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUz
MywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tl
ZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRl
eGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0g
JXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAg
YXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAg
IGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5k
ZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZh
bHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyAr
MTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8
fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9y
ZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwor
ICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBp
ZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQx
LDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0
aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURf
UEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9t
IHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1w
dCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJh
bnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBp
biBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVj
dCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxs
KCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2Vy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQog
ICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAg
ICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07
CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNT
RVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1h
eCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sg
dXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCBy
ZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJL
ZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
bG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxv
d2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAg
fQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRv
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1
cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBw
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRl
eCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJk
YTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAt
MjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8g
YnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYg
KG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29y
IHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUs
NyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhT
dGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7
CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1f
cHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZl
cikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQg
YXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiOTRj
OWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5
Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODIs
NyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQo
KQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2Ug
OiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3Jl
bW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1f
cmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5n
TWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1
NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0YzY5
ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBj
bGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsK
ICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7
Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0
cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRl
eHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUwLi42
M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VV
UkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUgPSBm
YWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7CiAg
ICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9p
ZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRP
ckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRh
LnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVu
ZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAg
ICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6
Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgp
LCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3Vy
Y2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVy
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2MzQ5YWE1
YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3Nv
dXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9y
ZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1
ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxl
dGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAzZWM0
ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVT
RC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQv
U2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNv
dXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
Ik1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQgPSBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRh
dGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291bnQg
PSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0
YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5NjFj
OTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0
aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSBs
b2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9N
RXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAi
Tm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAgIH0s
IFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1Y2U4
OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFlYTg0
ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYmICgh
bV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAgICAg
ICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAg
ICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwor
ICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSSht
X2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAg
ICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBt
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
Km1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAg
ICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5n
KCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1b3Vz
QnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11
dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsK
ICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0
cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQuLjRi
NDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9u
dEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBT
VkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1f
c3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChh
dXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAg
ICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRl
ZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZv
bnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikg
ewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5n
KCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9p
bkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENT
U0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNl
IGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlh
dGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1l
ZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0
aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdy
YXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVk
aWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMx
MjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEwODgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9u
dFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2
IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVk
Q2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250
RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxp
bnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
V2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZv
bnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9h
ZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2lu
dGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4g
bV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdh
YTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNobWVu
dEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7
Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVmOThi
MTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVz
b3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2Ns
YXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBF
ZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyArNTM3
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9k
ZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRh
bG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5m
byhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdl
dFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3Ry
aW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBv
dXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25J
bkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2
ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJW
aXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
KyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRp
ZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0
dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5
MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMx
ZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVu
dGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Vk
aXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5MzMx
MDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVkaXRv
cjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZv
bnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRy
aWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAgaWYg
KCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERh
dGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZ
RVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1
dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwogfQog
CiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcsNyBA
QCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9yOjpn
ZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBW
ZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50
JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
IGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAgICAg
ICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAgICAg
ICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOworICAg
ICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEs
MTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRl
ckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNl
dFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCiB7
CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0K
IAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5z
ZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1c2Vy
VmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJs
ZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7
IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcg
UlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpA
eyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewog
ICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5NmI3
ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5
ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wK
ICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1cmwp
KSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwog
ICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9odG1s
IikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2Vz
dGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3Vt
ZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAgICAg
ICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3Vi
cmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+
ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNwb25z
ZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8ICFb
ZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCkp
OwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBp
ZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1dG8q
IHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1NGU4
MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMxNzM2
NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsKICAg
ICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0gICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50OwogICAg
IH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5
LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFj
aG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2Ut
PmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0
dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMg
dm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFw
cGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9u
SW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCks
IHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwogICAg
IH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9iamVj
dEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJl
cGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJh
Z21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUg
PSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBX
VEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1
ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFw
cGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00NDIs
NyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFj
dE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1F
VHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJl
dHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4g
TWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBt
YWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07
CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJr
dXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgx
LDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxk
UmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6
OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1h
aW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3Vi
ZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJh
bWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRv
Y3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93
TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMo
ZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcgQEAg
Ym9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2Yzg5
MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2LDE1
IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBh
c3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6Omlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1l
bnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdE
YXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhpcyBm
dW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0aHJl
ZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5IHVz
ZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9ydCBP
UyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVj
dG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEuLjEw
MTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9p
ZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0
IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmls
ZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlF
bnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0
LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBz
ZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNl
dHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5m
dHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9H
KEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0
aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNl
cjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRl
bXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQo
KS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRv
Y3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBv
ZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3Vs
ZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3Vt
ZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdl
IGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYw
NDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2
ZWY4ODhlZDA0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUw
TUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVx
dWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2Rh
dGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBA
IC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJU
KCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsK
LSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5y
ZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4Miwz
NyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENv
bnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0
YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVm
ZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAg
ICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgp
OwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0Nv
bnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRh
TGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFC
dWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9
IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2
NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29u
dGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5n
dGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAg
ICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgp
LCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
YnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9
IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVu
Z3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcuLmQ3
NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNE
YXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCArMTA1LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1l
c3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0g
ICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVy
OyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0
YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAg
ICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVk
IGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBl
OwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
bV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291
cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2
Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1NzQ2
NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9v
bCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1
dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkp
OwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1
bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1
ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3ZGYx
MjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAwM2Vl
NDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAg
ICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNv
ZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVu
Y29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNv
bnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNl
NjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29u
dGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMw
ZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIw
ZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDVi
MWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6
OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291
cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdo
dFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJl
cigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5k
b2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJl
ZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNkODQ1
MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5MjgwNmVh
ZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJl
Q3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsK
ICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJl
c291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZl
RGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBt
YWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlN
RVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1h
aW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2
ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0
cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZl
cnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9h
ZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJj
aGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRl
cigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAg
ICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7
CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydElj
b25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJm
NTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3MmZm
Yzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsK
IGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAg
LTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxB
cmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFy
Y2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2
ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBV
UkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFy
c2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1
bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
I2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwog
I2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNo
aXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZl
RGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZl
RGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25v
d3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3Yzgz
Mi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5
NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFy
a1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNu
aWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmll
cjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzA4Nzg1YWY4ZmM5MjRl
MzUzZmZkNDgzZGY3Yjk1ZGEyNDQzYWU4NC4uOWU5ZjI5NDY3MmYzZDYyMjUwM2IxZTU1YjE3OTZm
MGNhMWVjZmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3
Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVj
dGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAg
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwg
eyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9y
U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBm
aW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2MTA4
MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3NmI3
OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwog
fQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50
aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENs
aWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFk
ZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFt
ZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2Vu
ZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCks
IHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDksNyBA
QCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVl
c3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFj
a1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAg
ICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRp
bmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1Nj
cmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9i
c2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYwOTM0
MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVk
RnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xh
c3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBw
ZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3
ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2Fj
aGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBv
bGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJh
bWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwg
c3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51
bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51
bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4
NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uNWViMDY1MzYwYjEwZGY4MWI1
NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lE
RU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVy
KEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2Zy
YW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9w
dGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0Rl
ZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9v
cHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAg
ICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7
CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4
LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3ko
RGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkg
YWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0
LDI0ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25z
LmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJE
YXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1
ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXls
b2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURhdGEt
PmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRl
cjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdl
dCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgp
CiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xl
YXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNv
dXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3Vy
Y2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2lu
ZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJl
IGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2Vu
ZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1f
ZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEo
dGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgp
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQy
YjkxNy4uY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMyODBhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC01
NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdh
Y3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291
bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBA
IC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJj
ZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAt
MjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0
OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGly
ZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYz
NTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01
NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4
NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3MGYy
MzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXIm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVy
PihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsg
fQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9k
YXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVt
cHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5j
b3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29w
eSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCkBA
IC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2Rh
dGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1
Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVz
dCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNB
Q0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlm
ZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGlj
YXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3
aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVm
NDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFhMjZk
YjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVSTCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9t
UmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBpbmxp
bmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRz
IHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8v
IFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdp
bGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2Uu
cGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hy
b25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCiti
b29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRS
ZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3OSw3
ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91
c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQor
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0
IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRp
dmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAg
ICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNl
ciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNo
ZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNv
dXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRv
IG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVt
b3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBu
b3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5
KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2
NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3MDgz
NTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEwNCw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9y
UmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBtYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2
MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYg
bG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCks
IG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91
cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1f
cGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNp
Z25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0
N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3
ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2
MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVk
CiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJf
cyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1w
dHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAg
ICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50
LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1l
bnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7
CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkg
ewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAg
ICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUg
dGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSBy
ZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAg
ICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
c291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAg
ICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpA
QCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBpbnQg
aHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAgICAg
IHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQtPmNv
bHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikp
OwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1u
VGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBkZTdk
YWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2RmOGQ5ZGEy
MDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVtcHR5LCBi
dXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBhdXRvJiBk
YXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5jcmVh
dGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5u
b3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygp
LmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRp
b24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBmb3IgdGhl
IG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIGlmIChh
dXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRp
b24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtl
eSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNl
UmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0gICAgCisK
ICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShDRkRp
Y3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRhLCBj
YW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VSZXNwb25z
ZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9uS2V5KSk7
CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJRChyZXNv
dXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIHZl
cnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNv
dXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5
TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKTsK
ICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENy
ZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNoaXZl
PiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgIGlm
ICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBDRkVy
cm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGUHJv
cGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJ
bW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJV
RwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAgICAg
ICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFy
Y2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lXZWJB
cmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVn
YWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNlRGlj
dCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFpbiBy
ZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAgLTMz
Myw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0
aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBzdWJy
ZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAgICAg
ICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAg
IH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rp
b25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBh
dXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZyYW1l
QXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YmZy
YW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3IEBA
IGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52
YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1
cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9uc2Uu
dXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3
aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBp
ZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUq
IGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1
cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVu
dCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBk
b2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4g
CiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBt
YXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0
PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVz
cG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggYWNm
YmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uOTkzYzJiOGU4MzBkYzNkNzVj
NWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDggQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFzIGFzY2lp
KCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBBU0NJSSBj
aGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpLmlz
QWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJp
bmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOworICAgIG1o
dG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRCdWZmZXI+
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiLCBjb250
ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJsLnN0cmlu
ZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEuYXBwZW5k
KGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgIC8v
IEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0cmVhbSB3
aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEgPSByZXNv
dXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2Uu
ZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3Rl
ZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmlu
dGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERhdGEtPmFw
cGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAgICAgICAg
ICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAgICAgICAg
ICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cgYXMgaXQg
d291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JMRnMuCkBA
IC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVy
YXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAtIGlu
ZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBl
bmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAgICAgICAg
ICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgICAg
IGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXgg
PCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2NpaVN0cmlu
ZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0gICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxl
bmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1sRGF0YS50
YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJk
MGJkYjgwMTVlLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAgICBB
U1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFy
eS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBjaGVj
a0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9m
UGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1J
TUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250
ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAg
ICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVhZGVy
LnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJz
OwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CkBA
IC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHVz
ZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVjaWFs
IGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAgICAg
ICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7
CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVu
Z3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2Rp
bmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBmb3Ig
dGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2RlciBl
eHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29udGVudC0+
YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4i
LCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5Myw5ICsxOTMsMTAg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlKCktPm1ha2VD
b250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29k
aW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRl
Y29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgp
KTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29u
dGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250
ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFy
c2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRh
dGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250
ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6Qmlu
YXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUo
KSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRp
Z3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8g
RklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBz
aG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3
YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcj
c2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRl
IG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdm
YzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li45MGQxYzZhMmJhOGM0YTQyZTFmZWJkODAxZTUy
ODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAgQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0
YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVmZmI2OTdj
MzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0ZDFk
NTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6
Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYg
bWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBi
YTliMTc2Zi4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hl
ZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1
cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQg
dGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9m
IG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0K
IAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
ICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENh
Y2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRh
dGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8v
IERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNo
ZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rp
bmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisg
ICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExv
YWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRo
ZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5
IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2Vl
M2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2
MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgp
IGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2Um
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRl
eCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mOWFkNzcxM2M2MDNh
NmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250Ojpk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAK
LXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
bV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNl
KTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1LDcgQEAgU3RyaW5n
IENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVy
biB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgQ2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JPY2N1cnJl
ZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBpbmc7CkBA
IC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5n
ZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9Owor
ICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxw
dHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlmeShj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVk
Rm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZvbnRDbGll
bnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExvYWRlZCgq
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBjZWJk
YzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4xNTRkYjhjYmFiZjNkNWEzOGUw
OTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xv
YWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3Rl
VVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBp
bmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21E
YXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAgICB2
aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFG
cm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRh
bGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBh
bGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRl
MGU2ZjZiNTQyLi43YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5ICs0
NjgsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRh
dGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAm
ZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiAr
NTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1h
Z2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tp
bnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3Qg
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2Ny
aXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisg
ICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEt
PmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihk
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAg
ICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBz
eXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3Rh
dHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRl
cm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBt
X2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRj
YWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkz
OTE1MTg2NmZhNDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lk
dGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2Vk
U2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29k
ZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRh
KCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVk
KFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0
dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAg
LTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJ
bWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NDJi
ZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6
OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEo
cHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBhbnkgdXBk
YXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhhdmUgdGhl
IGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5jcmVtZW50
YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
LSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7
CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAgIHdoaWxl
IChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTk2LDcgKzk2LDcgQEAgdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRh
bERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkg
ZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmlu
ZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9
IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9
IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5j
cmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGlu
Y3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3
MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNi
YWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXND
b2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxs
Q2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RD
aGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGlu
Zz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQyNWNkZGQxODAyMDkyMmY1
ZWRiMjRkNGI5MTIwMDAyLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2FmNjE2Njg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
QEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5Rmlu
aXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWdu
ZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTEzLDcgKzkxMyw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAg
ICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw4ICs5MjcsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdC
dWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAg
ICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li4y
MThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkgKzExMiw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQog
ICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1
cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNp
Z25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNl
RW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3Vu
dGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGlu
ZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2Rl
ZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmlu
ZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmIwZjc2YTUwOTYx
MGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0
cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2Rl
Y29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5l
dyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVz
ZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxw
dHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5z
ZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7
CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3Mp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5iMDEyYmE5
OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNl
RGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRl
eHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2
YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04
MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAg
ICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4
dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAg
ICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEs
NyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVs
ZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZv
bnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZv
bnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkp
OworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3Nzdm
ZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXpl
RXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAg
IFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1v
dGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1l
bnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGlu
Z3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmI4
N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAgdW5z
aWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNo
OwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0
YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2
MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJl
OTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRU
ZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQK
IHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNs
aWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZv
aWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRh
dGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
aW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3ODMy
MWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMu
LmI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYx
LDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25z
dAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1f
c2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNp
emUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
bV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29k
ZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAg
ICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJm
N2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEyNTRlMmQ3
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7
CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQdHI8VGV4
dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3
NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5Zjcx
YzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZl
ckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2
YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpT
ZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVz
dDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vz
c2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3
ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2Eu
bW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11
bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBi
ZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0
IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNG
VVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRG
aWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRV
UkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9y
ZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEz
LDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVz
cG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxv
Y2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tl
ZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2Vk
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byog
cmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1f
cmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggNTUy
NTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDViYjdhZjkw
ZWJkYTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBM
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJl
dmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmln
aW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsK
ICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5
NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNTJmZmQ1MzdiZmQ2MmZmNjdkZWNkNDY0
YjY1ZmI2YzkwNTcwNjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVy
dGVyJiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNw
b25zZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEt
PnJlc2V0KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZp
ZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBj
b252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWlu
UmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBt
X2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9
CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0
OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3
TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xv
YWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3Bv
bnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252
ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0g
ICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9v
cmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAg
ICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGlj
eUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMz
Y2YuLmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdp
dGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGYzN2QwNTliMGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMuLjZkNTFjNWU1MTZh
M2RiZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1
Miw3ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0
CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcs
IGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBm
aXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxh
eW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwor
ICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcAppbmRleCAxYTEyMTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5kNzUw
Y2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUp
OwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVU
eXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5l
bmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9y
IChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJp
YWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQs
IGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBj
aGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4K
ICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygp
LmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAg
ICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRF
bmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpF
bnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291
cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3Bv
bnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgw
YWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcg
bWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNp
dCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3
MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxl
IHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAg
ICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZm
NDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVE
YXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAg
ICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJS
ZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0g
ZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlC
dWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVE
YXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7
Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1f
cGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5j
bGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFu
Z2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENv
ZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNk
ODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUo
Y29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVT
dHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJp
bmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3
ZDI0N2RjZDFhMTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2Ex
M2Q3MzkzNGFhMDQzNmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgy
LDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVf
RVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2lu
OwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmlu
Z0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRh
SW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJk
VVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVU
eXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5h
bWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0
SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwog
ICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAg
IFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBT
dHJpbmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZv
clR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkx
MTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQw
MGQ2ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYg
ZGF0YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25z
dGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7
CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsK
ICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2Rl
ciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5j
b2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJT
aXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2Rl
cikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2Fy
ZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lz
dGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZj
YTZlYzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZi
ZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3Jp
Z2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNo
YXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZm
ZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3Ry
YXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5h
Nzg4ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21E
YXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmly
dHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAg
ICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRl
bUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRh
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5
NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIx
ZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwx
NCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50
T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0
cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0
OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEw
MDc0MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2
ZjBiY2E1NDM2NGFmYzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVj
dCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0
ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Q
YXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJ
bWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdl
dFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJk
VVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVS
TChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4
Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1f
cHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpy
ZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50
LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFt
X3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEu
Z2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0
aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTlj
ZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5
NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
c3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRD
b252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRh
OworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAg
IFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29y
aWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmlu
ZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBh
NjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2Vk
QXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQz
OTAwMzUzNTM4NWQuLjVlMjVhZTNlNDgxMTZhZjQ4NDM5YzNmZjIzOGVlYmQ0MDVlNWFjOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMgKzUwLDEz
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgp
KQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFwcGVuZChX
VEZNb3ZlKGRhdGEpKTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworfQorCiAjaWYgVVNFKEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7CkBAIC03
MywyNiArNzgsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0
TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFw
cGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRG
aWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYg
KG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAg
Ym9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEg
bWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7
Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19
Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywg
c2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEw
MywzMCArOTIsMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29tYmlu
ZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkg
Y29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250
aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBv
dWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9u
cyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBj
YWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNl
IHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7
Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJu
OwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNf
Y2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0
aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
ID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9z
ZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBj
b21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5j
bGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0g
MSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1aW50
OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdt
ZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBt
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE4MSw2ICsxNTYsMjEgQEAg
U3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0Vt
cHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFyZWRCdWZm
ZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91czsKK30K
KwogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpAQCAtMjAy
LDEwICsxOTIsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5y
ZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAg
ICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50
LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6
ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1l
bnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7CkBAIC0yMTMsMjMgKzIwMywyOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgp
OwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsK
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
e21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
IH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigp
CiB7CiAgICAgbV9zaXplID0gMDsKQEAgLTI0MywxNyArMjM4LDEyIEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6
ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVu
dHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQot
ICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Q
b3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJu
IGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVu
dHM7CkBAIC0zNTUsOCArMzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBT
aGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdp
bigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVy
biBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3
Miw3ICszNjEsNTcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkg
Y29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7
Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgp
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBt
X2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sK
KyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3Vv
dXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6
ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5z
ZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQor
eworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVk
RmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlm
IChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAg
IGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3Mp
OworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsK
KyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisK
K2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorewor
ICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitjb25zdCBjaGFy
KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3Qg
dWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyAr
NDMwLDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsK
IH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBj
b25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtNDAyLDcgKzQ0MSw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5k
aWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBj
b25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
ZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQpAQCAtNDU2LDcgKzQ5NSw3IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpzaXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAg
YXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00
NzUsNyArNTE0LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBj
b25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9
CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdt
ZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpT
aGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBv
c2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBt
X3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3Nl
Z21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ5OSwxNiArNTM4LDIx
IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIg
eworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0s
Ci0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAg
ICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0
aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgp
OwpAQCAtNTM0LDcgKzU3OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFk
MzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi5jOTU0OTY4YjkxYWFmYmYwNjcwNGRmOGVk
MmZhOTAwMmQ2MDU0ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTYyLDE0NiArNjIsMTMzIEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQg
YnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJl
ZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBk
YXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
KTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lm
IFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNv
bnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0Owot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQg
YXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQog
I2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsK
KyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
ICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0g
ICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBj
b3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJ
dGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAg
IC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBs
YWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCog
ZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNp
bWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUg
ZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hh
cmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0
ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRz
IHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1
ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgp
OyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90
PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAg
ICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXpl
X3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0
OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFBy
b3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21l
bnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90
aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9j
YXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Cisj
ZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgp
OwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29u
c3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
aWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWlu
UHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxD
RkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewot
ICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAg
IEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShG
T1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQor
ICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBib29sIGNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERh
dGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4
X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJl
Zj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIp
Ci0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxH
Qnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQo
UmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwK
KyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0gICAgICAgIERh
dGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVu
dChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShwcm92aWRlcikpIHsgfQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAgICAgc3RkOjp2
YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAg
ICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
LSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
LSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFy
ZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBt
ZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzQ29udGlndW91cygpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0
IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRh
U2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50
cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMTk3LDE3NiBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNl
Z21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVu
dHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBl
bmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9z
aXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2
YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmll
bmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9y
IG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNp
emVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
I2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgog
I2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNp
ZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOworI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOwor
I2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0
YVJlZik7CiAjZW5kaWYKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCiAgICAgLy8gQ29tYmluZXMgYWxs
IHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVy
IGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRh
KCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAg
ICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6
ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNp
emVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21l
bnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29t
YmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIg
aXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250
ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9m
Li4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8
RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rl
cigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBO
bywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwor
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09S
RV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5k
aWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3Jl
YXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRh
U2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90
IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFy
ZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisg
ICAgICAgIGlmICghYnVmZmVyIHx8IChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlz
Q29udGlndW91cygpKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIp
OworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBh
IHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxk
IGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZm
ZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSB7CisgICAgICAgICAg
ICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdz
JiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
ZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZv
aWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAg
IHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0K
KyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAg
IHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAg
ICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpA
QCAtMjY4LDIxICszNzYsMjEgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVk
QnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6
ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxO
U0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0
IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVm
PERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRo
aW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0
ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4
OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQx
LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJv
b2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBj
ZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdv
cmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8g
bnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5p
bWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
QXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5
cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1Bs
YXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0
NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBl
N2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNv
ZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGlu
ZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlM
aXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlh
YTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3
LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3Qg
U3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
U2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQw
YmIyZmNiOTEuLmI5Yjg4MjBhNjkwYzljNjY0NTFhMWY1MjVmNDE4MzljODYyYzFiMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDE3
ICs0MSwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8v
IFVzaW5nIEZvdW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxl
bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24g
Zm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRh
dGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRh
dGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAoaGFzT25lU2VnbWVudCgp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0
YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAgICAgICAg
ICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNmRGF0YS5nZXQo
KSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsKLSAgICByZXR1cm4g
Y2ZEYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBkYXRhKCks
IHNpemUoKSkpOwogfQogI2VuZGlmCiAKQEAgLTcyLDcgKzY4LDYgQEAgdm9pZCBTaGFyZWRCdWZm
ZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXpl
ICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZh
ZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBl
c0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1
ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BO
RyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1h
Z2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXBy
ZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAt
MzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhT
ZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhj
b25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5
cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUw
Li5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUs
MTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVy
ZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBX
ZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9z
aXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2Vi
Q29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNv
cmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247
CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFs
bG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
YXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0
YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilz
aXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6
RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNp
emU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0
YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgp
IGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7
CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYg
KCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0g
MSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRl
TlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFp
blB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNv
bnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBp
bml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQu
LjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3Qo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJv
b3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAog
ICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICgh
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIx
ODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRl
Zjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEz
OCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRz
TG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHko
KSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERh
dGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7
CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xOTYsNyArMTk3
LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0lu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlk
c01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwog
ICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1
LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0
YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRl
eCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7
CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91
c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0g
Y29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVh
dGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRy
YWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJ
ZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1
cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8v
IENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5p
dERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJu
IGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0
NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1h
dCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAg
IC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0
aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2Ug
Y29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5n
KGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgp
KSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAog
ICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAg
Q1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtl
eUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJl
dHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRh
Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNs
ZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRl
eCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJj
YmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsx
MzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29k
ZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZl
clNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2Vu
Y29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRk
ZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBr
ZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5
OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
CkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkK
ICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdf
YXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIp
OwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQo
Jm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50
X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRf
ZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVz
X2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRf
ZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVz
X2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXgg
ZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUxM2Vh
YzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAg
IH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZv
aWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5
MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2ICszOCwx
NiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVz
KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1H
UmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0
cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7
CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0
ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7
Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAg
IH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0
X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVz
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2MuLmIxMzYz
NDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZjxGb250PiBGb250
OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3Jp
Z2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9y
aWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVu
dGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6
OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQorUmVmPEZvbnQ+IEZv
bnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZv
bnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkK
IHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRG
b250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBp
bmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDlmYzRlYTgy
ZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVhMjY0MWUzOGM4Mjk0MDBm
NWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJp
bGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6
Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51
bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0
aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0
eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5v
LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxv
cHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBi
b29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVs
bHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0
IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250
Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgK
aW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIxOS4uZTIzODRiOWVl
NGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzQsNyArNzQsNiBA
QCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFRoaXMgY2xhc3Mg
aXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBpbnN0YW5jZXMgc2hv
dWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFzcyBGb250UGxhdGZv
cm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ3JlYXRp
b25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOworICAgICAg
ICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAgICAgICBTdHJp
bmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFJlZjxGb250
TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzVi
ZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShS
ZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9k
ZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3Ry
aW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVs
KFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAot
TW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBT
dHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAg
ICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVy
bCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMz
NzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0YzJhMGMxMDAx
NDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1v
ZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0
cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBj
b25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERlY29kZXIm
KTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiwgU3Ry
aW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlw
ZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBt
X21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJl
ZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJs
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdU
Rk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3Zl
KCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0
OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2
YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWlu
dDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50
MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMy
X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNp
emUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpA
QCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUp
CiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3
NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1
aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAw
eDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
c2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEy
Niw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hh
cmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZG
VG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2Zu
dCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcg
KzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0
b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNp
emU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZG
VG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwog
ICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhm
ODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3
YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wg
aXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlk
IG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBj
b252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQg
d3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZl
cnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRo
ZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9u
dHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIg
d2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBi
ZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEy
ZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5
MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8g
SlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0g
fSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi42MmJkMTM0
NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNl
SlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJu
aW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKIH0KQEAg
LTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAgIGluaXRpYWxp
emF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgaW5pdGlhbGl6
YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAjaWYg
SEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2UgaWYgKGluaXRE
YXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8g
cHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRhKCksIGluaXRE
YXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0
cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgp
KTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0
YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmluZyB9IG9wdGlv
bnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAjZW5kaWYK
QEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRv
IGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChh
dXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7
Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNz
aW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VE
aXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAg
ICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFty
ZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBb
bV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtl
eVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFs
dWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3By
b2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNv
bnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyAr
OTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0Rh
dGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBs
YXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAg
ICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VV
UkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAg
ICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJ
RHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDcgKzExNTMs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2
ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0g
VmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+
PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5Niw3ICsxMTk2LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0RGF0YS5m
aXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0g
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5n
KGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRT
dHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNldFN0cmlu
ZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBh
eWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVzaE9iamVj
dChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50
UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtl
eUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAgICAgICAgYXV0
byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgICAg
IGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJl
cXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29u
dGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlE
ID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBX
VEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRh
YmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAog
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRp
ZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgp
KTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZp
cnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJl
cXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29u
dGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5Q
dHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJl
cXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uYTU0
ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hh
cmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhp
c10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNl
c3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRh
OmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9d
OwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2Fk
ZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9Q
UklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91
c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIElt
YWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVj
dGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2Vp
dmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAo
YWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4uNGRkNmI5
MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEz
LDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQm
JiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIs
IEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50
YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0
ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZs
YWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBw
ZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0
cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdh
MmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1
YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9p
ZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBu
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5Q
dHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEy
MmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmI2ZTIzN2I1ZGY1ZGRmNmE3
MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8
UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBX
ZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpA
QCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9h
ZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
LSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRh
U3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIz
OCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNl
TWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVz
dWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rl
cjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAg
ICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRh
KSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZv
aWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2Fk
aW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVx
dWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5
YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlm
ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5
cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29u
dGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBA
IC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBt
X2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
Jik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5
ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZk
NzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVz
KENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZm
ZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3Np
dGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0g
c3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+
KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAg
ICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUz
LDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAg
dXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0
ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlm
ICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlw
ZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29kZXJD
Rzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAg
IC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNy
ZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAg
ICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRl
IENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAg
IC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJj
ZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0
aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJv
dmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAgYXV0
byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3Vz
RGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBj
YWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVk
QnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5
dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAv
LyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2su
CiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7
IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVs
ZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZw
cm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3Vz
RGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1h
Z2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJv
dmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAK
aW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5
ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMx
OSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShi
b29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
KTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BE
RkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxh
dGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQw
ZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29s
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1f
Zm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWlu
dDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2
YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNp
emVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXIt
PmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5
NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0
cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBj
b25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlm
IChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RG
b250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBs
YXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMw
Y2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcy
NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVM
aWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0
YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXpl
RnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkw
YzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBi
b29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAg
ICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9y
b21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRG
b250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2Vy
LmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYg
KGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3
OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rv
cjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0
dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVk
T3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdp
bkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4
IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcxYmUuLmQwMTRjYzZhNWRjN2Ix
N2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAg
LTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGlu
ZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1
aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBF
YXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZl
cj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4
IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5
NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QK
IAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVm
ZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRo
cmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9p
bm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRl
KCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAg
IH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJj
NmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2
OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RF
QlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9m
IHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgp
LAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1Rf
TUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlu
aXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwor
ICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwg
aW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXIt
PmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJU
eXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5k
ZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVjM2Mz
OTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQ
YXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lk
IG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVs
ZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0
YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQo
R01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3Ro
CiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgp
OwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5w
c3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOworICAgICAgICAgICAg
dXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgq
cHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBF
cnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBH
TWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5k
RWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxv
YWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFw
YXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0
MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi42NmUyOTc5ZTNlY2YyZWQ2OTYyYWQyYWI1
MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRf
bWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAgICBJbml0RGF0YSgpCi0g
ICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAgIEluaXRE
YXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGFuIGVudW0g
Zm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5LgogICAgIEluaXREYXRhKGNv
bnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEpCkBAIC01MCwxMyArNDks
MTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlh
X2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJP
UiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRh
LT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQg
PSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIo
KSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lz
dGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShw
YXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYg
KGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNv
bnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXls
b2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBl
bmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAg
IG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+
YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCpp
bml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9
CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04Niwx
MSArODksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0g
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2
YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
cGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNsYXNz
IFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmlu
ZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRh
NTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICByZXR1
cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVu
dGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgp
LCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODlj
NjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMy
ZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07
CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNlNmFm
N2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNm
MTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1
bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVu
dFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4Y2Q3NzY4OThjMDVh
OTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2
ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBA
QCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5
cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0
YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50
MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3Vu
dF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENv
dmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNl
dDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0
IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQg
PSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAg
ICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0
aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRB
c3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcg
QEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9w
ZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFu
dFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJl
Y29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQgZ2V0U2l6ZVZh
cmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBo
PiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlh
bnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlh
bnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENv
bnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhH
bHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdl
dEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlw
ZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQg
Z2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZl
Y3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsK
ICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zm
c2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBz
dHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5
cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50
IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVy
dGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0
aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEds
eXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoQ29u
c3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsg
dWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcg
KzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJp
YW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENvbnN0YW50cyog
bWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0Owog
ICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUg
OiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25z
dCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAg
LTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFy
aWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aFZh
cmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zm
c2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDI5
OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2ZDMxMTgyZTVjNGIz
NmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQw
LDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0
YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8
T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBF
TkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNl
bGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1
MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEds
eXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBj
aDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShj
aDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEp
KSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxl
KGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3Qg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEp
CiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3Vu
dCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wg
aXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRp
b24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgaWYgKHBv
c2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkw
LDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5z
aXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewog
ICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihwb3Np
dGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAt
OTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVj
dCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShPUEVOVFlQRV9N
QVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHByb3RlY3RlZDoK
LSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVy
YWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEds
eXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7CiAgICAgICAg
IHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgMTogeyAv
LyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDMy
MTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNjYTcyN2FhZmJkMmNhZDRi
ZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAK
QEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkK
IAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdy
aXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5z
IHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFj
dGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWlu
dDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8
dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFT
aXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpAQCAtMjY2
LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRh
LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAKIC8vIFJlbmFtZSB0aGUg
Zm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQorUmVmUHRyPEZvbnRNZW1v
cnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1
aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEs
IGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApp
bmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi4yMmJlMjMwYTYw
NWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0Vu
ZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJl
Zml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAt
NTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90LCA1MTI+IG1fYnVmZmVy
OwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1l
QW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9v
bCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
LCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNh
bERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIu
Ljc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3Rp
dHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RG
b3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKIAotICAgIGNvbnN0
IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdl
T2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KIH07CiAKIHN0cnVjdCBT
aW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7CkBAIC0x
MzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6VUludDE2
IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3Ro
LCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAotICAgIGJvb2wgZ2V0U3Vi
c3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgs
IEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0gc3ViVGFibGVDb3VudDsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1
YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1cExpc3QgOiBUYWJsZUJh
c2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1
aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1
Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1
cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdEluZGV4WzFdOwogCi0gICAg
Ym9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFz
aE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1
cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1
cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwTGlzdEluZGV4
W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVC
YXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVh
dHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5k
ZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBl
OjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYg
KGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkp
CkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVh
dHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywg
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsgKytpKSB7CiAgICAgICAg
ICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0u
ZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RydWN0IExhbmdTeXNUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCog
ZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1
cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3
Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBP
cGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsK
IAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAg
c3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0
IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBjb25zdCBTY3JpcHRUYWJs
ZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVjdCBTY3Jp
cHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29u
c3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8fCAhaXNWYWxpZEVuZChi
dWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RydWN0IFNjcmlw
dExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0
VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwogICAgIH0KIAotICAgIGNv
bnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25z
dCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAg
ICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRh
YmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsKIAotICAgIGNvbnN0IFNj
cmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNl
dCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0Pihi
dWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1
cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KKyAgICBjb25z
dCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBz
Y3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAg
IGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZm
ZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1
bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExh
bmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9
IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0
OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gc2Ny
aXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJl
VGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5
cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUqIGxhbmdTeXMgPSBkZWZh
dWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMg
PSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVyZTsKICAgICB9CiAKLSAgICBi
b29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiog
bWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZlcnRp
Y2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25z
dCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVhdHVyZShPcGVuVHlwZTo6
VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVydGljYWxGZWF0dXJlVGFi
bGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAK
IHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZv
cm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxl
KE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVh
ID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsK
ICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBA
QCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9h
ZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8v
IExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBz
dXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
cGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8g
YnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwog
ICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVU
YWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9p
ZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NV
QlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9w
ZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAg
aWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZt
X3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLjhi
ZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVu
aXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250
TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1
ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3Mzky
ZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNi
NzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiAr
MzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVh
dGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVz
b3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmll
ZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdz
OwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpA
QCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25E
YXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5k
ZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3YTdmNGQ3
YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlx
dWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5h
bWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZm
ZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggMzFh
MWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5
NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5j
cHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1
YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNl
R0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0
YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkzYmRiZDIy
YjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3
ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZv
bnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBm
bG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2Jq
ZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0
YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJ
X0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBE
V09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRh
KCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUp
OwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggY2YyYjUxZjZmMDI4
MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIy
NThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Nl
bGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9u
RGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblNtYXJ0UmVw
bGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNhblNtYXJ0
UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
YW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBT
aGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURh
dGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1f
Y3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkgeyBtX2N1c3RvbURhdGEg
PSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3Ry
aW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9vbCBt
X2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9j
dXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2N1c3RvbURh
dGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
aAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1
MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2RlZERh
dGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hhcmVkQnVm
ZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2UgdGhlcmUn
cyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5zZWdt
ZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0g
ZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEo
KSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50
LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERh
dGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJv
bVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhk
OTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uYTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQw
OGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsOSAr
MjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1h
cmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVj
dCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1By
b2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7
CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xp
c3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NN
YXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMg
QEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21w
cmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAg
ICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNp
emU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAg
YnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRh
dGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZl
ci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQg
SlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1By
b2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29k
ZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2Iu
LmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
IHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAg
IHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9p
ZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNlbmRp
ZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFm
NGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0
cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRh
dGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xp
ZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVu
dC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xp
ZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9
IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00Nzks
NyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAg
ICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBp
ZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hp
dmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRy
aWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQorICAgICAgICBp
ZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hp
dmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRy
aWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51
bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVz
ZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgUGFzdGVib2FyZEN1
c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihjb250ZW50LmNv
bnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3Vz
dG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOworICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJv
YXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7
CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9
IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0g
ZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOworICAg
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAg
aWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYgKCFpc0RlY2xhcmVk
VVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21N
SU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGlt
YWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwog
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWRO
YW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogI2VuZGlm
IC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEK
IAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBk
YXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkp
OworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEp
LmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUsNyArNjM1LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRl
SXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQ
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlu
bGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRh
Lm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVk
QnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAg
ICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRl
YW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAg
ICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBs
b2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAg
ICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVl
ZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjcz
LDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9
CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFs
dWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAg
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5
cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CkBA
IC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmlu
Z3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKChOU0ludGVnZXIp
aW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0
ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRdKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bh
c3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwogfQog
CiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5
MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRl
cklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBy
ZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3By
ZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRh
IHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fb3JpZ2lu
YWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92aWRlciB9CiAg
ICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0NvbnZlcnRlckRl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2
MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNj
MzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3Im
IGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVi
b2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRG
aWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJs
LnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3Jh
cHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcg
cmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpv
cHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAt
MzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0
JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5
cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAg
IHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAg
dGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5
MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlh
NTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3
ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3Ry
aW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xp
ZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0
YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCld
OworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50
RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsK
IAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0
b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bh
c3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVh
ZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsK
ICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0
ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4Zjll
MWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBs
YXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5
cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpw
YXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0
KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhb
ZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJP
ZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYg
bwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlm
IChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8g
ZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBp
ZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlw
ZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5
cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxh
dGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAg
ICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpA
QCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRX
cml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEg
PSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYg
KGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9h
cmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAg
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUo
cGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVE
YXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0
ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBl
XTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJu
IGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZl
TUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3Jt
VHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAg
IE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFp
dGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlm
IChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRv
IG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+
IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURh
dGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAg
IGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIx
MWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1
MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0
YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7
CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERl
c2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUz
ZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEz
NywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAg
Ly8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRh
dGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRo
b3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRl
ckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIp
KQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1
LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRh
KCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxv
Y2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEt
PmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURh
dGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRh
ID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEu
dGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGEzN2Ew
ZDg3NGY3MmJmOTFiZDUyYzNhYzZiNTg1ZDMzM2YwZmNhM2MuLmIxNzQ5NzQ0NTRiZjczOTg5MDlj
YzhiZWE0ZDBhM2I5NTc5YTc4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6
bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkg
Y29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAg
IGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0
YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXgg
NmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0
MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4m
IGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9h
bHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVh
bSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRl
eCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2
N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZl
RGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFh
Li44OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJl
Y2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVj
ZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgx
OTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAy
OWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAs
IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShy
ZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0
IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1
NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6
ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3Mg
UmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNl
c3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBS
ZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBI
YXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1
ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBv
cmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2Fk
aW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNr
KQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVz
SW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3Qg
UGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVk
Q29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJT
aXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJs
ZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0
aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qg
d2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwg
a25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAo
IWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZm
ZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2Uu
YmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5i
dWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNr
KTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBn
aXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0
YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayks
IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdl
bmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRl
UnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsK
ICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVy
SW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4
ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJT
aXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZm
ZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcg
QEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVk
Q29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVy
LT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBG
SVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3Vs
ZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBj
aGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5h
bFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJs
U3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5i
dWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZl
UmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5
ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZToo
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3Jl
OjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9u
OltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0g
ewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUo
KTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAo
aWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVs
ZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEy
Li5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNs
b3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChw
cm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0
aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5k
KSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0
aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgot
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVu
ZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRs
ZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3Vu
ZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5k
KSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwg
ZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1
ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3Ig
ZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgot
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVy
LnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAg
IG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBl
ODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRi
N2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBD
dXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZp
bGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNl
NWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDks
OSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1
ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCku
ZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RG
TW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3
b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5
ZmU0MzJjMzgxZDNkMTk2MTNlNjAuLjNjYTIwODIyYzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4
M2ZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1
ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRC
dWZmZXJQT1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQog
ICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0
ODY2NDczZDYyY2I2Nzk0NTVhLi5jNDYwZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBj
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CkBAIC05ODYsOCArOTg2LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxl
Q29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAg
ICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDM4
LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29u
c3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0
aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAg
ICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRh
dGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmls
ZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAg
ICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdy
aXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVI
YW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJl
dHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1
ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5
ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUo
ZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAK
QEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsK
ICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9S
ZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAg
ICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZp
bGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0
OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2
NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
CkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVz
cG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9u
c2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZm
ZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEo
KSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Bv
bnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQo
JyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJl
c3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBA
IHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmll
dyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdW
aWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6
IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVj
dG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcg
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2Ut
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsK
IAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0
Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1
NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7
CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAog
U2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNj
cmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVy
IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6
OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBT
dHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVy
Ojpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZl
ciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5i
ZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2Ny
aXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1
dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwg
Y29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
aW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdm
OGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNj
cmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9i
dWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7
IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZl
cjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9i
dWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1Npbmds
ZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENv
bnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
aW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uODVlNzYzODNk
YWIzNTNhNGZjNGIwOWQxMjc3MTg1YTAwZTllMjM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVx
dWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUsMTIgKzc2LDIxIEBAIHZv
aWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0
aW9ucyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25z
dAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2Rh
dGEtPmlzTnVsbCgpOworfQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAg
ICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9k
YXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRv
U3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGln
dW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAgICAgICAgICAgY29udGln
dW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChj
b250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNE
YXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZp
ZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0K
QEAgLTExNyw5ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJy
b3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAg
IG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX2RhdGEtPmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRh
MWU4NjNjNy4uMWIzZDc4NzBmMTI4YmZlNTM4ZWU2Yzk4NTljZGFhZTgxZTQ1ZTJhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwx
MyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlz
UGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9j
Y3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0xvYWRpbmc7IH0K
ICAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vycm9yT2Nj
dXJyZWQ7IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVz
dENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFr
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0
YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggOGE5
MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRlNTI0MC4uMGJjZDk3NmVkYTlkNGE3ODEw
OWU2MjYzZDgxMDhjMzc1MDc1OGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0x
MzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYg
Y2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSBy
ZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURh
dGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxs
cHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5
YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBT
V1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBm
aWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBk
ZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0
ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNl
RmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwog
fQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0MWNjNWUyOWNlOTZiNC4uZmNj
YzJhOWVkMjBkNzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgWE1MSHR0cFJlcXVlc3Q6OlhN
TEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX3Jl
c3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFkeVN0YXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5cGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAgICwgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogICAgICwgbV9w
cm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywg
JlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsKQEAgLTIwNyw4ICsyMDgsOCBA
QCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAKICAgICAv
LyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBh
bmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAg
IGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+
ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwo
KSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPmV4dHJh
Y3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1h
bGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAv
LyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNv
cnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOCArMjE5
LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VB
cnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlwZTo6
QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAgIGF1
dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0
ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIGF1dG8g
cmVzdWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSA/IG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc0MSw3
ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAg
ICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQg
PSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
cmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEw
NjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8g
QnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
KQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxl
bik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDcyODk0YWY2
Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNhOTVhZWI3NTQ0ODliZDZjZDhj
ZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0
LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCIKICNp
bmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBCbG9iOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFRleHRSZXNv
dXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFy
YW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxk
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4
IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRm
Mjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIg
ZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3Ig
ZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hl
ZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYg
KHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJh
MDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3
ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVu
RnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsK
IAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAg
IHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcy
YjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJl
Y2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBA
IHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6
UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNo
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBh
dXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBk
YXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRh
LT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7
IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5
ZDcyLi42Mzk5YWZkMTZlZDgzMzFhYjIzODg4YmJhNjk2YTcwZDg3MjhmZTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0
b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNp
emUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25z
ZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+
OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lkIHNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hy
b25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNo
cm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0K
ICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERhdGEg
eyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxlUmVm
ZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQog
ICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5j
bGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0Ns
aWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0K
ICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlv
bi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNv
dXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0K
IHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAg
IGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3Vz
KCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAg
bV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVl
c3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgpOwog
ICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0
ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAg
ICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERhdGEK
KyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikK
ICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlz
TWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEt
PmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdl
YkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAg
IC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
IGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBz
cGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRy
eUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9y
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAt
ODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKIAogICAgIEFTU0VSVCgh
bV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAg
ICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEg
YW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAgICAgICAgIGNvbnN0IHNp
emVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAvIDg7CiAg
ICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUo
KSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVm
ZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFgg
WW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCiAgICAg
dW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49
IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CiAKLSAgICBp
ZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSkg
ewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAg
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAg
ICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwpAQCAtOTA5LDExICs5MTEsMTEg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAgICAgaWYgKGlzU3luY2hyb25v
dXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25v
dXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7Cisg
ICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERh
dGEsIG1fYnVmZmVyZWREYXRhLT5nZXQoKS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+
aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5j
b2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVy
ZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS0+Z2V0
KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0K
QEAgLTEyNTYsMTUgKzEyNTgsMTUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpi
dWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQobV9idWZmZXJlZERhdGEpOworICAg
IEFTU0VSVCghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV9uZXR3b3Jr
TG9hZCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVE
YXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEo
eyAqbV9idWZmZXJlZERhdGEtPmdldCgpIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5n
dGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoID0gMDsKIH0KIApAQCAtMTI4MSw3ICsxMjgzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAgICAgTE9BREVSX1JFTEVBU0Vf
TE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVz
ZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3Jl
QXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI4OSwx
MiArMTI5MSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hl
RW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5
U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAg
ICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5j
dXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUo
KS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1f
cmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFz
Q2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2Nh
Y2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBX
VEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0o
YXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3Jr
TG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0
YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBl
ZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3
Li4zNDVjMmZiYTc5OGM2ZGI2YWRiNzcyMTEzMGJlMDRmMGRmNDQxNWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ3LDggQEAg
Y2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBOZXR3
b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTIyNSw3ICsyMjgsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
ZWREYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1
ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRh
OwpAQCAtMjQwLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1
ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7
CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1f
Y2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNo
ZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBt
X2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4u
M2E1NTE3NDkwMWQ0Nzg5OWMxYzAyZDBkMjdhODg4YTdjYmRhNWQ2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzcs
NyArMTc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlD
YWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggMWU3OGMyY2VmYTE1NDg0
MTA0MDYwZjNiMTlkYzUwZTZjYjhmMWViNC4uNWM0YzhlNzFkNGRkMzgzNWMxZDU3MjJiODFjYzdi
NTk4NDBlOGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVz
cG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9u
c2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsK
IAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3
ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyAr
MTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBz
aXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUp
KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJi
Li5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNo
ZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29u
c3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5
LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAv
LyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpu
dWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxS
ZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJl
c3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7
CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAog
ICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAx
YTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3
YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3Jh
Z2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERh
dGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBE
YXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+
ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAg
IG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5n
ZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7
IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0Njgz
NTM2ZWEwZGM4MTkzLi5kNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25z
ZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlk
YXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewog
ICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0
YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEw
MjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsg
YnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVt
Q2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBl
bmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFt
X2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7
CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0
LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBw
ZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkg
aWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVz
Q29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAg
ICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAg
ICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVz
dCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAog
ICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBj
MGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMw
MmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6
OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgwN2Q3NDE3
MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5MWQzMWNhOWUxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1
bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVS
TFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBh
dXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+
Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lu
cHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRl
cyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4
IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjI5ZjcxZDdlNmRjNzUw
ZWYxOWYzMjg2MmM4OWI3MTg1ZTAzYmY4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMx
MDhlNTYzYTZlM2RmMTgzMmU5Zi4uZTljZDg3MmY4ZDQ0ZjE1ZTBlZTM3YzczNDkyYjJkODAyYWM5
MDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aApAQCAtMzksMTggKzM5LDE5IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgog
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVy
Q29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9i
dWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5k
KGJ1ZmZlcik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91
cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7
IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7
IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZl
ci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShE
ZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEy
N2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNv
bnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFy
ZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8
PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJv
dGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIu
Ljc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5z
aWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAog
cHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjVi
Zjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyAr
NjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25l
ZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJl
c291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2Fy
Y2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVs
ZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNi
YTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAg
ICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwg
c28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0
LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVl
KCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURh
dGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4
IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUy
MDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAl
bGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChk
YXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7
IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYg
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYz
NzdhZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3
MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cApAQCAtNTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5T
aGFyZWRCdWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9
LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgp
OyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNl
ID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJj
YjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNk
N2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
CkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsK
IAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBw
dWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRN
ZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAg
ICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRi
MjBhN2U2MGUyMWJkNDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAx
YmM1ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZl
cihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgog
fQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERl
Y29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIo
RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
ICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIs
IFJlZlB0cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVU
eXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQg
ZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRh
dGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5j
b2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBl
c0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
bwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0K
IAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNv
ZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlw
ZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYx
LDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEo
RGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5
cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkr
KykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5k
KGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNw
b25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAot
ICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJv
ZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVy
LCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0
YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpA
QCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERh
dGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
cmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAg
IHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0z
MDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFs
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBi
dWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVm
ZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAg
ICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShk
ZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNk
ZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87
CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVk
ZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsK
QEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4Mjll
OTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFi
MDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3Vt
ZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlv
bkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9t
RGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRD
dXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQog
CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNh
OTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2
ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJD
b3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25h
bDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRm
b3JtRGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9u
RGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkg
ewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250
RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAo
IWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYz
NjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4
OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0
dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3
NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNj
NDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNT
IE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2Up
IHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBo
YXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0K
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwg
V2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFi
OWRkYzdhNDYxOGZlZDQyMmVjMzg5NzQwMzUuLjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkw
MWI3MTlhMWE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRl
PD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBj
b25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0
ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRl
PD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikK
IHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0
ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpA
QCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAg
cmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3
MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxp
emVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12
b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlw
ZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQy
ZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJj
ZmNiMGI1MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hs
aWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGln
aGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0g
ICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGlu
aXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhb
W19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hs
aWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGlt
YWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdo
bGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9
PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5h
dGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGln
aGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1
ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYz
YzIyZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6
OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRh
LCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21E
YXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5n
dGgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0
YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0
Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
aW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2
YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0
ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlv
blN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVk
YmVhMmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1ZS4uYmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRjZDZj
NzdiOGY2ZGE1ZjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAg
aWYgKG5vRXJyICE9IEF1ZGlvQ29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZyZWdp
c3RyYXRpb25zKSB8fCAhcmVnaXN0cmF0aW9ucykKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgewogICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBy
ZWdpc3RyYXRpb25EYXRhIH0pLCAwKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0
YSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25z
LmdldCgpKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhKSB9KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYz
OTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5
N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAg
aWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6
bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjps
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2Ut
PmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFBy
b21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVu
CiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmws
IHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAg
ICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtw
YXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBh
c3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAm
JiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAg
IH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQ
cm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAg
ICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0Zp
bGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0
aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJl
KTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsK
ICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFz
dGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0
ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDky
OC4uNTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlu
dGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hh
ckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFu
Z2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxh
eWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZv
cm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3Nh
cnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDVhODMyZTU1YWNiYTE4OWIzOWI5ZTg5N2NjMWNhMThiN2I0ODQ1NTUu
LjlmZjIzYTg2NmZmMGQ4NjI3NTE4NWJmNjI5ZjFhNDc2Y2Y0ZmU2ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc5LDcgKzExNzksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5k
b3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNw
b25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRl
eCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi41ODU0N2Q4NDg4MWRj
ODMwZjY5NjlhMGNhOTc2NzAzNTRmZWFkMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNr
OjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQ
cm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKICAg
ICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJz
LmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAg
bV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1f
c3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBA
QCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAog
ICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAg
ICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRh
KCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5j
RGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0
YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEp
KTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxT
Y2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBt
X3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
aW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uYjA3YzE0OWZk
NGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFu
ZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
c3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1f
c3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2Nzhj
MzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApA
QCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2Uo
KSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0
aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9z
aXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4
Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcg
KzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFu
Z2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bv
c2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudElt
cGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdl
RGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRl
VG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCmluZGV4IDFhODFjY2U0NDU1ZWIxYTcyYjEwZThmMjQ3M2M2MGEyOTFlYTU4YmEu
LjBjNjI1YzMwZDMwM2ZiZDk4NDliODRiNmU3YWFmYTM0Y2Y3YzM0OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmll
dzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICph
bGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlw
ZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0
OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJv
YXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSku
b3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVy
biBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTksNyArNjU5OSw3IEBAIHN0YXRpYyBCT09MIGFsbFBh
c3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwg
Y29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVu
dGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTcwLDcgKzc1NzAsNyBAQCAt
ICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNz
aXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQg
SW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBp
bWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsg
eyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJl
c2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFt
ZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXBy
ZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVE
YXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYu
d2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0OWRhNDY3Yjk0
MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZm
YTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGUw
M2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLmE3ZmI0YWFiY2Y3NGQxYmQ3
MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdl
UHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNm
NzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1Yzhk
MDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdl
OwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktp
dDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2Vi
S2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6
OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3
YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQp
X3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0
ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVn
YXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29u
dHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRl
SGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFu
Z2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAt
ICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5n
RGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21f
Y29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3
cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAg
Zm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFz
dGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0
YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkp
OworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAg
fTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAu
LmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVi
b2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bh
c3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2Ns
aWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlw
ZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNv
CiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAog
ICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpE
YXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXpl
KCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4u
ZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNh
dGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBj
b25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRl
VG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBw
ZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBj
b25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5h
bDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0
ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYg
cGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVk
IGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGlu
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgot
ICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+
ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJM
JiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsK
ICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0g
ICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNp
Z25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJl
bGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91
c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGln
dW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCks
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91
c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVz
dCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEko
TUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVu
cmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFj
Lm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRl
YzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1v
ZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBt
b2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVs
U291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7
CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggOTRkOWQyY2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4uOGI1ODIxMTRi
OTM1YjI3MjRlOWVhZDMzZDZjYTQyY2ZkZjEyY2U0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICgh
cmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZm
ZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBj
cmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNv
dXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5
Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2Us
ICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRh
dGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJv
bGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250
cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThj
MWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFjMjVkNTkxZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVt
ZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQ
YWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhw
YXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAg
ICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
KSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSAr
NDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkg
ewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0
ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRh
KQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51
YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBl
cnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9t
YW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmICht
X21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOwor
ICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6Rmlu
aXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZv
aWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlk
UmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZl
ciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21h
bnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51
YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVt
ZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBt
X21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2
YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5NmQzZGYw
ZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNv
cmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3Qg
aXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1
cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBh
aW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmlu
ZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVm
MjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNw
b25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZm
ZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVp
bGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNo
T24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYg
KG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVm
ZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBp
ZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10o
UmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMw
ZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
ZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNo
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRp
b25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2
YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdl
YkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jl
c3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJD
b3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlz
aCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2Qx
YTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2
MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAot
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
CiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2Fy
ZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0
NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIx
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRv
U3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3Rl
cCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2Qz
ZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2
MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0x
MTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBu
dWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7
CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3Vy
Y2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVs
bHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwog
ICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5p
c2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCku
c3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3
NDExNjAxY2Y3MzBlNjJhMS4uNmYzZjU2NmM1MmYxZTM5ZGVmMDBiNWYzMTlmZWJhZTY2NzhhMTlj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEy
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmll
cihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRU
eXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVz
LgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVi
b2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVy
cmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJ
IHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpA
QCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGlu
Zm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJv
YXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShp
cGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2
M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4zZmYzNTU4MDhlMWQ2ZWIyYWUzMmI1
N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01
Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51
bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBh
dGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3
OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3Ry
aW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtODks
NyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc2YzYwMjg4ODEz
NTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0K
ICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOwor
ICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5y
ZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNz
d29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5
Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5hZTA1MGE5OTIzZWE3ZWY5NTU1Y2JhMTcyMGJk
MWZmZjZiYzk2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7
CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQz
MzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJi
MWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9
IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdl
U2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZl
ciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2
Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUg
YXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRh
KSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChf
X2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRh
LmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFy
Y2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2Ix
MDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMz
MTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkg
Y29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1l
bnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2Rpbmco
KS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXpl
KCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7
CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNvbnN0IApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRl
eCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDEx
NjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBh
c3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgp
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFz
dGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRm
MThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0
NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9v
bCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNF
RF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lO
VEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYK
ICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9v
bCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBw
b3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5k
ZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4
MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAo
TlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8q
IGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGlt
YWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgy
ZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIy
YThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJl
cXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRj
NDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90
IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAv
LyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMy
ZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRl
bnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCBy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
VmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRl
eCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1
NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBA
IGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmlu
ZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQz
YmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChO
U0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291
cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAg
ICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+
KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2
N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgx
Mjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5T
YXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYg
KFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBT
aGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9k
b2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNl
ZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBh
cnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
LmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1
YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1
NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVN
ZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byog
aW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBb
aXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1d
KS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdl
IGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAg
fQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXgg
MTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYx
OGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0
aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisK
KyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAg
TlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1l
ID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAg
aWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5T
RGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwog
ICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5j
b2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJl
c291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9u
c2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpk
YXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVj
dDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4
dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQog
CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCku
YXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFs
dWUKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAg
ICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJp
dmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGlu
Zy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0
YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwor
ICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Y29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciks
IGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRh
ZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1
ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5
U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwog
fQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5
U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2
MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZj
OWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAg
LTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFt
CiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8
TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0
cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsg
MCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4
MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNV
TFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAg
ICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwg
Q0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwg
Q0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVh
bTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZl
MmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2
MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7
CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1
Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJm
OGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5j
cHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9P
dXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAg
IHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJ
bnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsK
KyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAog
SFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElX
ZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjZk
YzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2Fk
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJT
VFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRh
LCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJT
VFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcg
c3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFN
RSkpKSB7CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShf
SW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogICAg
ICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJl
dHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8g
b3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VF
REVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRh
QnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXpl
KCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0
RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50
YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJl
dHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5k
ZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4
NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNl
KCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdl
YlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVt
b3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEz
NjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFi
Y2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3
ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGQxMGZjMmZmZWIyYjVkYmEwYzUxYjJiYWE3YzVhY2M1ZTBkNjg5OGIu
LjBiZTkxNjJjYzY0ZTJmMWNiNDQyMWVmYWE0ZjM1MDNmYzYxZjY4ZTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAy
MS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0
ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAK
KyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDMgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gV2ViIGNvbnRlbnQgcHJvY2Vz
cyBzb21ldGltZXMgY3Jhc2hlcyB1bmRlciBXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5j
cHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uYzY5YjE2
MTZjMGNhZGE1MzI0ZDcyZGI3MzIxMmRmY2VmYmE1ZGUzOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKQEAgLTQzLDUyICs0Myw0NSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdG
aWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAg
ICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwot
ICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBT
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUo
U3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZm
ZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHko
KTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKLX0KLQotVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhp
c3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NF
UlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RS
VUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOwor
ICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBi
dWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09
IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNU
X1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VR
KCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
XSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5k
KCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSAr
IDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5n
ZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIpCkBAIC05NiwxMCArODksMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAg
IGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29v
ZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4o
dGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERh
dGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9
ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNh
dGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwg
bWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVu
KGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMSwxMCArMTA0LDEwIEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9y
MikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAw
VSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlv
biA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUxLDE3
ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBk
aWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1
ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBw
cm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1
bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0
RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0
RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Cisg
ICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZl
ciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBj
aGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29w
eSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NF
UlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9u
ZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBB
U1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0
aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUg
PSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNp
emUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVy
Mi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBi
dWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEo
MFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8i
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5j
b3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHko
KSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUg
ZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIu
Z2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBw
ZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cisg
ICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0
eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBl
Y3RlZCkKQEAgLTE3NSw2MCArMjA0LDcwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90
PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsn
ZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywg
J2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0
b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50
OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMz
ID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7
CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBh
YmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUo
KSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7
CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVm
ZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihr
bC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamts
LCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5k
YXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCks
IGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gy
LnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRh
dGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8g
bWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBj
b250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwot
ICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwotICAg
IGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAg
YXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAg
ICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVy
MS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVY
UEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAn
YScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7
J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwg
eydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2In
fX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQ
RUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywg
J2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSku
Z2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEo
KmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAn
YicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7
ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycg
fSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSku
Z2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
dG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgx
Mn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsK
ICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwor
ICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBF
WFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKQEAgLTI0OSwxNiArMjg4
LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQp
KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5pc051bGwo
KSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAwdSk7CiAKLSAg
ICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVm
ZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVD
VF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0zMTMsMTUgKzM1MywxNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQog
ICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyAr
K2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0g
ICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcihkYXRhLCAyNTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hh
ciBjID0gaTsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgmYywgMSk7CiAgICAgfQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCBwZWVrRGF0YSkKQEAgLTM1OCwxNiArNDAwLDE3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAg
ICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4
dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4o
c2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQpA
QCAtNDA2LDE3ICs0NDksMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwg
cmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzaW1wbGVU
ZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAg
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRl
eHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVl
YzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8
TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIu
ZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0Rh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChj
b25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXIt
PmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVs
bG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVk
RGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhw
ZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAg
ICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVy
LmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRl
TlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAg
ICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7
Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOwor
ICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAg
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlv
bik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0
YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAg
ICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAg
ICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhw
ZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0Rh
dGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdF
bmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446021</attachid>
            <date>2021-12-06 03:31:59 -0800</date>
            <delta_ts>2021-12-06 23:24:28 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211206223155.patch</filename>
            <type>text/plain</type>
            <size>518338</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhMDgyNGJiN2M3ODUw
NzRhZjgxMzY1OTEwNjEwMGRiZTNmMDVhMC4uZmQ3YmMxMmYwNWUzNjQ4OGNiNTMxOGQ3NzZkOWIw
YWZjNjg5ZTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFVzZSBlbmQgYml0cyBpbiB0ZXh0IGJveCBp
dGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA3MTc5NDc1ZjdkZmQwOGYxNDhkMDI1ODdlNDBjZmQ1OWIwMWFh
OGRhLi45MjliYWQwMzk0NmY2NGUyOWY2YzE4MTMyZWQ2YjA5Mjc4ODE1NjFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdp
blZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRv
U3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVx
dWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToK
KyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1h
Z2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0
KToKKwogMjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRl
ciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzZhYTZh
YWY4NGRlYjA4MmU0Yzg0MzIyNDkzMzgwZDgzM2RlOTJkMS4uMGYwODZlMzllNWJkNDQ1NjAyYWFk
MjY0MzExNWNlNGRmNjM0YjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29k
ZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMiAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAg
bmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggMDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1NDcyNDdjYy4uMGJhNmNlYzVi
MDY1YjlmYzY5ODM0MzU3MzExOWZlZWY5ODU1MDJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAg
ICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0
YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToK
KyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9y
eVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2
ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRh
dGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICog
V2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToK
KyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIgTG9jayBBUEkgd29yayBh
Y3Jvc3MgbXVsdGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJl
ZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0y
NjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlw
Ym9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1h
cmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2Fu
aXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVs
c2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAg
ICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4
NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZk
MDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikg
ewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5j
ZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdp
dGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdl
LmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQu
Z2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMp
LCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEz
MTc4NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2UzOTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2Ug
Q0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAg
ICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVw
IGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBu
c0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJ
bWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNm
ODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRj
NTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
dWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25z
dCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdU
Rjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewog
ICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVy
LT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4
M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi5kYjNjMTM2NDY5NDliNWNmODRlZjkyMzM1
ZWYxNDEwYWE1NDk2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVx
dWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+
YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVs
bHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1d
IChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVC
b2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCBy
ZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBS
ZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0yOTksMTUgKzI5OSwxNSBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJl
cXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5y
ZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlv
biwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFu
ZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtl
KCktPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQogfQogCi12b2lkIERP
TUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYg
cmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9k
eSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4
Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBA
IC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hl
RW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25z
ZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92
ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZN
b3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZN
b3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1
ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNl
CiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAg
IGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVm
LmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
cmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSks
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVu
ZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RG
TW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZvaWQgRE9NQ2FjaGU6
OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBE
T01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChj
aHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1v
dmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdU
Rk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3
NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJk
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNw
b25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYs
IFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
Jik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9u
T3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3Mg
U2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJl
Y29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9y
PERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4
OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5
KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihi
b2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsK
ICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25z
dCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICBy
ZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZm
ZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5k
IGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9u
c2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29w
eVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwg
W10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAg
ICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10o
Y29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
RE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVh
ZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApA
QCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2Fj
aGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hl
UXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlT
dGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENh
Y2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcg
UmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VC
b2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJj
NjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRk
YXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAog
ICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICgh
dmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFy
cmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVl
KCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5w
dXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0
ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVh
MTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEs
NyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICgh
bGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAg
cmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCks
IGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJT
b3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQ
YWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlT
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVz
ZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFp
ci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3Vy
Y2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdU
Rk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5
MDZjMmJmODJlM2IxLi5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyAr
MjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25l
ciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
Rm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNT
aGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBt
X2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
Zm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9i
cy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFz
Rm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAm
Y29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0
YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1
dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJv
ZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFC
b2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5k
bGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5k
bGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFy
Y2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5j
b2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVy
Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdC
b2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9k
eSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
IAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4u
MDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5n
IFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxG
b3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNj
MjE2YTAxY2RmNjk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMTFhNzNmMzQ1ZTgyZDllNzA4
NTk4YWE4MzNkZWFlZDhiZWM5MzQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMg
dm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0g
ICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRD
b25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVh
ckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBj
bwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAg
ICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5
cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5
cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9t
aXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSBy
ZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50
VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEu
YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJv
bWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgq
c3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25z
dCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVy
OjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0g
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1E
YXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3Jt
RGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJy
b3IpOwpAQCAtMzI0LDE2ICszMjYsMjAgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5l
bnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRh
LCBzaXplKTsKK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit7CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlRGF0YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOwor
ICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBt
X2J1ZmZlci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0Nyw3IEBAIFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KG51bGxwdHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJy
YXlCdWZmZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzU1LDcgQEAgUmVmPEJsb2I+
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShj
b250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1f
Y29udGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZl
ciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAg
IHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlw
ZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4
dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2NCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21V
VEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0g
bnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApA
QCAtMzgzLDEwICszODUsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQ
cm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5
U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAg
ICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAg
fQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIu
dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1
NmYxMjY0M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcw
ZjRlYzZkOGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNl
dERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRh
KTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJp
dmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsK
ICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAg
ICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBh
NDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmI5MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzll
NzZjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAK
QEAgLTQ0MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3Bv
bnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAg
ICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1v
dmUoZm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAg
ICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEo
V1RGTW92ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmgKaW5kZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4u
Mzc0OGM4ZjU5MjcyOTMwYmJjMmQxNjY2YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmlu
YWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25z
ZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7
CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVX
aXRoUGFkZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0
MS4uNjEzN2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUy
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNp
emVfdD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3
NmMwNi4uODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGln
aHRGaWxlU2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAK
IHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29k
ZXIgPSBidWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXIt
PmRlY29kZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0
YTsKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5jcHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4u
YTFjOTMxMmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0g
Y2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQ
YXRoPiYga2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAg
ICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyAr
MjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNv
bnN0IElEQktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlW
ZXJzaW9uKTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90
KiBlbmQsIElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRh
NjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4
YWI1MTAxMTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMy
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFs
aXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBk
ZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFh
NjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9v
bCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJ
bmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigq
bV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgo
KSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQ
YXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRv
IGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rp
b24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAg
LTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
SW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGlu
IGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0
NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
SGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3Jk
ID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUg
c3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXgg
cmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBv
YmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0
b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVl
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGlu
IHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRv
IHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0
ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5j
ZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0
aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRh
KTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0x
OTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFu
IG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcg
KzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFu
Z2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5
RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEz
Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJL
ZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4
aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVw
cGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JP
bmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXku
dHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhl
ZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCAr
MjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAog
ICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6
Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxv
d2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
IGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0g
cmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51
cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9u
Il9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZh
MTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAz
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxp
dGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShtX2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1
cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlE
QkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50
IChrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJi
Li5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0g
dHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5p
c1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdl
LmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdl
LmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAg
aWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVm
MzZmNjgwM2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVu
dChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYg
bWVzc2FnZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdl
LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRS
ZWNlaXZlUmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAg
ICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0
ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1
YTdhZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjYzZjFjM2NiZTFlYTgxY2ZiZjQ1NDY0NjMy
MGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAg
IG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEu
cmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3Vy
Y2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJj
ZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBt
X3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQo
KnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
TW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVT
RUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRh
KTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBw
ZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07
CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZh
bGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAz
LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0
ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25O
dWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBt
X21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdl
dCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlk
YXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRl
eCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMz
MDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsx
MzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBS
ZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFk
eVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRN
b2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9z
Y2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVk
Yjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMz
OTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBv
cmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwg
Ii51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRs
ZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZp
bGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291
bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4
NDM3N2QyMjRhMWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2
Y2FjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAg
ICAgIC8vIEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGls
ZXItPmZhaWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwg
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsK
LSAgICB9LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRk
Qnl0ZXMoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXIt
PmZpbmFsaXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90Jikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJj
ZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJk
Ny4uYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZm
ZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAg
ICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICpt
X2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1f
Y29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25s
eUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9j
b250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAg
ICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJp
dHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAg
ICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAg
ICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAg
IGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0
U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2Ny
aXB0QnVmZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3Jp
cHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9z
Y3JpcHRIYXNoIHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5n
OwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1
YmY2Mzc4Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVk
NDFlNGJhN2ZkYTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVu
dCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVu
dE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdU
b09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9U
RkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7
CisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
aW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7
CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVT
b3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsK
KyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3Mo
KSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3Vj
Y2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
CmluZGV4IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFl
M2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9u
dENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9u
Owogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9u
dFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5n
czsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsK
QEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4g
bV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRp
bmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsg
Ly8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVl
c3QuCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAg
ICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNm
MGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0
NzNiMTRjNjg5YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEy
NSw3ICs0MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0
YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdl
dFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxU
eXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRl
eCAwMWZlMGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4
MjAyMzg1MjBlNjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAg
LTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2Zl
cjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3Mg
RGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENv
bW1hbmRDb21wb3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAK
ICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01
NzMsNyArNTc0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRh
Y2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50
KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYK
IApAQCAtNjE4LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxl
bWVudCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7
CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRB
dHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1
ZjE5YTYuLjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAt
MzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVU
eXBlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1
MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5
YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0
cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVk
U3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3Ro
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0
ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFy
Y2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJl
Q29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlv
bkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlv
bkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lk
IEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFG
b3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAg
YXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAg
IGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVz
LCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRU
eXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAg
ICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVu
dFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFS
ZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFy
Y2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBl
bmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9y
Ojp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRh
dGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNv
bnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAg
ICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3
RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vu
c2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0
ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwy
NyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYg
dXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdl
ciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdl
KDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBz
dHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3
ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsx
MjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJj
ZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1p
bWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNl
aG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmls
ZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3Jh
cHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1
cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RG
b3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxl
V3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5T
CiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAg
ICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJl
Z3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJp
bmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsK
ICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAg
ICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3Vy
Y2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1M
SW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdp
dGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRl
cmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5
ZTIyNzkuLmFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1
Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAg
ICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJl
ZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBA
IHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJh
bWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxp
emVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCks
IHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJp
YWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVy
KCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0
eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAg
ICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVz
b3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2Ug
fSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmpl
Y3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBA
IC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52
YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAg
ICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVz
b3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0
YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRC
dWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBT
dHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNl
LT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUu
cmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5n
Ojpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5p
dGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9u
RG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWly
a3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+
JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmlu
ZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3Rp
bmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3Vi
ZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJj
aGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVz
b3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgp
KSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6
ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAg
IHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5j
b3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3Vw
V2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwg
TVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYx
Nyw3ICs2MTcsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1h
Z2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAg
ICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcg
QEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcg
KzY0NCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3Vy
Y2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFk
ZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJl
c291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5k
ZXggMmQxOWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFj
YTIxYjBjNzIyNzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VO
b2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxl
bWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRv
cjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAg
IGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwog
ICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJh
d0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAv
LyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2Qg
cHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMg
b2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVu
dCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0s
IHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5
NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5
YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFy
c2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAg
YXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNp
emUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3Ry
aW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRy
eSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxh
dGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEo
Y29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxh
dGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgp
KTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9y
eVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4g
YnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAg
CiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgp
CiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7
CisgICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRh
ID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVh
a1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdv
dWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRh
IGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1
bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlz
dGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZm
NzMuLjhhNjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVkMDQ2MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcs
NiArNDcsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRl
bnRTaXplID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwg
bV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAg
aWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAg
IHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBu
dWxscHRyOworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYg
KGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92
ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7
Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVu
Z3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5z
aXplKCkgOiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgp
KTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Rh
dGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFo
YXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNp
emUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGln
dW91cygpOworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBp
ZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAg
ICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBt
X2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0
aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBt
X2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTEx
N2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQw
OTA5ZmU5N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdl
QWdlbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFz
cyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVz
b3VyY2VEZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVp
bGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGlt
ZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7
IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1f
cmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZm
ZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAg
ICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBj
b25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpA
QCAtMTE5LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5n
TmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YUJ1ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0
YUJ1ZmZlcjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4u
ZDE1Y2I0Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcApAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAg
ICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJj
ZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJj
ZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5j
b2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZs
dXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0
ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFj
NDcyLi41Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJl
c291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygp
LCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUs
IHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250
ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAg
cmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdh
Li45NzRmMjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250
ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291
cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1
ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9
CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRj
MzZlZjUwN2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3
ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2
b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVl
c3QgPSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIu
c2VjdXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3Ig
ZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwog
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVy
KCkubG9hZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25z
IHsgfSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFk
ODFiZjgwZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgs
MTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRB
bGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1h
aW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWlu
UmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRh
KCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5
cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0
YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkp
OworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3Vy
Y2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIs
NyArMTY1Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygp
CiAgICAgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hh
cmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIy
NTYsNyArMjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011
bHRpcGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwog
ICAgIG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3Vy
Y2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRh
LT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVl
Y2NjYTRjYmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBj
bGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7
CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNs
YXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZl
UmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUo
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9h
ZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
PiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8
fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNo
U2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIy
MTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0
NDVkNjYzNTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBG
SVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0
ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8g
aWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAppbmRleCBjMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0
Li45ZTlmMjk0NjcyZjNkNjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQog
ICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3Rv
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRo
U29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2Ux
OTI3ZmM2NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmlu
ZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJh
bWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdS
ZWZlcnJlcigpKTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
CiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5t
YXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkp
IHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25v
dXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZm
ZXIpOwotICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwg
cmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlv
bnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25J
c1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9u
SXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBl
MTNlMjg2ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZk
MzdjMTBiZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQ
YWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0x
MjcsNyArMTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxF
KE1IVE1MKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+
JiYpOwogI2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJy
b3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAg
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0
aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51
bGxvcHQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwg
Y29uc3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9u
KEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4
ZTQ5NTE3NmFjMjM1Li41ZWIwNjUzNjBiMTBkZjgxYjU2YmU2OTQ3NTFkY2Q5MzFlN2RiMGY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcg
QEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7
CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9k
b2N1bWVudExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQor
ICAgICwgbV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkgfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5
ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdl
KCktPmRlZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAg
LTExOCw3ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkK
IAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0
cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAg
ICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1
ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0
Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyNCBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2Fk
V2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hv
bGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAo
YnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVs
c2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitj
b25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAor
eworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURh
dGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9yZXNvdXJj
ZURhdGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsKIH0KIAog
Ym9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CkBAIC01NzEs
NyArNTcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRo
IHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBw
ZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxv
Y2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2Fs
bGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRh
dGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2Fz
dDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3Rh
dGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQy
YmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4NjdkNDc4
M2VjYWExMzZiNTc4MzkyYzI4MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7
CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBO
ZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNv
dXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJv
dGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAg
U2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0
YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7
CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBp
c1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1f
b3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAppbmRleCA0NmNlZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJj
NjQ2NDgyMDM0MDE3ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgsCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNv
dXJjZURhdGEoKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3Vy
Y2VEYXRhKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0
YShidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNl
Yjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0ZmM4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEg
QEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVk
QnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7
IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3Bv
bnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9u
c2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAg
ICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3Bv
bnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
aW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBl
NDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYw
NSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGlu
Z01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
LmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1h
bmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9t
YW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5k
YXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0
aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBp
cyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2Fj
aGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3Vs
ZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJl
ZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVh
dGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5l
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVz
b3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBj
b3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHko
KSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAg
aWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5k
YXRhKCkuY29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
IHJlc291cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2Fj
aGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3Jt
YWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3Ro
ZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1
eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5l
dHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCks
IHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZh
bGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYK
ICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYg
KGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkg
ewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9u
Y2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAg
ICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRj
ODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00
Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
T01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsK
QEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9h
ZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlcios
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJl
TG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYp
OwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1
ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNo
ZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdl
MTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMy
NzUxZmQ3YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEo
KS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgp
KTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGgu
aXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4
NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRh
dGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpy
ZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIz
M2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uYzc3MGQ3NjQxMzUwNjUyZjVm
NzRhMGRjZTUwY2U4ZDMzZDFmYzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyAr
NzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hlUmVzb3VyY2VE
YXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRhdGFTdGF0ZW1l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBmdWxsUGF0aDsK
ICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1LDcgKzgxNCw3IEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0
KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNp
emUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIgKzg3MiwxMiBAQCBi
b29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChl
bnRyeVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAg
ICAgLy8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZp
bGU/IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1
cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAo
IWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOwor
ICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQo
cmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEzLDcgKzExMTIsNyBAQCBSZWZQ
dHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1
bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3Rh
dGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBh
dXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxv
Yig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJp
bmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxv
bmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0
MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAg
Ly8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5
IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwog
Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0
KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8g
Y2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTEx
Nyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1
ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICgh
aXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEg
PSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkp
Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5n
ZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNw
b25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7
CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAg
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9u
c2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNv
dXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNo
aXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVz
cG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBD
RlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lX
ZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0
cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNy
ZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNl
RGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYs
MTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwot
ICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAg
ICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRh
dGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwot
ICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgw
LCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwog
ICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVS
TCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlE
KHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5v
dCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNo
aXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFy
eVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNl
S2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0
aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5
V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAg
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMg
bm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uo
c3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJv
b2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkK
ICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJh
bWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBX
ZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3Jl
YXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1l
RGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJh
bWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpl
eHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhB
cmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tp
cHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8m
IHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsK
ICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0
J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkK
QEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3Vt
ZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwog
ICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4g
YmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUg
YSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3Vw
ID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhl
aWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsg
IlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdm
ZDM0ZDkyMWQ3MjdjLi45OTNjMmI4ZTgzMGRjM2Q3NWM1YWQzMTliYmFmZTlkZjQ1YzUwMTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hp
dmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJj
aGl2ZS5jcHAKQEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hp
dmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBi
ZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/
ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFT
U0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5n
IGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRv
IG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBl
bmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmlu
Zy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3Vy
Y2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4
LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1I
VE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNv
bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50
LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAg
ICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAg
ICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2Np
aVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQg
ZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0
IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAg
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlm
ICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAg
ICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVu
Z3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwg
ZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxu
IiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwg
ZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4i
LCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRl
bnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlp
bmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGgg
TEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxT
aGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkK
ICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUo
KTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9
IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsK
LSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBp
bmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxy
XG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRh
dGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBw
ZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5n
dGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3Vu
ZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmlu
Zy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFz
Y2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1o
dG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4
IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjQwMjViOTgwZTVlZTY4
MmRiMDc2MmFmYTg2ZWNhOWQ5MmZlODU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5p
c0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRv
IGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91
bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAg
IGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6
QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0
Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250
ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1v
dmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFk
ZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVI
ZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGlu
ZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIs
IGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGlu
ZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAo
bWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3Rl
ZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVz
IHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2Ug
YXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBs
aW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAg
ICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVy
LAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91
c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2gg
KG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUo
Y29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWRE
YXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXND
b250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFk
ZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFk
ZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29k
ZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90
ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0Nv
bnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2
ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5k
KGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQo
Y29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBl
bmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlN
RSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlz
LgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0
cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQg
RmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3
MDQuLjkwZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewog
fQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENh
Y2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIx
NGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBk
b2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VE
ZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
ZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1
OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2
MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0
IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQg
bWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAK
ICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hl
YXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAg
ICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05
NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20o
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVT
aGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQg
b3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNo
ZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2Rl
IHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4
dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1
bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJl
Z2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2Ex
Li5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1
YmNlMjcxZDA3NzYzM2FlOTQuLmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIw
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0
LDEwICs2NCwxNSBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4o
Y2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkg
OiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJp
Y3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRl
bUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRh
dGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENh
Y2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICBy
ZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBi
b29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
eXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsK
LSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5
dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZm
ZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpi
dWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBA
QCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
CiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGll
bnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQo
KSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZk
OGVjNGJlZjQyMTAuLjE1NGRiOGNiYWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21G
b250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
Zyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0
Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0
IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0
ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJ
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3Jl
YXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNv
bnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0
aW9uKCkgY29uc3Q7CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RV
RV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4
IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4
NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hl
ZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0K
IAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBk
YXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAg
ICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFn
ZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3Rv
bmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1
cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1h
Z2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICBy
ZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNP
REVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6
Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNo
b3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNv
bnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01NTMsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUlt
YWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2
OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZElt
YWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5l
ZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1
MjAzZjQuLmQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1
YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhh
c1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNS
ZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVl
ZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJ
bWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwog
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZv
aWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFj
ZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0
NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFk
ZmRjNjQ4MDQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
QwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQog
Ci12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9t
IG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlz
aExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRh
U2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNE
YXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAv
LyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRo
ZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiAr
MTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZl
cmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0
byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkg
ewotICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGlu
Y3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgewor
ICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
IGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5r
KGRhdGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFs
RGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhi
YTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkg
KzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAog
ICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRl
OwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAs
IENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5
ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5n
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmNmNGYwMmM1
ZDc0MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAg
ICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0
cmljcyk7CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6
OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVm
ZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAg
cmV0dXJuOwpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAh
PSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAg
ICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZl
ciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNj
MTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEz
MjVmOTcyOGE3OTBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwg
dm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0K
QEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAK
LSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3
ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5
dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICsz
MzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGll
bnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6
CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBh
ICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgz
OWI3MDZhMGIxYjMzMWYyYzgzOS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4
MjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBk
b2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1
bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2Uo
KS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3Vt
ZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhi
MzRkMzk2Mjk1YzUzZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAz
NDc0YzMwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBv
dmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1
bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNv
ZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmlu
ZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRh
OGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRT
VkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
CiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJ
blNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29u
dGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+
c2F3RXJyb3IoKTsKICAgICAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZH
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQog
ICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShy
ZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBj
b252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVt
ZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRl
ZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRG
b250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50
ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5o
CmluZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBl
MTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAg
IFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJz
dEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJu
YWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVt
ZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5
ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlm
ZDQ3MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlw
dEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0g
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgp
IDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgw
KTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmlj
cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRl
eCA5MjRiODRjYTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1Nzll
MzFhYWRhOTcwNjlkOWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2
MS4uNTQyNjZkZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0
MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0
VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7
CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2
ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigm
ZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6Zmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2
NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5
Mjk2ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5
VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2
NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEy
Zjc0ZTdjYzllYTM5ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+
ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgewor
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7Cisg
ICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0
ZjE2Y2YzYjdlY2EyNTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAg
ICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VE
ZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNv
ZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRv
ckNvY29hLmgKaW5kZXggY2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4u
ZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIs
MTcgKzMyLDE3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tD
YWNoZU1vbml0b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2lu
Z1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZik7CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJik7CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZh
NGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEy
NDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xs
IHRyeSB0byB3YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBm
b3JnZXQgdGhlIHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JU
aW1lb3V0ID0gMjA7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRy
eUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNl
KQogewogICAgIGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0
YShjYWNoZWRSZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNo
ZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9u
aXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBB
TDo6U2Vzc2lvbkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRD
YWxsQmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
ZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lv
bklEKTsKICAgICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4
M2I3ZGU5NGI5NGEyLi5iNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7
CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQ
cmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2
YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC03MCw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZl
cnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1f
Y2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJl
c291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRp
bmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJl
c3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2Vm
MmE1NzM0Li5kYjgwNjljYmY5ZGI3NTBlYjdjMTcxODRhYmZjMWMyYjNjNTA5MjczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0x
MDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0
YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+ZW1wdHkoKTsKICAgICByZXNvdXJjZUxv
YWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29u
dmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2Uo
KSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0
ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9V
TlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
bV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6
fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVn
YWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIg
eyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2Ns
aWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCks
IG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgfQogICAgICwg
bV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xp
Y3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRv
ckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2Yu
LmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhT
b2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IGYzN2QwNTliMGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMuLjZkNTFjNWU1MTZhM2Ri
ZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1Miw3
ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAg
ICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVz
cGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJl
cywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91
dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAg
IGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cAppbmRleCAxYTEyMTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5kNzUwY2Zm
OTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9j
dW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwot
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBl
KCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNv
ZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1
cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpF
bnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChh
dXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxp
emVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNv
bnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFy
c2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAg
ICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNo
YXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAg
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1
cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNv
ZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBA
IC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0
OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWlt
ZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQ
YWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApp
bmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJi
MjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgK
QEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsK
ICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAK
IHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJl
OGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRh
UmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAg
ICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1
bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmls
ZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZm
ZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRh
LmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0g
ICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVu
ZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVh
cigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGlu
Zy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBk
N2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0x
NjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29u
c3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcm
IGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0
N2RjZDFhMTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2ExM2Q3
MzkzNGFhMDQzNmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0
ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwog
ICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7
CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zv
cm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0
ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5I
VE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJM
IHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBl
OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7
CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFz
aFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAg
IFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZl
Y3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJp
bmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkxMTRj
MzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQwMGQ2
ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0
YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRl
U2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4
cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAK
QEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAg
ICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8
PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rl
ci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXpl
KCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikK
QEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1
c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVu
Y2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZl
YzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5n
JiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2lu
KGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcm
IHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5hNzg4
ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
OwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVh
bCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJs
U3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAg
dmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4g
cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVU
b0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJm
ZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2
NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3Jp
Z2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0Owog
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0
MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBi
Y2E1NDM2NGFmYzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJv
YXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0
ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBT
dHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFn
ZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChz
aXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGlu
dCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li40
YmVhNGYxOGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBjb25z
dCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAog
CiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJl
dmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5S
ZXNvdXJjZSgpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBs
YXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnBy
ZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3By
ZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVu
dC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0
KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlz
LCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNv
bnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZh
ZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5NGVh
OWQzNDlhYjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3Ry
dWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252
ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOwor
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJl
c291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdp
bmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4
IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNl
ZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0
YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlw
ZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAg
ICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
IAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAw
MzUzNTM4NWQuLjVlMjVhZTNlNDgxMTZhZjQ4NDM5YzNmZjIzOGVlYmQ0MDVlNWFjOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBA
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
ZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQog
ewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
cHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFwcGVuZChXVEZN
b3ZlKGRhdGEpKTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworfQorCiAjaWYgVVNFKEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7CkBAIC03Mywy
NiArNzgsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFw
cGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVk
QnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxl
TW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1h
eVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9v
bCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0g
ICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0K
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRz
RGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6
ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywz
MCArOTIsMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29tYmluZWRE
YXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29u
c3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdo
dCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBm
aXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxs
aW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIy
MTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0j
ZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwot
CisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2Fz
dDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlz
KSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09
IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdt
ZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21i
aW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVh
cigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7
Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50
KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBtX3Nl
Z21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50OF90
PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE4MSw2ICsxNTYsMjEgQEAgU3Ry
aW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0VtcHR5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6
OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91czsKK30KKwog
UmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
Y29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpAQCAtMjAyLDEw
ICsxOTIsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVT
ZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNl
cnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAg
ICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNv
cHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwg
ZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQu
c2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CkBAIC0yMTMsMjMgKzIwMywyOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29t
YmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAg
ICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAg
ICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21f
c2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0p
OwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7
CiAgICAgbV9zaXplID0gMDsKQEAgLTI0MywxNyArMjM4LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsK
ICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMu
c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAg
ICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3Np
dGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdt
ZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2Vn
bWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNs
b25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6
OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7
CkBAIC0zNTUsOCArMzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFy
ZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigp
OwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBt
X3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTM3Miw3
ICszNjEsNTcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29u
c3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9
CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERh
dGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAg
ICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNC
dWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgp
OworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQorewor
ICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmls
ZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmICht
YXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJv
b2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1h
cHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwor
ICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAg
ICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2Nv
bnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAg
IGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWlu
dDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdU
Rjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsNyArNDMw
LDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0K
IAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRh
KCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25z
dAogewogICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtNDAyLDcgKzQ0MSw3IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYK
IAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25z
dAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNv
ZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQpAQCAtNDU2LDcgKzQ5NSw3IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0
byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUs
NyArNTE0LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAK
LVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0
aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3Nl
Z21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBv
c2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21l
bnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ5OSwxNiArNTM4LDIxIEBA
IGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgewor
ICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7
CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0g
ICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAg
ICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUg
Y2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpA
QCAtNTM0LDcgKzU3OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJl
ZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi5jOTU0OTY4YjkxYWFmYmYwNjcwNGRmOGVkMmZh
OTAwMmQ2MDU0ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTYyLDE0NiArNjIsMTMzIEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkg
YSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVy
ZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRh
LCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsg
fQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5
VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCog
ZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsK
KyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVT
RShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0
OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBw
ZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2Vu
ZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNl
bmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAg
Ly8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3Bp
ZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVy
YXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8v
IEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNl
IHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWls
YXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0
YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVk
KS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMg
YW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRv
IHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZl
cnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9
Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
KTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBG
dW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3Qo
KT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0Owot
ICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
LSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3Zp
ZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQg
c2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVy
IG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRl
IGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5k
aWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7
CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYg
VVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRh
dGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQo
R1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9
Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAg
ICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1
bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VO
REFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYg
ZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5k
aWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAg
IGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBib29sIGNvbnRh
aW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFT
ZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+
LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4m
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0g
ICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0
ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAg
ICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVk
QnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0gICAgICAgIERhdGFT
ZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQ
cm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShwcm92aWRlcikpIHsgfQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rv
cjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAgICAgc3RkOjp2YXJp
YW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOwor
I2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFS
ZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVz
PiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdC
eXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRy
PEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+
IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAg
ICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0
YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hl
biBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rv
cjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAg
ICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25z
dDsKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRC
dWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJn
aW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
Q29udGlndW91cygpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZl
cj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBw
cmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2Vn
bWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkg
ewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMTk3LDE3NiBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRW
ZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJl
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21l
bnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMu
ZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQg
dGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRp
b24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1v
cnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
ZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRl
OgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihW
ZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQg
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1f
c2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lm
IFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lm
IFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1
ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYpOworI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKKworcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZP
VU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2Vu
ZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJl
Zik7CiAjZW5kaWYKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCiAgICAgLy8gQ29tYmluZXMgYWxsIHRo
ZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNs
ZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7
Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBj
b25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90
IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVf
dCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRz
OwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMg
YSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50
IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFz
aXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4u
KEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0
YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcigp
IGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywg
WWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9F
WFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYK
KyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRl
R0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2Vn
bWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdh
bnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRC
dWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAg
ICAgIGlmICghYnVmZmVyIHx8IChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29u
dGlndW91cygpKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOwor
ICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJl
ZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJl
IGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXIt
Pmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSB7CisgICAgICAgICAgICBt
X2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYu
Li4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5z
dXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAh
bV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQg
cmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJl
dHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAt
MjY4LDIxICszNzYsMjEgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4
dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcg
ewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7
CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFy
UHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERh
dGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5T
ZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNh
YjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1
NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcg
QEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wg
c2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
aW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1
cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsg
JiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNB
cnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFn
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0
d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUs
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlp
bmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNl
YzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2Uz
NGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVy
Q0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygp
CiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0
QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVl
OGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIy
ZmNiOTEuLmI5Yjg4MjBhNjkwYzljNjY0NTFhMWY1MjVmNDE4MzljODYyYzFiMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDE3ICs0
MSwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVz
aW5nIEZvdW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVu
dGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9y
IG5vbi1Gb3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFS
ZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFS
ZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAoaGFzT25lU2VnbWVudCgpKSB7
CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJl
Zj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAgICAgICAgICAg
ICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVhY2hTZWdtZW50KFsmXShh
dXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNmRGF0YS5nZXQoKSwg
c2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsKLSAgICByZXR1cm4gY2ZE
YXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBkYXRhKCksIHNp
emUoKSkpOwogfQogI2VuZGlmCiAKQEAgLTcyLDcgKzY4LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50
b09uZVNlZ21lbnQpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5k
KHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9
IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQw
OThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0Zv
ckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZl
cikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhT
aGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tO
U0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VS
ZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNl
bnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2
LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1
cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25z
dCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUp
CiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi45
ODA1NDdiOGNjNGM0YTg4Y2ExNTVjYmIxNzgyMGFmODVlMmRjOTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEg
KzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFj
ZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
KWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVn
ZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJD
b3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRp
b24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29y
ZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6
OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAg
ICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9j
CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNl
Z21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXpl
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0
YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6
KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAg
ICAgICByZXR1cm4gbmlsOwpAQCAtOTUsMjcgKzk1LDI2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChOU0RhdGEgKmRhdGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJl
dHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBi
cmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmlu
ZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBB
U1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1f
c2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQog
ewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09m
RmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNv
dXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjUs
NyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2Vn
bWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0
aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5
YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3Yjli
Zjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50
cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07Cisg
ICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6
cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFk
ZGVlN2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0
CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7
CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91
c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0g
Y29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0g
aW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBw
c3NoU2l6ZSA9IDA7CkBAIC0xOTYsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJ
ZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAg
ICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAg
ICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEu
ZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAK
ICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJ
ZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RG
TW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNP
TlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpz
b25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQo
anNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50
YWtlKCk7CiB9CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2Vi
TUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQg
V2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNp
emUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0
dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9i
amVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpT
T046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcg
dGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9m
IGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNv
ZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgot
ICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJp
bmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBX
VEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9K
U09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwg
anNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVu
ZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRz
LnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNp
bmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlh
ZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVy
aWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5p
c2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rl
ci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZm
ZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5
NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVk
MmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lk
IGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBk
MjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3
YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtl
eWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNv
ZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6
ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5s
YXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlh
bnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQ
dHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0
KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0
YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChj
b25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5
ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5
YjEzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVm
ZmVyR2xpYi5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0
ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwg
c2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1
ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
dGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRh
dGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+
KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlm
IChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyAr
NjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCks
IHNpemUpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVu
dHMuZ2V0KCksIHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRk
MGI4ZGZiOTY5MDc4Nzk1ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0
NTgyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5
LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9y
VmVydGljYWxEYXRhKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRT
aXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUq
IGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1
dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250
RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2
ZjQuLmY5YmFjYTVhMjY0MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxs
YmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENh
Y2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAg
ICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFj
ayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGb250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgy
OWRlMTk5YjE0ZTg0YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaApAQCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25j
ZSBjcmVhdGVkLCBubyBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZh
YmxlIHdheSkuCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gZm9udEZhY2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Zm9udEZhY2VEYXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFU
Rk9STShXSU4pCiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTll
YTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0
MDkyOWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcg
bWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5
cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAg
OiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlw
ZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQw
NGUxLi45MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8
TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYs
IFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAg
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDks
OSArNDksOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJl
ZlB0cjxNb2RlbD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBN
b2RlbChSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVs
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAs
NyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YSht
X2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91
cmw7CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2Rl
bDo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwg
V1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVs
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4u
YTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcs
NyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRm
NDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVh
ZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2
YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkco
b2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
LSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCBy
ZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3Qm
IHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3Rh
dGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9m
ZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8
IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2
KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0
IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9v
bCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMy
X3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAK
LWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhf
dD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNm
bnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1Nm
bnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJu
IHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpA
QCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRl
ZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQp
KQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRl
ZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4u
NzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSAr
MzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1
ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBp
c1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRo
ZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8g
c2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4g
T3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBz
Zm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1
aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBi
dWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRp
dmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJu
cyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBm
YWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFm
NzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBz
dGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBb
IDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihi
dWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAg
ICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVk
NjI1YTBkZjJmZjQwNzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBi
ZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRp
YyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZm
ZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4K
LSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFs
dWU6OnBhcnNlSlNPTihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwog
CiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNp
bmZOYW1lKCkpCi0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmll
ciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAg
ICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5p
dERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lO
SVREQVRBKQogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5Ojpj
ZW5jTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBz
c2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRh
ID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChO
U1N0cmluZyopcHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQg
ZXJyb3I6bmlsXTsKICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJy
YXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1
cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJl
ZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjph
cHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAg
ICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1
Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9h
ZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0g
ICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9u
c2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25z
ZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJV
R19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vz
c2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVl
c3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAg
ICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3ND
b250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNv
bnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNw
b25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAg
fQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2Fs
bGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1
Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vu
c2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFu
Z2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFM
OjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAq
UGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5
OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0
dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lv
bkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGly
ZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3Rv
cmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0
aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1
ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEw
OTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3Qo
KS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVz
dERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50
SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRh
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihl
cnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVz
dERhdGEpXSB7CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQog
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2Vy
dGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
CiAgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdh
dG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRv
cj4gewpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAg
ICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAg
YXV0byYga2V5SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxv
YWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJr
ZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkp
KTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9T
dHJpbmcoa2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwog
ICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3Ry
aW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAg
ICAgICByZXF1ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0K
QEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZv
ciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAg
ICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7
CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURz
LmZpcnN0KCkpOwotICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVz
dCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIu
Z2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpu
aWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3Jd
IChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdU
Rk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250
ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2Vy
dGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVl
c3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNv
bnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVz
dCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIu
Z2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpu
aWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
ewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERh
dGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEy
NzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1
NTY4ZmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCkBAIC0zMDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVy
QVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1f
bG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vz
c2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9d
OworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3Vy
Y2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2ds
b2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21f
YXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxl
dGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsK
QEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0
YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFs
bERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1f
aXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVh
MjA4ODNiY2E5MTMyZTIyZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2
NjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBu
c0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0g
c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAo
bV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51
aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0
aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4Mzhl
NDkzN2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZv
aWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVl
c3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcy
YTZmMjQ3ZjAuLmI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
QEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291
cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAg
ICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5T
aGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVy
LmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsy
MjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
bV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShy
ZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewog
ICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJl
cXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQog
CiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fV0gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjps
b2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBk
YXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNl
TG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVz
dF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApp
bmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEy
ZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRf
RmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsK
IGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYu
LjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
QEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5
Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9S
TShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5m
bywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNo
YXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5m
byk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nh
c3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXpl
ID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJ
bWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChk
YXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJj
ZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxs
cHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0
aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZv
aWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1
NzAsMTYgQEAgdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0
aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBT
aGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFi
aWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVu
c3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFy
ZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdl
dCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENH
SW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNl
CiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIGRhdGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1
c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0
ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlk
ZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQg
aXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0
aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxs
YmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVz
QXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURp
cmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92
aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92
aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9u
YXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcx
M2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2Nl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+
IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRh
dGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZE
YXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAg
ICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRh
dGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5k
ZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRk
ZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2Nv
YS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNF
cXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZF
cXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQx
NWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1
ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBA
IC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdt
ZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1
ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNv
bik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQq
PihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2
OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0
OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAg
LTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6
Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVh
bGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0g
YWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRp
b25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApp
bmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGEx
MWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0
aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAg
aWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2
MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2
OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBh
dGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5
cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIg
Y2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVU
eXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBA
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3Rl
ZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikg
JiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5
MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNy
ZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0
aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsK
IH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2
NjFiMWNiODcxYmUuLmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihn
dWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRP
d25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4
MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkg
QEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6
OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9
IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdT
dHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3Ry
ZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1
ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAg
bV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3
OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVl
NmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0
YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9u
RGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENv
bnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9h
ZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5p
dERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRh
cyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwog
ICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVk
KGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3
YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250
ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFy
c2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25z
dCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3
IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdj
aGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQ
c3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFz
ZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUo
KSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSAr
NzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vy
cm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1h
cmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFz
c3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRh
OjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXls
b2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQo
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVu
cGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYx
Li42NmUyOTc5ZTNlY2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RF
QlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlw
dF9kZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsK
IHB1YmxpYzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkpIHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5
cGUgc2FmZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZl
ciogaW5pdERhdGEpCkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NU
X0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVi
dWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJv
dGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0
Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAg
ICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZElu
aXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBw
ZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERh
dGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2Fk
KQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4
dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAo
cGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RD
ZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAg
bV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcy
LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBz
byBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3Rl
bUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwor
ICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAot
ICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4g
bV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBj
b25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJU
eXBlKCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNh
OTlkNDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBs
YXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgp
LCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNj
cmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
bikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZl
ckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0
NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3Vt
ZW50SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhh
NzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3Vt
ZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2
b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3Vt
ZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRh
dGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhb
YWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudElt
YWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmNwcAppbmRleCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3
OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9u
SW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3ND
b3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29y
cmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNv
cnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdl
dEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBH
bHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2
X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3Qg
TWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhL
ZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zm
c2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlw
aEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAx
CiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5
UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFy
dD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRz
W2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlv
biA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVt
ZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJp
YW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFy
aWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRz
KSBjb25zdAorICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyAr
MTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRH
bHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJs
eVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zm
c2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSog
Z2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zm
c2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRo
Q292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBU
aGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBh
bmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0g
ICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNv
bnN0CisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rp
b24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9v
bCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50
MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQp
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9u
c09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhD
b25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZz
ZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcg
KzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZv
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaElu
Zm8qIG1hdGhHbHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNl
dDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRh
YmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
Y29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRh
YjE4MDM1Y2YuLjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1h
dGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcg
KzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBG
b250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1
ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRl
eCBjODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBj
ODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3
ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsK
ICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNo
NCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gy
KSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNv
bnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVy
LT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3
ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVU
YWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBw
cm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVu
ZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0
aW9uKQogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMg
aW5jbHVkZWQgYXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Rh
dGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCB2b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0
IFQqIHZhbGlkYXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHJldHVybiBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNv
bnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZf
dCBvZmZzZXQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlk
YXRlT2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qg
b2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZl
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAg
fQpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFi
bGUgewogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdl
IDogVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBH
bHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRD
b3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
Q292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJ
bmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9y
bWF0KSB7CiAgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNm
Y2JmOTJkMWEuLjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhl
YWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9u
dCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3
cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3
aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJv
cnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBT
dHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9v
bCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQog
ewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNv
bnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIq
Pihmb250RGF0YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChj
b25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0
b3I8dWluCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQg
ZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcm
IGZvbnROYW1lKQorUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVG
b250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcm
IGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAg
ICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1
YjdlNzQ4NTJjMTllMzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNl
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZl
Y3Rvcjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRy
PEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxG
b250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4
YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4
YmZkMjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTEx
Niw3ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBj
b3ZlcmFnZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3Zl
cmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdl
VGFibGUqIGNvdmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFn
ZU9mZnNldCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBT
dWJzdGl0dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRh
YmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sx
XTsKICAgICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQg
Y29tZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5h
bWljYWxseS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlw
aD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRT
dWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dFN1YlRhYmxlID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAg
c3RydWN0IExvb2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9v
a3VwQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAg
Y29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZf
dCBpbmRleCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGlu
ZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRd
KSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYg
bG9va3VwTGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29u
c3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRp
b25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFw
LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRF
bmQoYnVmZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAg
c3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNl
dCBmZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJl
VGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1
cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZl
YXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5k
RmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZl
YXR1cmVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZm
ZWF0dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyAr
MjU1LDcgQEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
OlVJbnQxNiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhb
MV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0
dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6
VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZm
ZWF0dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFi
bGUgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7
CiAgICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVm
YXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXND
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2Nv
dW50XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2Ug
ewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNb
MV07CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSog
c2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAt
MzEwLDcgKzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUq
IGRlZmF1bHRTY3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAg
aWYgKCFjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0z
MjEsNyArMzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3Jp
cHRPZmZzZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdT
eXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBk
ZWZhdWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYs
MTEgKzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3Vw
TGlzdE9mZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExp
c3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCog
ZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQot
ICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9v
a3VwTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0
IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIs
IGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3Qo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
Y29uc3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAg
aWYgKCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJs
ZUJhc2UgewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsK
ICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBm
ZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBG
ZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBj
b25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1
LDcgKzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gZmVhdHVyZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRp
b25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVy
ZVRhYmxlID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAg
ICAgIGlmICghdmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0
IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZh
bmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25z
dCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3Bl
blR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5
cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9p
ZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBp
cyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUq
IHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZm
ZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBA
IHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3Bl
blR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBl
OjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2
NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4
N2E3ODNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9u
dE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcg
Zm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNl
ID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRl
Zi4uZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250
KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3Jp
cHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBz
dHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFy
aWFudFNldHRpbmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8
aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAg
Rm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3
NGVjMzA0NDkzMTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnRO
YW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZv
bnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9X
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIw
NjRlOTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURh
dGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250
UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3Ro
ZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5j
cHAKaW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4
NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURh
dGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVz
dG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAg
SEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09S
RCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMs
IHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9i
amVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rp
b25EYXRhLmgKaW5kZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4u
N2UzYjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBt
X2NhblNtYXJ0UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRS
ZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQg
c2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEg
PSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25z
dCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3Rv
bURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJD
dXN0b21EYXRhKCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8
SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYy
MmQ4NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4
OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6
OkVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkg
ewotICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21l
bnRzIGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAg
bV9kYXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAg
ICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRp
Z3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5j
b2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAg
ICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAg
dHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uYTQy
ZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJr
ZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRh
WzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1By
b2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCog
aW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9w
dHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5u
ZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2Vy
LT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNp
emUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6
ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7
CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYK
IApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wg
b25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lk
IEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQy
NDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcx
MmI3MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9u
OyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4
IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0
NzUxZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMp
CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJk
VHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0
ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50
KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xp
ZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5j
bGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5
cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAg
ICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRl
ZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6
W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpj
b250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGVycm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6
W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpj
b250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmdd
OwogICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0
b21EYXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9t
RGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwog
CiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIu
Z2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJv
YXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwog
ICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAg
ICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlw
ZTsKICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAg
ICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAg
ICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihO
U1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNp
emVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1l
OnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0
b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdy
aXRlKGNvbnN0IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VO
VEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRD
dXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3Jp
Z2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9y
ZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlw
ZSk7CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJS
ZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQ
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1l
T3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAg
ICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJl
ZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBw
bGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkg
d2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9m
IGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBw
YXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUg
Y3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hl
biBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZToo
TlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CiB7CiAgICAgaWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXgg
Pj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC03NTcsNyArNzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFb
cGFzdGVib2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0p
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJ
dGVtIG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpy
ZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRl
eCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi40N2U1YmY1ZTUxNzU3
YzlhODhkNWMzMmYyNmMxNmU3ODIyM2JiODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5k
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0
ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9u
c2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9w
bGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJk
MTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1
MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikK
IAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0
b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJp
bmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8
cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1l
LCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUlu
ZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRl
bUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2Miw3ICsz
NjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwg
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAo
YXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0
ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRl
eHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNV
UkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5
ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFj
NmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
V3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVu
dC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29u
dGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVu
bGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0t
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxl
c3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5z
ZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJk
SXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0
cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQog
CiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRi
OGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1
Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1h
a2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2Fy
ZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29w
eV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygp
IGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAg
ICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRh
ICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEu
b3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRh
Lm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
dHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0
YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0
YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAg
YXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3
ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVi
b2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0
b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNl
cmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERh
dGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9h
cmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFtt
X3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0g
W21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAg
aWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VD
b3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBl
Rm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3Rl
Ym9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAg
LTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRh
ICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEg
PSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01
MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQ
YXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0Rh
dGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgp
IGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTcz
YWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVm
NTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0
YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFh
YTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEz
Nyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRo
aXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBp
dCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2Nr
aW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0
ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0g
ICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1v
dmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsK
IH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBhMzdhMGQ4NzRmNzJi
ZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3Mzk4OTA5Y2M4YmVhNGQw
YTNiOTU3OWE3ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aElu
Qnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFi
MDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0
NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxv
YlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5j
b2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25z
dCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFy
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3Ry
ZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9h
bHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJi
ODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5
OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
UmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsK
IAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFu
ZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVu
Y29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5j
cHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYS4uODhkZWRm
YTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShD
RkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0
YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBv
cmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZm
ZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9y
aWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNm
MmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAg
ICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5h
bFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2Up
CiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0
YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBz
dHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0
Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNl
U3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBT
ZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VT
dGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxS
ZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRh
c2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxS
ZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJv
b2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+
IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJl
cXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRM
ZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVz
dCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vz
bid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50
aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhl
IGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdl
dCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAg
aWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVz
VG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFr
UHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAg
ICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIs
IGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3Ig
PSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAg
IGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4Owog
ICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZm
ZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5z
aXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRM
ZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgp
OworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVy
ZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7
CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNl
VG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4u
ZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9y
ZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25n
U2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAg
ICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ry
b25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAg
ICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJM
U2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwog
ICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVS
TFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3
OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93
biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0Nv
bnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAg
ICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nl
c3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAg
fQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nl
c3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFy
dCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAg
ICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAg
dG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0
YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVy
LmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3Zl
KDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSds
bCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUo
MCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFk
Mzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5
MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxl
LCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAog
dm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3
MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9p
ZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJl
cXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJl
Y2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAg
IGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2Vp
dmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29u
dGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRN
ZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMyYzM4
MWQzZDE5NjEzZTYwLi4zY2EyMDgyMmMwMzE4YTU0OTExMTg2NzVkMjdiODc4ZGQxODNmZTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9T
SVguY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAo
dG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2
MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2
LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQo
U2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAo
ZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlN
ZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4
LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYg
dXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEg
dG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wg
dGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0g
ICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChk
YXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUo
dGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsK
ICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5k
ZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYw
M2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5k
bGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3
ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAg
IGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5
dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVz
dWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSBy
ZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5h
c2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNk
MTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEz
LDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VD
b250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRh
KCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3Bv
bnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5
ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAK
ICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJf
cykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1v
Y2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQp
OwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0
cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBp
ZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7
CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2
NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1
ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZm
ZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmlu
ZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNj
cmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFp
bnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVy
ICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21l
bnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9i
dWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+
c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0Zjgu
bGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIz
OWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRl
YTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmco
KSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZm
ZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8g
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5z
aXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0Vt
cHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFw
cGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0
aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZl
cjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3
NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjg1ZTc2MzgzZGFiMzUzYTRm
YzRiMDlkMTI3NzE4NWEwMGU5ZTIzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJM
JiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAg
ICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2Uo
bG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUpCiAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwog
fQogCitib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051
bGwoKTsKK30KKwogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewot
ICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygp
KTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRh
OworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRh
ID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91
c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7Cisg
ICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAg
ICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcs
OSArMTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJy
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcu
LjFiM2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9v
bCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9
CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQq
IG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2Iw
ZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4
MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwg
RXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2Ut
PmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90Jikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0
M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRT
dG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
cwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBw
aW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRv
cnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3Vs
ZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBw
aW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
OjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9p
ZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmlu
ZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIw
ZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNh
Y2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
KG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NF
dmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRw
UmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJs
b2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6
IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBz
ZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0g
c3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3RE
YXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAg
ICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgp
OwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29u
dGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9u
c2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0Lgog
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3Zl
KGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZm
ZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVm
ZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwot
ICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9
ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0
ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVz
cG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7
CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7
CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEw
NjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNv
ZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBi
aW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAg
ICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFl
NWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJj
ODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2Vy
R2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8
dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAg
LTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3Bv
bnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0
MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1Yjkx
MzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRl
ckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
ICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJj
ZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0
QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEy
MWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29u
c3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAg
ICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIw
MjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0
MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1l
Q29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0
YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwor
ICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVy
LCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3Mi4uNjM5
OWFmZDE2ZWQ4MzMxYWIyMzg4OGJiYTY5NmE3MGQ4NzI4ZmUwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
OTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0g
ICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVw
cmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRl
KG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1Jl
cGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBt
X2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMo
Y29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JD
cmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0z
MDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3Jr
TG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1f
cGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAK
ICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAg
LTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYg
KG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAg
ICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlN
RVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJT
dHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3Ig
bXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBo
YW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCAr
ODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsK
KyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1p
dCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRl
IHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVk
IGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVm
ZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0g
ICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERh
dGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1
ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0
YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwg
LTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7
CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2
LDE1ICsxMjU4LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQo
IW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwog
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICpt
X2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVm
ZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAK
LSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CiB9CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5
U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVz
dCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVF
bnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEs
MTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkK
ICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXND
YWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAg
ICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNl
KSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1h
cHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2Uo
KSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNo
YXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJm
YmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0y
MjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7
IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERh
dGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0
MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdU
aW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVu
aXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRp
bmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3Bw
CmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5
MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3
IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2sp
Ci0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYz
YjE5ZGM1MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThh
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3Bv
bnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1
MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUo
YnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIx
NDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29k
ZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAg
RGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29u
c3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6
IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90
JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBD
YWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJl
Y29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJl
Y29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1
cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFh
YTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNk
N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNv
cmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRl
cihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5
OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwg
bV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZl
ciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5k
YXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwg
bV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRj
ODE5My4uZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2Vp
dmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAg
ICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3Vj
Y2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAg
Ly8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAg
ICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAy
NDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAg
ICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVu
dHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkg
eyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNh
bid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNo
ZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAg
IG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9y
ZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRD
b21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIy
YWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUx
ZDdhMDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03
NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1
YTMuLmY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAg
ICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25z
ZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRl
cyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdC
eXRlcygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVh
bSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMu
Z2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMw
YzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4yOWY3MWQ3ZTZkYzc1MGVmMTlmMzI4
NjJjODliNzE4NWUwM2JmODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJl
ZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1
cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2
ZTNkZjE4MzJlOWYuLmU5Y2Q4NzJmOGQ0NGYxNWUwZWUzN2M3MzQ5MmIyZDgwMmFjOTA3MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTM5
LDE4ICszOSwxOSBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFy
ZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDog
bV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIp
OwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4g
bV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUo
KSA6IDA7IH0KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYp
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIz
YTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgp
KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAg
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRo
aXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2Nh
ZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1
cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5
c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2Vi
QXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJl
c291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQu
LjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAg
c3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhcios
IGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6
ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVz
b3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBj
ZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJB
cmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1
ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1E
YXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYg
KCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBz
ZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAg
ICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXpl
KCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVl
KCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0
ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNh
MzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRm
ZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UK
ICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVz
Iiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQo
KSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBm
YmI2Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1
LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAg
W3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAg
ICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAg
IH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
Ojp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
IGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJl
YWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVlZTBhZDYyY2IzNDg0YzFj
MzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRl
NDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMs
NyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgog
ICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYm
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxT
aGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBl
MjFiZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
QEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
IWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQog
ICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmRE
YXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5
cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewog
ICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwg
dHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRh
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVj
b2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0
YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXIm
IGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXpl
KCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBk
YXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIp
OwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3Vu
dGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6
OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0o
Y29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5j
b2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAg
LTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
aWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVi
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYs
NyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7
eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4g
eyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICsz
MDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0
KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOwor
fQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApA
QCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0
dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7
CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFj
MDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3
YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3Mg
Q29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsK
IGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEs
NiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUo
RGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVh
NzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkz
OTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBB
cmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0
YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJv
b2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
V2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1
YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1
YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBs
YXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEo
RGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBu
dWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRh
OwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFj
ZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQy
YjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNj
MjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0
ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRh
MDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4
LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmlu
ZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFz
RW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9z
aW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6
V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzNmE2ZjRmYjA3ZjBhYjlkZGM3YTQ2
MThmZWQ0MjJlYzM4OTc0MDM1Li4yZjQ0OGE3NjM5MjdlMDJlY2MxNTk3NTYwMmM5MDFiNzE5YTFh
NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQg
Z2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVu
Y3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lk
IGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlv
bjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQg
Z2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAg
ZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpp
bmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMy
ODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3
ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAh
bV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAg
IGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3
MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVT
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRh
Y2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAg
ICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1NGNm
YWRmN2ZlZTNiZjFiN2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBiNTIx
YjdkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNv
bnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50
ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8g
d2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhp
Z2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRl
eHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBI
aWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxd
KTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
VmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6
KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0Ondr
SGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBw
OmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJl
cXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNi
MDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUz
MTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVj
ZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcK
ICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0
a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAg
ICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1
c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0
PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4
NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4
Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+
bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcy
Nzc0ZTI2OTY1YjJkYmIyYTczNWUuLmJlMTQzNzBkZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRh
NWY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0Vy
ciAhPSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9u
cykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdp
c3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
cmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBh
dXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdp
c3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0
aW9uRGF0YSB9KSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7
CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3Vt
ZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkg
fSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3
ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5
NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5
cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAg
ICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNl
dEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxl
VVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1
dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
bnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2Fy
ZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUw
MSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJk
KE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9t
aXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRn
ZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAg
LTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRG
aWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAg
ICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBl
clJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQo
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAg
ICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JU
eXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAg
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAg
IG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmRO
YW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2
NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRS
ZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24o
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktp
dDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA1YTgzMmU1NWFjYmExODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li45ZmYyM2E4
NjZmZjBkODYyNzUxODViZjYyOWYxYTQ3NmNmNGZlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4p
OwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7
CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1
NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5
YTBjYTk3NjcwMzU0ZmVhZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJM
U2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAK
ICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2Zy
YW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUlu
Zm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmND
b21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpA
QCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNl
bnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRh
KQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDkgQEAgYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikg
LT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAo
aXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmICht
X3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5
bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNp
emUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEtPnRha2Uo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBs
ZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAg
ICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFu
ZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdl
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZh
ODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2Vl
YzRhOGVmZGFhYjdhNWExYmU2YWRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUlu
Zm87CkBAIC00NCw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUs
NyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5
bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRh
OworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRh
OwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJh
Y2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2Yzhl
MmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3
ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9y
bWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5m
b3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0
Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZl
SW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBp
bWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQ
aG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCAxYTgxY2NlNDQ1NWViMWE3MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMz
MGQzMDNmYmQ5ODQ5Yjg0YjZlN2FhZmEzNGNmN2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4
MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClh
Y3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9t
UGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2Vz
XTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEp
IHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigp
ID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwog
ICAgICAgICB9CkBAIC02NTk5LDcgKzY1OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJk
SXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAg
ICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikK
ICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClh
Y3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBz
aGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNo
YXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwg
IkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0
aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5h
bWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlv
bihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJl
Y3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXdd
IH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYw
NmU4OTliY2I2NGVkYmM2Yy4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVl
MDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFm
NzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5Ojpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4
ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDlj
MWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBh
Z2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2Vi
UGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVS
YW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjgu
LmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0
aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRp
bmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQo
KSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIg
d2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShy
YW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClf
c2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRl
PillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xs
ZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihX
ZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNT
dHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRU
eXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5k
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFl
YWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVs
bHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAg
ICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAg
Zm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkg
ewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5i
eXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMx
NTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1l
KSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3Ry
aW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVi
b2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
KSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQg
ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3
b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4
ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkz
YmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwg
Y29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0
aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7
CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYg
KHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBk
YXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hh
ciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hh
cmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZm
ZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1
b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIu
cHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEko
JnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBl
LmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJs
ZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFj
L0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRl
eCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1
MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJj
ZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1v
ZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1f
ZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0
ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAuLjhiNTgyMTE0YjkzNWIyNzI0
ZTllYWQzM2Q2Y2E0MmNmZGYxMmNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
MjgxLDcgKzI4MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNl
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAg
ICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNo
YXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJs
ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNi
OGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29y
ayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUg
cmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJ
bnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5k
ZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3Ro
XSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBl
bmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIz
MWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODks
NiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1
Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQ
YWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVy
cykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFu
dWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAg
ICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBA
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1Jl
Y2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAg
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0g
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzky
Nyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxT
dHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZp
bmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAg
aWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQor
ICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdp
blZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVS
ZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRh
dGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJl
YW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFt
RGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIu
Z2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdt
ZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0
ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWVi
MmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBA
IC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1f
bWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9t
YW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQg
dG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFp
bnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1Nu
YXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4
ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIx
MzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRh
ID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRl
cj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRC
dWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1f
cmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVz
cG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZp
bmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgewor
ICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlk
RmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3Jt
RGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5k
ZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEz
OTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2Fk
ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Qmxv
YkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpG
b3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURh
dGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxz
ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2
ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4
NWU0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAg
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVj
MjhmZTUyMmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBm
aW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUw
NzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFk
MjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsx
MTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwg
bWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAg
ICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/
IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1h
aW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAg
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGlu
Z0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3Rl
ZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY0MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNm
NzMwZTYyYTEuLjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4
dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJl
cGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBW
ZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVy
cmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFz
dGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlk
ZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNz
IGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIGlwY0hhbmRsZTsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3
ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUs
IHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxl
KSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4
MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2ZmMzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdl
MzVhY2ZmNGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZp
bGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVh
ZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
d3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpT
ZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2Ix
NjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi43NmM2MDI4ODgxMzUyMjA3MWEy
Mjc2OWQ3M2YyZDNlODA4YmFjM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2Vi
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAg
ICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBt
X3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkgfQorICAgICwgbV9idWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkgfQogewogfQogCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQ
YWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZl
ci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRG
YWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsK
IH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4
NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uYWUwNTBhOTkyM2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5
NmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDgg
KzI5LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNv
bnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2
OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdl
YkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+
cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBp
bWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2
b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVI
YW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAg
ICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2Ug
TlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7
CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6
Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hh
cmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4
ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFl
ZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2Rl
KG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAg
ICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBT
dHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgy
ZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEy
ZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChw
YXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRU
eXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJh
NzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3
MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0o
bW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMp
Ci0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0
MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYw
N2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAq
KWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0g
cmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0
YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0
YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJp
bmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3
NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5
MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9N
UGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFz
dGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmlu
ZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3
YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQx
Myw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1l
bnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGlt
cGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQx
OTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1l
c0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxT
dHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2
ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5
ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAt
MTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZm
ZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODlj
MDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVk
NmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICop
ZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEg
PSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBp
ZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1h
aW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJu
IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNl
bnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjcz
M2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2Vi
QXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBf
aXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVm
ZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRM
b2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZl
RGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNo
aXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVs
ZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5
MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1
NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0o
Y29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0g
aGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFk
ZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCld
OworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10g
aW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAg
IGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQw
MWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4
MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2Rlcjoo
TlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0
YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5n
ICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsK
ICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNv
dXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAg
bWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0g
cmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+
ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNV
UkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JL
ZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5n
ZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmpl
Y3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2Jq
ZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2Rl
ciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGlu
Z05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlm
ICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1
cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxl
YXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAq
KVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAg
ICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVk
QnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2Rl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEo
KSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1
cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRh
ID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0
YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0
YzZmMDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1l
bW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
TWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFz
c0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgp
CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09N
UHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhk
ZjYxMjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFj
MTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICsz
NSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVi
bGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0
cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBw
cHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAg
ICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4u
YzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFy
Y2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICgh
Y2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdl
ZWZjMS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6Ondp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUK
IHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFl
NjllZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVk
aXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwog
CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsg
fQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYy
YTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVh
NWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0x
NzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29w
dF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4g
RV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2Uo
bV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0
dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQg
V2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1l
bnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApp
bmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJh
MTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAog
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBC
U1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkK
IHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAg
ICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpA
QCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8g
SVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAg
IC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8g
cmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0
IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRh
LT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5z
aXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
TmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBt
aW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2Zh
N2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0
OGY5YmZjZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJj
ZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitX
ZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVh
bSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIw
NjU0MThmMjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2Qx
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBA
QAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA3OTQ4YWYxOTg3YmZlNWE3YzJmNzQxYmJhNjBjMzllYTAyNWNkZTgxLi4zYTllZmFh
OWY3MjQyMzUxNDA3YjJhYjg3MzExODgyYWZjN2NkZjhjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjgg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVk
QnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBm
cm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAg
IHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTA1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRkIHRoZSBlbmNvZGluZy9kZWNv
ZGluZyBmb3IgRmlsdGVyIGFuZCBGaWx0ZXJFZmZlY3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNi
MWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uYzY5YjE2MTZjMGNhZGE1MzI0ZDcyZGI3MzIxMmRm
Y2VmYmE1ZGUzOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQzLDUyICs0
Myw0NSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9U
X05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVt
cHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQ
YXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVy
LT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5z
aXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNs
ZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAg
ICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAg
ICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwot
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRh
dGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSgh
bWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
KSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCArODks
MTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAg
IGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29y
bGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBz
dHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBz
dHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9
IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBl
bmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAg
ICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAg
ICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5h
dGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikp
KTsKQEAgLTExMSwxMCArMTA0LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVh
dGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEo
MHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikp
OwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdU
Rk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
OwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmlu
YXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVt
LCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxh
Y2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBs
ZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWls
ZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3Jl
IHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJU
X0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5n
dGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xv
bmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAg
RVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBi
dWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7
CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWls
ZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQor
eworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0
eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIg
PSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHku
cHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgor
ICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29u
dGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
IH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCArMjA0LDcw
IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdl
dFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAn
ZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAg
IFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywg
J2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdn
JywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcg
fTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFr
ZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAg
YXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAg
ICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRh
dGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8g
YWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZm
ZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEp
OwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAg
ICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZm
ZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRh
KCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNp
emUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImts
Iik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2Rl
ZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIp
OwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wi
KTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZm
ZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hl
Y2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8
VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJl
dHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZm
ZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0
KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90
Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBt
YWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7
J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScs
ICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9
LCB7J2EnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92
ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAn
YicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZm
ZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkp
OworCisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsg
J2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9
KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0
KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdi
JywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwg
eyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RG
TW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5n
IHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAi
MTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAg
ICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0
cmluZygpLCAiIik7CiB9CiAKQEAgLTI0OSwxNiArMjg4LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCByZWFkKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQ
RUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBs
ZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1w
bGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBF
TkFCTEUoTUhUTUwpCkBAIC0zMTMsMTUgKzM1MywxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBp
OwotCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAy
NTYpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihkYXRh
LCAyNTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hhciBjID0gaTsKLSAgICAgICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAg
ICAgfQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKQEAg
LTM1OCwxNiArNDAwLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBl
ZWtEYXRhKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2lt
cGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwog
Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
IAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFy
ZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAg
RVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNr
KGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVz
dCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQpAQCAtNDA2LDE3ICs0NDksMTkgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdt
ZW50KQogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCks
IHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIEVYUEVDVF9FUShidWlsZGVy
LnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7
CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDUpCi0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hh
cmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAg
IEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVj
ayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRl
c3QsIGNoYW5naW5nSXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0
YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdi
NmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw1MyArNDgsNTQgQEAgc3RhdGljIHZv
aWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNB
cnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJh
eSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBi
dWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0
ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3Js
ZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEs
IHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVy
LmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0
YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0
ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1w
RmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAg
fQogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21l
bnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJo
ZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
KGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAg
ICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5n
dGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGRE
YXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29y
bGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxl
bmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291
bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAg
ICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpl
eHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlv
biA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXIt
PnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5z
aXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBi
dWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0
ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVt
ZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRE
YXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZm
ZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRl
ID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAg
IEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQi
IGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQ
RUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446022</attachid>
            <date>2021-12-06 03:32:55 -0800</date>
            <delta_ts>2021-12-06 23:24:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211206223252.patch</filename>
            <type>text/plain</type>
            <size>137895</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTliOGZjOTE0ZWNhN2I3
NDg5Zjg0ZGJhZTFiMjI4ZWY3MTdiNTNjMy4uZmQ3YmMxMmYwNWUzNjQ4OGNiNTMxOGQ3NzZkOWIw
YWZjNjg5ZTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyY2E5N2YyNWI2NzNhOWQzMDRjMGFhNTcw
ZGQzZTdhMTU3ZTJkNThhLi45MjliYWQwMzk0NmY2NGUyOWY2YzE4MTMyZWQ2YjA5Mjc4ODE1NjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZiNWM0ZjJiMGZk
ZWUuLjBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlmZWVmOTg1NTAyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMmYyZTgyYzJiMTdmM2M5NGRlYmYwYTZhNDE4ZjQ0MzNlNGFh
YmQ2YS4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDE5ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
LSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJj
ZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQog
ICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitjb25zdCBTaGFy
ZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9yZXNvdXJjZURhdGEtPmlz
TnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNv
dXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0
ZWU0MmI5MTcuLmNmODIxNzRiZThlZDg2N2Q0NzgzZWNhYTEzNmI1NzgzOTJjMjgwYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpA
QCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3Mg
TGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NB
VE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNl
TG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJl
ZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQg
ewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVz
b3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVk
QnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRh
KCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsK
QEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVx
dWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSBy
ZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAg
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAg
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5
MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRm
Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0z
Nyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQor
ICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJv
dGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNm
YmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEy
OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEo
KS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+
YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OS4uYzc3MGQ3NjQx
MzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMzZDFmYzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBA
IC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFT
dGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hl
UmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRh
dGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBm
dWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODczLDEy
ICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1
dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNl
IGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRh
dGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1v
cnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRh
KCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+
c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXgg
YWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uOTkzYzJiOGU4MzBkYzNk
NzVjNWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDggQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFzIGFz
Y2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBBU0NJ
SSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmluZygp
LmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlT
dHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOworICAg
IG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiLCBj
b250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJsLnN0
cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3Ry
aW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEuYXBw
ZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0cmVh
bSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEgPSBy
ZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3Vy
Y2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1
b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQ
cmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERhdGEt
PmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAg
ICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxEYXRh
LmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAgICAg
ICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cgYXMg
aXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JMRnMu
CkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAt
IGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5h
cHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAgICAg
ICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgbWh0
bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAg
ICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAoaW5k
ZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2NpaVN0
cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0gICAg
bWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1sRGF0
YS50YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA3MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjli
NmMzMWQ0MmM1MzJmLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAg
ICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3Vu
ZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBj
aGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVu
ZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNm
ZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBj
b250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOwor
ICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVh
ZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENo
YXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7
CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVj
aWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAg
ICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgo
KSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUu
bGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBm
b3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2Rl
ciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29udGVu
dC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxy
XG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5MywxMCArMTkz
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZSgpLT5t
YWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0
byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2Rl
KGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFs
aWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTIwNSwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJs
ZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRh
YmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5z
aXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0Ogog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1
b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVu
ZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlk
IGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY2MWE5
OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYuLjkwZDFjNmEyYmE4YzRhNDJlMWZl
YmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZm
YjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZm
MzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVs
bHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA2NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2
N2U1M2ZhMmY4YzUwLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9k
eURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBh
cnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9p
ZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5
M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFs
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7
CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGY2NDMz
M2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MuLmY5YWQ3NzEzYzYwM2E2YTBhNTZi
Y2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2Fj
aGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggMGI3ZWQ5
YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2
MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19B
U1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDcyYzE5
ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUuLjdjMDFjOGNjMjMxMTc4NmM2MjRm
NDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdl
OjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsNyArNTIzLDcgQEAgYm9vbCBDYWNo
ZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAo
TW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRz
KCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZO
ZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5
LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRh
dGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERh
dGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4
NzNiMTI4MzQyZjUuLmQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEy
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAg
IHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRl
SW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsx
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNv
bnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IElt
YWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAg
ICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRl
eCA4NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjLi44NDJiZjVmMjBlMDZm
ZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNE
YXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBhbnkgdXBkYXRlQnVmZmVy
cyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRl
IGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90
aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJj
ZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBt
YXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxs
YmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5
NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1
MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVF
cnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGll
bnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWlu
OwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBt
X2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGRlNzhhY2IyMjEwYTFmZjRlZmE5NmMwNWY4NDkx
OWIyNjVkMDFjYWQuLmNmNGYwMmM1ZDc0MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAt
MzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hl
ZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7
CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcy
OTZmZmU3NTcuLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSAr
MTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVz
b3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNv
dXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGRlNTdmNDA0MDM3MjRj
NTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUuLmIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5
YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1l
bnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5h
bWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUg
bmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYz
NjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5iMDEyYmE5OGVlZGY3MzJjMDgyYzM2
M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQ
dHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKaW5kZXggZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MS4uYjg3
YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdW5zaWdu
ZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwog
fQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4u
NzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rlciog
dGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQo
KTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IGFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcx
ZjNiMjQ3MTlhMmEzMmEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKQEAgLTUxLDEzICs1MSwx
MyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2Uo
KnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFj
azo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1
MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICsz
NSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2Rl
ZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7
CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBjMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMy
NWQ4NTJkYTZiMTFmZDMwLi5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFj
ZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVm
YWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQz
ZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAy
ZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJldmll
d0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAK
IGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xv
YWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERh
dGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwog
ICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBt
X2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1
YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLmRiODA2OWNiZjlkYjc1MGViN2MxNzE4NGFiZmMxYzJiM2M1
MDkyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
ZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAg
ICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAg
IG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5lbXB0eSgpOwog
ICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVy
KFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnBy
ZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZl
cnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9y
UHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIp
OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3
ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0g
ZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMp
IH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2
aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmln
aW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRh
IHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPihTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxk
RGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNo
b3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAx
ZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYy
ODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXIm
IFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQog
CiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjIsNyAr
MjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29u
dmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkg
JiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlk
UmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQu
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0
KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVu
dChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4
Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJD
bGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTIw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3
RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3Rh
dGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCA1OWYwY2EyYzQ2YzAzMjIwOGI2Nzg4MzFjMjQ2MWNmMWNiMDJjMGRm
Li5jOTU0OTY4YjkxYWFmYmYwNjcwNGRmOGVkMmZhOTAwMmQ2MDU0ZmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE4MSwxOSArMTgxLDYgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsK
LSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0Rh
dGEgKik7Ci0jZW5kaWYKLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoQ0ZEYXRhUmVmKTsKLSNlbmRpZgotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigp
OwotCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CkBAIC0yNDksNiAr
MjM2LDIwIEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYK
KyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsK
KyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOworCiAgICAgLy8gQ29t
YmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVj
dG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKQEAg
LTI3NSwxMSArMjc2LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gRW5z
dXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciBkaXJlY3RseS4KLSAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3
aWxsIGFzc2VydC4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIGFw
cGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWlu
dDhfdCAqZGF0YSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFB
c0NoYXJQdHIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKQEAgLTMwNiw2ICszMDIsNzEgQEAgcHJpdmF0ZToKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIH07CiAKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNo
YXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAg
ICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCAoYnVmZmVyLT5oYXNP
bmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSkpIHsKKyAgICAgICAgICAgIG1fYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
QnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdl
IGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBh
bGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVh
dGVkLgorICAgICAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRp
Z3VvdXMoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVy
LmdldCgpKSk7CisgICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4g
YXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+
YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQor
CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5z
aXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0K
KyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVuc3Vy
ZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVu
c3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9Owor
CiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewog
ICAgIGlmIChoYXNPbmVSZWYoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAppbmRleCA2OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1YjNkZDU5
MjU0Li5iOWI4ODIwYTY5MGM5YzY2NDUxYTFmNTI1ZjQxODM5Yzg2MmMxYjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC02OCw3ICs2OCw2
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAK
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXpl
ICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApp
bmRleCAzODI5OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiLi4yYWRkZWU3ZWU4
YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAu
Zmlyc3Q7CkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAg
IC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAo
IWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICBy
ZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5p
dERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXRE
YXRhLT5kYXRhKCk7CkBAIC0yMjYsMTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsK
ICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0g
ICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNv
bkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAK
ICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAg
aWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7
CkBAIC0yNTEsOCArMjUxLDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJ
ZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKIAogICAgIG9iamVj
dC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBq
c29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBw
ZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJ
ZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBD
RE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2
MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1YjZi
Yzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBu
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8
QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGRmNjJi
M2Q3MzYzZWVlNjllZWUyNzIyYTRjZDA2YTJkYTQ5YTYwZTguLmI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1
NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxh
dGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFr
UHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAt
MjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZp
bmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKLSAgICBt
X3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI+IHsKQEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0
YVJlcXVlc3RdOwogICAgIGlmICghZGF0YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCA3YmIyNzQzYTgyOGExYWYwNGE3OWVkZDc5MzNmMzdj
NDUxZjMyYzUwLi42NmUyOTc5ZTNlY2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcg
QEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRp
b25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElu
aXREYXRhIHsKIHB1YmxpYzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3Ig
YmV0dGVyIHR5cGUgc2FmZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQs
IEdzdEJ1ZmZlciogaW5pdERhdGEpCkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAg
ICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2Rl
Y3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBt
YXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQg
PSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIo
KSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVk
KG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3Bh
eWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAg
ICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9w
YXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgeworICAgICAg
ICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4
dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAg
ICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkK
QEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9i
dXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5t
X3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2Fk
KCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAg
IH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVt
SWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250
YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC05MCw3ICs5Myw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFz
cyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CmluZGV4IGU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3ZDQ0NDQuLmE0MmU1YmM0
YWNjZjM3MjJhNWFmOWM5MDU0NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpw
ZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAKIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykK
IHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFy
a2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7
CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmYKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJr
ZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVy
U2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJT
aXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZl
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRp
Z3VvdXMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkz
NjkxYmZlZGNjOTJiNDIuLjQ3ZTViZjVlNTE3NTdjOWE4OGQ1YzMyZjI2YzE2ZTc4MjIzYmI4NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJl
dmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJl
dmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEg
eyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJv
dmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtb
V2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlz
XSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5
OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAg
ICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9k
YXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1f
YXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1
ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwog
ICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3
cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlm
eSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAg
ICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAog
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBA
IC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21w
bGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9Owot
ICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICBy
ZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZh
NjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2
YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDgg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRh
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
IHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAg
ICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNw
b25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAg
c3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01
NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAg
ICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0g
Y2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGlu
Z0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3Rh
dGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisK
ICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6
OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNo
ZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcg
eyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJ
ZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywg
Y29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4
cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBi
dWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8g
YmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZG
b3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdl
IGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdl
IHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAg
ICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0
byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwg
cmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0g
ZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdl
dCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
YXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0
YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIo
dGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRh
IH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFz
a1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJh
bmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5y
YW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZl
QnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0
ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBi
dWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZm
ZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYg
KCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyAr
MTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4
cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRh
OjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEu
YnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAg
ICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgp
IHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcg
dGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5v
cmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0
KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBk
YXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9y
LT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkx
ZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2My
YTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51
dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwg
dXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYs
MTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1
cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmlu
ZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9i
dWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQu
c2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYx
LDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJv
b2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBt
X2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAg
IHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1f
YnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7
CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFw
cGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0
ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
cmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRj
NjY0Ni4uMzdmMWE0ODdmOGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsK
IAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAg
ICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVy
KG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxs
cHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBT
Y3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5
KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFt
X2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBl
bmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBz
Y3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3Qg
U2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAKaW5kZXggYTRlMGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5
ZmJjNy4uODVlNzYzODNkYWIzNTNhNGZjNGIwOWQxMjc3MTg1YTAwZTllMjM5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQs
NiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1f
bG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwgbV9k
YXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUs
MTggKzc2LDIzIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVl
c3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpp
c1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JP
Y2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOworfQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYg
KCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xv
YWRpbmcpIHsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91
cygpOwotICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3Vz
RGF0YSk7Ci0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAg
IGlmIChjb250aWd1b3VzRGF0YSkgewotICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBt
X3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJv
ck9jY3VycmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQo
KSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91
c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0
YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwg
bV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAo
IW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJy
ZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjEsOSArMTI3LDYgQEAgdm9pZCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5
ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLjFiM2Q3ODcwZjEyOGJmZTUz
OGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcg
QEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0
Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMy
MWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhh
OGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzEx
OCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAs
IG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVz
cG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5n
KSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAg
ICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmly
ZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRh
dGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMg
aW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVk
Q29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlw
ZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0
ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVu
dFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0
cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25z
ZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdp
dGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygp
OwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50
ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAg
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNW
YWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAg
ICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYg
KCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3
Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAi
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcg
QEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxv
YWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJp
bmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTc3ZDY1NmU2
N2ZjY2E0NjQwNTBiZmQzNGRhZGMyYTM2MjVlMjMwMS4uNjM5OWFmZDE2ZWQ4MzMxYWIyMzg4OGJi
YTY5NmE3MGQ4NzI4ZmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0
aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVw
bHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJh
bWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVm
ZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAs
IG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJh
bWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3Bh
cmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5
OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsg
KnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAg
ICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyht
X2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAg
ICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExv
YQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNT
eW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykK
LSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VD
YWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9
IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBt
X3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25n
PigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAg
ICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAg
ICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVm
ZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmlu
Z1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAg
ICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVz
cG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxk
IHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBt
X3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25z
ZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0
cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmICht
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2Nl
ZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9k
aWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVs
bCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVh
bWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAg
ICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5
KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3Nz
T3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFz
dCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFu
ZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgp
OwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+
aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkp
OwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRh
TGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwx
MSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChp
c1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1l
dHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJv
bm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0
cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZm
ZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1v
dmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVy
KCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJl
ZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3Mp
KTsKICAgICB9CkBAIC0xMjU2LDE1ICsxMjU4LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWRE
YXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJU
KG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWRE
YXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFF
bmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVu
dHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEyODksMTIgKzEyOTEsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0
b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCku
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFT
RV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNh
Y2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3
b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RG
TW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVm
ZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwg
V1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygi
dHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7
Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9y
ZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7
ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBl
ZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAg
IGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5
ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2
ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwog
Y2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFF
bmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25v
dXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6
VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4g
bV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6
OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwog
ICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGly
ZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBh
ZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5kNDNjMDg5ZDYxODUzYzUx
OWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBt
X3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVs
dGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRp
b25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQg
Tm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5
KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93
dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChi
dWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkg
KyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzks
MTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdp
bmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCks
IFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2Fj
aGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVh
dGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlm
ICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUt
Pm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5
MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToK
IAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9v
bCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBh
YmI2OGYwZGFiODguLjU4NTQ3ZDg0ODgxZGM4MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2
ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1l
SGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92
ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAg
ICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChp
c1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0Rh
dGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAg
ICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29t
cGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBt
X2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAg
IGRhdGEgPSB7IG1fc3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0
YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9u
SGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBt
X3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXIt
PmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAy
MWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThl
ZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpA
QCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0Nv
bXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAog
ICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2Nzcu
LjU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5
LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxl
bWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1f
cGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAg
ICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1
Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3Ry
ZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93
ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNT
RVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVk
UmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAg
IG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFs
aXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6
OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAg
IG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBA
IHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9p
c0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1E
YXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
KQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAg
ICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6
OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25z
ZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0g
ICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRh
LT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+
dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkp
CiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5k
YXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJm
Y2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8g
RklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIs
NyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9t
YW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFs
U3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxT
dHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZv
aWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcu
CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2Jj
YzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2
YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVm
ZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9y
ZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJC
dWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9u
c2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VE
YXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkK
ICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAg
ICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNo
KQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0
N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1
Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRl
cj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0
YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7Cisg
ICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdi
MTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFh
MjI3NjlkNzNmMmQzZTgwOGJhYzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6Oldl
YlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAg
ICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwg
bV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2Vi
UGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZm
ZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
RmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7
CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1Mzgz
ODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmFlMDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJj
OTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4
ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBj
b25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMx
YjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJhMTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAg
dm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0lu
X29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVu
Y29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZm
ZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZz
dGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpAQCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBX
ZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVU
eXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVz
cyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZm
ZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAg
ICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAg
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxp
bnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFw
cGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUo
KSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZm
ZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2Fk
RGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJs
LCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM3ZjdmMzBlOTE1ZjI2Y2JmZDNhZmYwNWI3
ZmIxYTAyYTY1NzBlMGUuLjNhOWVmYWE5ZjcyNDIzNTE0MDdiMmFiODczMTE4ODJhZmM3Y2RmOGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjov
Lzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDFiNzM2M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZh
NDU0YTY3NjcuLmM2OWIxNjE2YzBjYWRhNTMyNGQ3MmRiNzMyMTJkZmNlZmJhNWRlMzkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00OSw3ICs0OSw3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwogICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CkBAIC03MiwyNCArNzIsMTYgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCi17Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwot
ICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZl
ci0+ZGF0YSgpKTsKLX0KLQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKV0pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwg
MSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxk
ZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQ
RUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NywxMCArODksMTAgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERh
dGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNo
YXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERh
dGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERh
dGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERh
dGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVz
dERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEy
LCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBl
Y3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VR
KHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlC
dWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMiwx
MCArMTA0LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
ckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicp
OwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9y
MCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VS
VF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQw
MDA7ICsraSkgewpAQCAtMTUyLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVu
YyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBs
ZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRh
c3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVu
KHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAg
IGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVu
dFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAq
IDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9u
ZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9u
ZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9u
ZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBB
U1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0
aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUg
PSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNp
emUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVy
Mi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBi
dWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEo
MFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8i
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5j
b3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHko
KSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUg
ZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIu
Z2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBw
ZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cisg
ICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0
eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBl
Y3RlZCkKQEAgLTE4MCwxOSArMjA4LDIxIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRT
b21lRGF0YSkKICAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9
OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwog
ICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgx
MCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwogICAg
IGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNv
bnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwg
ImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsK
QEAgLTIwMSw2ICsyMzEsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEp
CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNr
QnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKICAg
ICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1
ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CiAgICAgRVhQRUNU
X0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCks
IGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0
YSgpLCBsLnNpemUoKSwgImwiKTsKQEAgLTIwOSwxNiArMjQwLDE4IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFs
VG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+
JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAo
YXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFr
ZSgpOwogICAgIH07CiAgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYics
ICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0
KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdj
JywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFw
cGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVD
VF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAn
YScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZl
cih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYics
ICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CkBAIC0yMjgs
MTEgKzI2MSwxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0
MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZm
ZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAg
IGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwog
fQogCkBAIC0yNTMsMTYgKzI4OCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkK
ICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQs
IHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRl
eHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAx
KTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVy
LnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAy
KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAg
RVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0
KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpA
QCAtMzE3LDE1ICszNTMsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwg
aW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBj
aGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1Njsg
KytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNjIsMTYgKzQwMCwx
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxl
bihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4
dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXpl
KCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWls
ZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2Uo
KSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVu
a3NJbk11bHRpU2VnbWVudCkKQEAgLTQxMCwxNyArNDQ5LDE5IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9Owog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1w
bGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxl
VGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxl
bihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVp
bGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0
ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMz
OWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFB
cnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAg
ICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVu
Z3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5
dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEu
bGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBi
dWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0Rh
dGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsK
LSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwot
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwg
YnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxk
RGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjksMzIgKzcwLDMyIEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxs
b0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAg
IGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5
dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5h
cHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAq
ZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50
ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsK
IAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0
byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDog
KmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50
LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQr
K11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50
KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENv
dW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAg
ICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3Np
dGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAg
ICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRh
KHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3Jl
YXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7
CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAg
ICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7
CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRT
aXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21l
RGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNy
ZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJ
SVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXpl
KCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446129</attachid>
            <date>2021-12-06 23:24:43 -0800</date>
            <delta_ts>2021-12-09 04:54:15 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211207182440.patch</filename>
            <type>text/plain</type>
            <size>519776</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhMDgyNGJiN2M3ODUw
NzRhZjgxMzY1OTEwNjEwMGRiZTNmMDVhMC4uOGIyNGE4MWI3YzNjMzNjMmY0MmY0OTJhZTEyMmM0
NDNmZmY5ZGI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2MSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRCdWZm
ZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAgIGFu
ZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4gdW5k
ZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBtYWRl
CisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhhdCB3
b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQgYXJl
CisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgQXJl
YSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmdsZSBz
ZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVlbiBm
bGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hlbiB0
aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5nZQor
ICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBhIGNh
bGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5vLW9w
IGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAgICAg
IGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9mIGEg
U2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAgICAg
ICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVyc2lv
bnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRhbmN5
LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhlIFNo
YXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBhbmQg
aWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAgICBJ
biB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3BlcmF0
aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBjaGFu
Z2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5IG1l
bW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciBj
bGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUgY2hh
bmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMgaXMg
dGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1bmxp
a2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJlIG1h
ZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9ic2Vy
dmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4gTmV3
IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6
OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRB
bGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5KToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVLZXlp
ZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVG
b3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
R2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVt
ZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAg
ICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tOgor
ICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVJl
c3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1
ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0
YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9y
bWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0
dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAgICAg
ICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFuZEFy
Y2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNl
Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVm
ZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRG
b250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
VkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpk
b1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgor
ICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVy
RnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9u
aXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNs
aWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMp
OgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtlQ29u
dGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNG
OjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZG
VG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVX
aXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVy
Q29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0
YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
R2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNv
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
VUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vz
c2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpD
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBE
RkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6ZXh0
cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBE
RkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0Nv
cnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3Nl
bWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhD
b25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0
cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjpt
YXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFi
bGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1B
VEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6
aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0
ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292
ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
bmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJsZTo6
Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRhYmxl
OjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpM
b29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZl
YXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0TGFu
Z1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpzY3Jp
cHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZl
YXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdT
VUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NV
QlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2Fs
RGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6OnNl
dElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVh
ZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRlclJl
Z2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRh
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFi
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAg
ICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRT
dG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5G
dW5jKToKKwogMjAyMS0xMi0wNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFVzZSBlbmQgYml0cyBpbiB0ZXh0IGJveCBpdGVy
YXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3MTc5NDc1ZjdkZmQwOGYxNDhkMDI1ODdlNDBjZmQ1OWIwMWFhOGRh
Li5hYmYwNTU3OTlkYTUzMTNiMGIyMWE4MGZiNzM1ZDI5YTBmN2I2MGUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRh
cjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5
U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZp
ZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisy
MDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBv
bmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29w
eTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgor
ICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVk
QnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICog
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2
ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFw
SW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAg
ICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0Fu
ZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6
QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6Omdl
dERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBl
ZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERP
TVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENv
bXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAg
ICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVj
dDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06
CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBf
c2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFz
ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9h
ZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwog
MjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQg
RmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzZhYTZhYWY4NGRl
YjA4MmU0Yzg0MzIyNDkzMzgwZDgzM2RlOTJkMS4uZjgwOGU5MDVhYmQ1MDJiOWUyOTAzOTYyYzE0
N2Y1OWQ3OWJkM2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIERPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0
YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAg
ICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJl
cHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2Rl
cjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNv
dXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgbmF2aWdhdG9y
LmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDJl
OTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1NDcyNDdjYy4uZThhNmZiMTIzNWYxNzkzYjdh
MTQ1MmQ0MjI2ZjI4Mzc4ZWIwMzcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM3IEBACisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFy
Oi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisKKzIw
MjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWVtb3J5U3RyZWFt
LmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgor
ICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBX
ZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIgTG9jayBBUEkgd29yayBhY3Jvc3MgbXVsdGlw
bGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzgu
LjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcg
QEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRp
emU7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihtX2RhdGEpKSB7CiAgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJp
bmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAg
ICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9T
YW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBi
b2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFm
MzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBh
dXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRo
RGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYg
KGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAg
ICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3Rv
ciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVu
Z3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJm
Li5mNDEwYWFiMTUxN2UzOTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9
IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclBy
b3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0
byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0
V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVw
cmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBl
UE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5
ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdj
OWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVu
Z2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24o
Ym9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1
bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAg
ICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5
OWJiOTBkZDdmMDA3MWQ0MjRjLi5kYjNjMTM2NDY5NDliNWNmODRlZjkyMzM1ZWYxNDEwYWE1NDk2
Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5
LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYg
aW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRv
Q29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0g
ICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRs
ZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRC
eUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlv
biwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25z
ZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tI
YW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTks
MTUgKzI5OSwxNSBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYm
IGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQotICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2Us
IFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVz
cG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtlKCktPm1ha2VDb250
aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVx
dWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxG
ZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4
Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJl
c3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJl
c3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTgsNyArMzE4
LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNw
b25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFz
ZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
KyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9w
ZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkp
OwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGlu
Zm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAo
cmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3Bv
bnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5
UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNl
UmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25z
ZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAog
ICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAg
IHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0
ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0
SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1
cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlz
LT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkg
fSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5
ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJl
c3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9p
ZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0
Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmll
dmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcw
YjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEs
OCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3Bv
bnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25z
dCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0
dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVy
LT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigp
OyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1
cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNl
Qm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsK
ICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9k
eShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
Ym9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsK
ICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpu
dWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdp
bmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0
NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcs
NyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVk
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25z
Jik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRp
b25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNv
bnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNw
b25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4
IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2
NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAs
NyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5o
dG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXpl
KCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFs
dWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0x
MDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUo
KTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAg
IGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtp
ZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5n
KCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJm
ODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1
YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMg
Ym9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxl
bmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFz
dGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6
Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9
CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlk
KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNv
dXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsr
XTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0
YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3Qt
PnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVy
KSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2Ix
Li5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9p
ZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0
Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAg
ICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIo
KSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2Up
LCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVy
LT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNv
bnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3
ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBj
b25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxG
b3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3Vt
ZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNo
Qm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0g
bV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAg
aWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0
YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAg
ICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5
KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNv
ZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6
OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVy
Qm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVM
ZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZm
ZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRy
ZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVy
biBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5k
ZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNm
NmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxG
b3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9
IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1
ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtl
bkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBk
YXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4
NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMTFhNzNmMzQ1ZTgyZDllNzA4NTk4YWE4MzNkZWFl
ZDhiZWM5MzQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZl
V2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5
Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIg
PSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlz
ZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7
CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlm
IChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBS
ZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUs
IGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0g
UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUs
IGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3Qo
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJu
VmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdp
dGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUs
IGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAg
ICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNv
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3Jt
RGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChh
dXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZm
ZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
MCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQs
IGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6
IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0
LDE2ICszMjYsMjAgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+
YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30K
Kwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit7CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92
ZShkYXRhKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0
YWtlRGF0YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIGlmICghbV9i
dWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtl
KCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0Nyw3IEBAIFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDAp
OwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7Cisg
ICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKIH0KIAog
UmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzU1LDcgQEAgUmVmPEJsb2I+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAg
aWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBWZWN0
b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5cGUp
KTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0cik7
Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBibG9i
RnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAgcmV0
dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRhKCks
IG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1Rl
eHQoKQpAQCAtMzYyLDggKzM2NCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
VGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVy
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgzLDEwICsz
ODUsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKCkKIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNlPiYmIHNv
dXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAobV9idWZm
ZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAgIGlmICht
X2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGlu
Z0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2JhOTY3
ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZkOGJiMGUx
ODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdl
dCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAg
IFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAg
ICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8
UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0
Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNm
ODQ4ZjY0ZjIuLmI5MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAw
LDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFC
eUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
IH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0MSw3ICs0
NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRh
dGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNldEJvZHko
eyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9ybURhdGEp
KTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEJvZHko
eyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92ZShidWZm
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5k
ZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4uMzc0OGM4ZjU5Mjcy
OTMwYmJjMmQxNjY2YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1
c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3Jt
RGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBz
ZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgK
aW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEzN2MyY2Y2
ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxp
Z2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdo
dC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdo
dC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uODNiOTVk
N2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
CkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0
dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIu
ZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGln
dW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsK
ICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBkZWNv
ZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5k
ZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMxMmQ0NWVi
YmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0
aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0
aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNv
ZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0
YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURh
dGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAog
ICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktl
eURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3ZjM2OTQx
NDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRi
MzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25z
dCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURh
dGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5
RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEu
LjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RT
dG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7
CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0
byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAg
IGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBv
YmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlE
QktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxp
emVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUg
aW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNh
dmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4
Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNp
b24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsK
KyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgo
KSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNv
cmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRh
dGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlE
LCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUg
ZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJf
cyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAg
ICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkg
ZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24i
X3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmpl
Y3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qg
c3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwK
ICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVh
ZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAg
IGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAo
IWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0
YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9y
ZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7Cisg
ICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlm
ICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBi
ZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7
CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11
bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2Vy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYg
KGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAg
ICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRf
dCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IElu
ZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBl
OjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93
ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6
IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBv
cGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJL
ZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
dXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVw
cGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBw
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFj
NDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6
OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRM
b3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVu
dExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJn
dW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJp
bmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApp
bmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5jYzVhODY1NzMw
NTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAg
IGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2Fn
ZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNz
YWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6
ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5k
aW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li5l
NzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcgKzk4LDcg
QEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1f
YnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVj
ZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0
ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGEx
NGViMjEyMjQwOWIxZjg5ZTAuLjYzZjFjM2NiZTFlYTgxY2ZiZjQ1NDY0NjMyMGNkZjdmYWNmNTlj
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJM
ID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAg
ICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBV
UkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0g
cmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAt
MTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
ICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2Rh
dGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRh
dGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5
NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAo
cmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3Vy
Y2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0g
ICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCks
IHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9k
ZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJj
ZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VI
YW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNl
MTQ4NzdhMGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2
MzJiZDFlNmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2
YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+
IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAg
ICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVT
RC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2Vu
ZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2Fj
ZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyAr
MTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2Vi
Q29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAg
ICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAg
c2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1v
ZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7Cisg
ICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUs
IG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3Vu
dCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFi
YTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAt
NDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0
cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xv
YmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGds
b2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgK
aW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYzMTQx
YWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwx
MyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2Nv
bnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25s
eUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5
QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlB
U0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0
SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAg
ICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJl
dHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0
dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNo
ZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9z
Y3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOwor
ICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9z
Y3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsg
MCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4Y2ZhN2Iw
ZThjYTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyAr
MTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEp
OwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0
PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9u
dEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1f
Z2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1
c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJh
dGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBz
dGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAg
ICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VB
ZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRp
YXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVy
LmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEz
MzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4NTMz
NjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9u
dEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29u
dGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0
aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYg
Rm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcgKzkz
LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0
b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3Ig
cmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIy
NDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5YWQ3
YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1LDcg
QEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJp
bmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFk
ZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRU
eXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRp
b25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0
NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBlNjMy
MzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENv
bXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9u
Q29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3Np
dGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5v
ZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNh
bkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0LDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBw
cm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBW
ZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91
dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQo
RWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4LDEy
ICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1
c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAg
ICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAg
IHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5n
ICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRT
ZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5YzNi
MWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmVi
MzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIg
KzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25T
dGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250
ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNo
aXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRl
ZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXll
ZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVx
dWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdp
dGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBl
cnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1h
dCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1h
dCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVj
dG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXRE
YXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50
KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50
UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5n
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsK
QEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFG
b3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1
dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewog
ICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlv
bigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRU
eXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVj
dGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFz
dGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3Jt
YXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5X
ZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNo
aXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2Vu
dGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxl
Y3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3Ry
aW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBA
IFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJl
dHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBz
dHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVk
U3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
OwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
c3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
c3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0
MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9P
TCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3Vy
Y2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVz
b3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1p
bWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAg
ICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVm
ZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBl
KV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsK
QEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmls
ZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAo
ZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3Vy
Y2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAg
ICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1l
ID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAg
IGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZp
bGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCBy
ZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50
JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50
LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
ID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpz
aGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFkYTY2
ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUs
NyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVu
dEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmlu
ZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBv
cmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50
RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNv
dXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVu
dERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5t
aW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAg
fQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMy
LDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNo
bWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAg
IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNl
LT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5k
YW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUw
LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgp
KQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNo
bWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBv
YmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2Vy
dGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJr
dXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1Zgog
ICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21V
VEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51
bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOCht
YWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZl
LnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdp
dGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1h
cmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1
aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlN
RVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0K
ICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFt
ZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAg
TWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3Vi
ZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZy
YW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFp
blJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsK
ICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUo
ZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJr
czo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcsNyBA
QCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZy
YW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZl
ci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAg
IGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1
bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFn
bWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdt
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRv
IHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
RDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJd
KTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYg
KCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBAIGJv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBp
ZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1
bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAg
ICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBz
dHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMo
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0p
OwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFt
ZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5Yzdj
MjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIy
N2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3Rl
Ym9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGll
bnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VF
bGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldl
YkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJj
aGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhl
IGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUg
YmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0
aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9k
IC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9u
bHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2
YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAg
LTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFu
ZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnko
ZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5t
b2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGlu
Z3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwor
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAo
YnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9m
IGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAt
Mjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3Rh
dGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURv
Y3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGlj
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAg
IC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUg
ZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAg
ICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAi
Y29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLjhhNjE1MDQz
OTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVkMDQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBz
dGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAg
KiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxv
YWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChs
b2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEo
KSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1f
ZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAg
ICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQo
KSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsK
IH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVf
dCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOwor
ICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAo
IW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkp
OwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAg
IHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVy
KSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZm
ZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
bV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBi
YXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQog
Ci0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6
ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQx
MmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5ZmU5N2QwN2M5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVy
OwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xh
c3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRp
bWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAg
dm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1l
c3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBj
b25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wg
aGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhh
c0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEy
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAg
ICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVy
PiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsK
KyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZlcjsKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2FjaGVkUmVz
b3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5k
ZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1MTc4
NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTQw
NywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgp
KSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpj
cmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgp
LnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNl
OwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAg
KmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5OGYz
MzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDMs
MTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVu
dChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVz
b3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0
RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250
ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJh
bWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9
CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJv
b2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFD
b250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQp
OworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVu
Y29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApp
bmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJhMmRh
N2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpk
ZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBp
ZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAg
ICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1
ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBj
b25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2VmMDM3
YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdjNmZm
ZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
JiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVhdGVB
Y2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlPcmln
aW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJlc291
cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5
OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9LCBl
cnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBiLi42
ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9vbCBE
b2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVz
b3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgp
KTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsK
LSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9w
YXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAg
ICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3Vy
Y2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1p
dERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNp
emUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJz
dGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVyKiBE
b2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1Niw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRl
bnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0
dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFp
blJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJl
c291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYzYzg3
Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0
ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYp
OwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZl
ciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hpdmVS
ZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhU
TUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmluZz4g
bV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgxODQz
NzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgx
NDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNo
CiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNo
cm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJv
cjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9
IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCBjMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0Li45ZTlmMjk0Njcy
ZjNkNjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRF
bmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
IGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
cmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhU
ZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdiLi42
MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJl
cXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFs
UG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQog
ewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9
IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQo
KS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsK
QEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlm
ICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5j
aHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywg
aWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywg
b3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAg
ICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVz
cG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAg
ICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRp
b24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6
OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtl
OjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRm
ZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEw
MWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiAr
NTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1
bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxp
emVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0
YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3LDcg
QEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlm
Ci0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVu
dCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
c3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0
IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVt
UHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50
PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJl
cXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1
Li41ZWIwNjUzNjBiMTBkZjgxYjU2YmU2OTQ3NTFkY2Q5MzFlN2RiMGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNvdXJjZUxv
YWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMg
b3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVudExvYWRl
ciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwgbV9yZXNv
dXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwg
bV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xv
YWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRlZmVyc0xv
YWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3ICsxMTks
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRl
bnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jl
c291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVx
dWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0
RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wK
IAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0g
ICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEt
PnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1
dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjph
ZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFy
ZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9y
ZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJj
ZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBi
dWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkK
KyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQogICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitjb25zdCBTaGFyZWRC
dWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9yZXNvdXJjZURhdGEtPmlzTnVs
bCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJj
ZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CkBAIC01NzEsNyArNTcyLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29t
cHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3Rp
Y2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAg
ICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6
OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29k
ZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkg
OiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50
PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQy
MTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li5jZjgyMTc0YmU4ZWQ4NjdkNDc4M2VjYWExMzZiNTc4
MzkyYzI4MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFt
ZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7
CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxv
YWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291
cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVy
KiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQor
ICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBj
bGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNl
TG9hZGVyKCkgY29uc3Q7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291
cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1
ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVz
b3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNl
ZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3
ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgs
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkK
ICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsK
KyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxl
bmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0
Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgog
CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsg
fQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYg
eyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lk
IGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIo
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YSht
X3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1f
cmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTdWJzdGl0dXRl
UmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2Iw
ZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4Yzll
N2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNw
b25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFy
c2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291
cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgp
KTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMg
d3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSBy
ZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFy
c2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5Mjcx
Y2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUz
LDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNv
bnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJl
c291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0g
ICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVu
c3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNl
LnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNv
dXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1
b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5
bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwog
ICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwg
cmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyBy
ZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChp
bmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNv
ZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3Jz
IChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVh
ZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5
CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
RmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0
aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAg
ICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJl
IFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4
IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUz
ZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBA
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUw
LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9z
dCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNr
Rm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBi
b29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQg
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsK
KyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zvcndh
cmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYz
MDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMx
MWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxp
dmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2Fk
ZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8g
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43
YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0g
ICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7
CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFm
ZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRjZTUwY2U4
ZDMzZDFmYzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChkYXRhLCBw
YXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJl
c291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1LDcgKzgxNCw3IEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBhdGgpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAg
ICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkpOworICAg
ICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50
LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29sIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
LCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRyeVN0YXRlbWVu
dC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgLy8gRGlkIHdl
IHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/IElmIHNvLAog
ICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlh
bGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlz
RW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNv
dXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEzLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRp
b25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9y
YWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1
bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAg
ICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRl
bWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNh
Y2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQu
LmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBA
IC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2Ug
ZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENG
RGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFL
ZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAg
Ly8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291
cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3Vy
Y2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAor
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdh
Y3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0
KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIx
NSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBu
b3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
YXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VS
ZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
ICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
UmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90
IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNl
UmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3Vy
Y2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXIm
IGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJM
ZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAg
UmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENG
RGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0
KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxp
c3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1
ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgp
KSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJM
ZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0
ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0
KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUs
NyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rp
b25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJv
b3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVz
b3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAg
aWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQg
V2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6
ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVk
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VE
aWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMg
bm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAg
ICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAg
ICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7
CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGlj
dGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAg
ICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1
MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0g
ZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVz
cG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUg
dG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2
MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1l
U2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAg
dGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGlu
dG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZy
YW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUg
ZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3
aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1l
PiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxB
cmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3Mjdj
Li45OTNjMmI4ZTgzMGRjM2Q3NWM1YWQzMTliYmFmZTlkZjQ1YzUwMTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAg
LTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRl
TUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFk
IG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBv
bmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5n
ID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFz
Y2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJj
ZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
KiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNm
ZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAi
LCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3Ry
aW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAg
ICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBj
b250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAg
ICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNv
bnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNv
ZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAg
ICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEu
c2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAg
ICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEu
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywg
YmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZz
ID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRN
TCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAg
IHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVu
Y29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAg
ICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxl
bmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAg
ICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4
LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwg
Mik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAg
ICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAg
IH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJc
biIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFz
Y2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRh
dGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAg
ICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIw
M2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjQwMjViOTgwZTVlZTY4MmRiMDc2MmFmYTg2
ZWNhOWQ5MmZlODU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBt
aW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0g
ZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsK
ICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0
eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVh
ZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBA
IC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExP
R19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQo
V1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwog
ICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0
Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVI
ZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFz
IGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4u
LikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0
YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRm
OCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhlYWRlci5j
b250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkg
ewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBi
dXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3Rl
ZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAg
ICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBj
b250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIu
Y29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0
OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0
YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0
RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXpl
KCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1Io
IkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFk
ZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFBy
aW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5k
YXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVE
ZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAg
Y2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRh
dGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8g
Y29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
IGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291
bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRo
ZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5N
aHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjkwZDFjNmEy
YmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAg
LTQwLDEyICs0MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAw
N2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1
NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+
IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwg
RG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0
UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigp
OyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFl
NjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlh
NWE3YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVj
a0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24n
dCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNh
biB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNv
ZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkK
LSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRv
IGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVy
aW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgw
KTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmlj
cyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBi
ZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApp
bmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2Mw
MTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYz
M2FlOTQuLmY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBA
QCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xp
ZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250
TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
c2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQog
ICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAt
OTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5n
KCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVm
ZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAg
ICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVm
ZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
ZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250Ojpj
cmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIg
YnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAg
d3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJl
dHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1J
bkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYg
KGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3
aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAg
Y2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAu
LjE1NGRiOGNiYWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJ
bml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21G
b250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxh
dGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRo
ZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0
Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZv
cm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAot
ICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBi
b29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwog
CiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7
CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQg
dm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkw
ZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRl
ZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVh
ckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1h
Z2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVm
ZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93
KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURh
dGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYg
KCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0
U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RT
Y3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQ
b3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
KS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJl
ZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9z
dFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1
LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwog
ICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsK
ICAgICBpZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLmQ1MTNl
MTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9p
bWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdo
dCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXpl
VHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxk
RGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsK
ICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
aGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVm
ZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5h
bChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZl
ckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVk
NzlkNzdmMTgzOTU2MmYuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3
PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVy
biBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5s
b29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAg
ICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29k
ZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpA
QCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0
IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0
aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBk
YXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlm
IChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0
YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGlu
Y3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Cisg
ICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgp
LCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdh
YjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmlu
YWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hv
dWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyAr
OTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVy
ZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2Fk
aW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQ
dHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFs
PERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNhZThi
YjY4ZDI1Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmNmNGYwMmM1ZDc0MzRjYjY1Y2Iz
ZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAg
ICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
IH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNv
bnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05
MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQo
KQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRp
ZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNh
MjUxODEzZTZjMDM1YmMyNzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBA
IC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVy
KiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihD
YWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsy
MTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRC
dWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9Cisg
ICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAv
KiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQg
Ki8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVy
Rm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
ckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVu
dHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVl
c3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3Rv
bmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3Vh
cmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMz
MWYyYzgzOS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBA
IC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQg
Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxv
bmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0Rv
Y3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0g
ICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250
ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUz
ZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBA
IC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZi
YjY5MzkzM2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVj
N2JmZjlmZThlOThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAg
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2Fi
bGVkU2NvcGU7CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVu
dChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
KTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsK
ICAgICAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAo
IW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250
ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAg
ICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29u
dmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkp
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBu
dWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2Qz
ZGU2M2IwNjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjky
MDRlYjkzM2I0ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVt
ZW50KiBtYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2NvbnZlcnRlZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29u
dmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNv
bnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJj
ZGVjZTliZTQxOGYxN2I2NS4uYjg3YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAg
LTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAg
IHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJk
ODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlk
OWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsK
ICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
aW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uNTQyNjZkZDkw
ODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNo
ZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyAr
NTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291
cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAg
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0
VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4
YjkxNTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwx
MCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVu
Y29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5
MGY0NjdhMjc4MjYxNWQzNDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5
ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNo
ZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBp
ZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0
MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2Ey
NTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0
UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3No
ZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5k
ZXggY2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4
NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBA
IHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3Ig
ewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFj
a2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRG
aWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAK
LSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAK
ICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0
ODFjMjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0
ODQwNjlkZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0
IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJl
cXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNr
ZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tD
YWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRS
ZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1
dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNw
b25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1v
bml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2Fj
aGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0Nh
Y2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkK
ICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2Nr
KGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsK
IH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hh
cmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNv
dXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1
ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5y
ZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBp
ZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEy
Li5iNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNmNzI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
OCw2ICszOSw3IEBAIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVy
IGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3
ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252
ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVy
PiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0Nv
bnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li5kYjgw
NjljYmY5ZGI3NTBlYjdjMTcxODRhYmZjMWMyYjNjNTA5MjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252
ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsK
KyAgICBtX29yaWdpbmFsRGF0YS0+ZW1wdHkoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAg
ICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0y
MjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRG
b3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1
ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVy
dGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlciht
X29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERh
dGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZp
ZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xv
YWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29u
dmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VD
bGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVy
LT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4oU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgfQogICAgICwgbV9yZXNvdXJjZUxv
YWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcg
eyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmEzNjNiN2IwMmNi
M2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVu
ZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRl
eHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGYzN2QwNTliMGVi
NTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMuLjZkNTFjNWU1MTZhM2RiZmJiNzQ3NmVkOTRi
MDQxZTZlNTZmNzNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1Miw3ICsxOTUyLDcgQEAg
Y29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdo
YXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0
aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1
bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUg
YWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJT
dHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5
bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAxYTEy
MTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5kNzUwY2ZmOTY0MjMwMDUyZjc5
OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZy
YW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4
dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3Vy
Y2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50
LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4
dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0p
OwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDog
bm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxp
emVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVu
IHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgVGV4dEVu
Y29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAg
ICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRF
bmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpF
bnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2Nz
cyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUo
Y3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwog
ICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFn
ZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUo
KSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAg
bV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNi
ZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVz
b3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXpl
cihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQy
YzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFj
ZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5
LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcg
ZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFy
ZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEz
ZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAg
LTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhp
bnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAK
KwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAg
ZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSks
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVu
ZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBp
ZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fk
cy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9u
SGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVk
Q29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5
YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIw
YmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVk
RGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBr
ZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFhMTZmMzQy
YzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2ExM2Q3MzkzNGFhMDQzNmVl
N2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2
MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBz
dHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJv
YXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2Fu
U21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5n
IGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBW
ZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29u
dGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2Ug
ewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0Owog
I2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRp
ZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRT
aXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+
JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFk
U3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+
IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJp
dHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVl
MmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1
c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQg
Y3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5
LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8
IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlw
ZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwg
ZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNl
RGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsx
MjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBl
cnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1
ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZh
YmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEg
ewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAx
YzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5hNzg4ZmI3MzBlZGMxYzNl
ZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
YXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+
IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAt
NzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJp
bmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRo
c0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3
Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRX
cml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAg
ICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1M
Rm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUwMDI0M2JiNDZm
ZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIw
ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApA
QCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1
YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZv
cm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgs
IFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRl
eCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0Yzc5
ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFy
ZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdl
dCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBA
IC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQ
cmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5p
c0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29u
dmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAg
ICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3
RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwg
IWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQx
OTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVm
ZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0x
MTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAg
IH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3Ig
bV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7
CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgw
MjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4
Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNl
ZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8g
ewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJh
dG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLmVh
Yzg0MTgzY2EzZDlhNDY0ODc4YzZjNDhmY2UwMjIwYWRkNDc5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsMzEgKzM3LDUzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEsIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCitSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IG1hcHBlZEZpbGVEYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkp
OworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJiB2ZWN0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUodmVjdG9yKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBt
X3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAK
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3Zp
ZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRl
cikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBhcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC03MywyNiAr
OTUsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVk
T3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVm
ZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9k
ZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVz
ZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBt
YXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVk
RmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAg
ICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2
ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0
YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90
IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCAr
MTA5LDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25z
dCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0
YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0
CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91
cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQg
dG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmly
ZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGlu
ZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1
Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2Vu
ZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQor
ICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykp
IH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAx
KQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVu
dHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmlu
ZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIo
KTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwot
ICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCog
U2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgp
OwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdt
ZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0yMDIsMTAgKzE5NCwxMCBAQCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25z
dAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFT
U0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAg
ICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7
CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywxOSAr
MjA1LDE5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdt
ZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5h
cHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7Cisg
ICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25l
U2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUg
PSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3Np
emUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9
IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0
MywxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNv
bnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNv
cHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBl
bGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAg
QVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRl
cikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92
aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7
CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTMsMTIgKzM0MCw2IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCgpIGNvbnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJu
IGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAog
Ym9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3
Miw0MSArMzUzLDEyIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgp
IGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0Uo
Q0YpCi0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2Vu
ZGlmCi0jaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYg
VVNFKEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAot
I2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5kYXRhKCkpOyB9LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAg
cmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAK
LVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgp
KSwgc2l6ZSgpIH19OwotfQotCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAg
LTQ1Niw3ICs0MDgsMTE4IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRy
dWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
UmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6
ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikK
K3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRp
Z3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+
c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAg
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1sw
XS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEp
KQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFw
cGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAg
IGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAg
ICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nl
c3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9
CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAor
eworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25z
dAoreworICAgIHJldHVybiB7IHsgZGF0YSgpLCBzaXplKCkgfSB9OworfQorCitSZWY8RGF0YVNl
Z21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sKKyAg
ICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOworfQorCisjaWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50PiBE
YXRhU2VnbWVudDo6Y3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5k
aWYKKworI2lmIFVTRShHTElCKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRl
KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVS
KQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFT
ZWdtZW50OjpjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKwor
UmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRl
cikpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorewor
ICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRh
KCk7IH0sCisjaWYgVVNFKENGKQorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRh
LmdldCgpKTsgfSwKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgICAgICBbXShjb25zdCBHUmVm
UHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsg
fSwKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRh
dGEtPmRhdGEoKTsgfSwKKyNlbmRpZgorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlk
ZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7
IH0KKyAgICApOworICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0
YSk7Cit9CisKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25z
dAoreworICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6OnNp
emUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAg
ICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRh
dGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUzOCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBt
X2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90
IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYm
IHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUo
c2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQp
CkBAIC00ODksMjYgKzU1MiwxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1z
aXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBt
X3NpemU7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudDsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21l
bnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVy
biBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBz
aXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0
cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8g
aG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmlu
Zy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1ODcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmso
cCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXgg
ZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uMDFmYmFhOTZmOGE0NTRm
YzJkMTA5NmZiZGNiYTI0NjFjYzRmZDYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC02MiwxNDYgKzYyLDEyNSBAQCBjbGFzcyBEZWNvZGVyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0
YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0
IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29t
YmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2Vn
bWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmls
ZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIGVu
dW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBw
aW5nOjpZZXMpOwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRp
ZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBj
b25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0g
ICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJik7CiAjZW5kaWYKLQog
I2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVz
Kik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4m
Jik7CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+JiYpOwogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0
YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3Qg
YWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBl
bmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0g
ICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0No
YXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0KLSAg
ICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRh
a2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMg
bm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAv
LyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBj
b250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21l
bnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAg
dm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8
dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogCi0gICAgdm9pZCBjbGVhcigp
OworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3Qq
KCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJik7
CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRh
YmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAv
LyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21l
bnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRh
aW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0K
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsK
IAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBV
U0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYg
ZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5k
aWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
CisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAg
ICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhf
dCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAg
ICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYm
IHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJv
dmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wgY29udGFp
bnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNl
Z21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4s
CiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAg
ICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRl
cz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQ
dHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+LAogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorICAgICAgICBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxl
RGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCit9OworCitjbGFzcyBT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7
CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXImJik7CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNF
KENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisK
ICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlm
CisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0
YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWlu
ZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hh
cmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0
YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OworCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAgYm9vbCBpc0NvbnRpZ3Vv
dXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KIAotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
LSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewog
ICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMTg5LDE3NiBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5k
KCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBib29sIGhhc09uZVNl
Z21lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOyB9CiAKICAgICAv
LyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1l
LgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURh
dGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAg
ICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhl
cik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OworCitwcm90ZWN0
ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CisKKyAgICBEYXRh
U2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2Ug
fTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0
YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsgYXBwZW5kKFdURk1vdmUoZGF0YSkpOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0Yp
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJ
QikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRC
dWZmZXImKTsKKyNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CisKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CiAjZW5kaWYKIAotICAgIHZv
aWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhcigpOwogCiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVj
dG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0Owog
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAg
bXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZh
bHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9
OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBh
bGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCBy
ZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNo
YXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFy
Z3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOwor
ICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAg
ICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciog
ZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBj
b25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFll
cyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNo
YXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lm
IFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisj
aWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdC
eXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21l
bnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50
IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVm
ZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAg
ICBpZiAoIWJ1ZmZlciB8fCAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRp
Z3VvdXMoKSkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAg
ICB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZl
cmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBp
bW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoYnVmZmVyLT5o
YXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSkgeworICAgICAgICAgICAgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7CisgICAgfQorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoQXJncyYmLi4u
IGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
cz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGVuc3Vy
ZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1f
YnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJl
c2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAgICB7Cisg
ICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZm
ZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWY8U2hhcmVkQnVm
ZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1
cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAg
ICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICB9CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2
NiwyMyArMzY2LDI0IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlEYXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNpemVf
dCBzaXplKCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUg
PSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQ7IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
I2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3Nl
Z21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNv
bnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZm
ZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0
ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgp
KTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxh
eWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0
d29yay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZv
LmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
QXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmst
PnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNj
MDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5
NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5j
cHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkK
ICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBk
YXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3Yx
XzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5m
YWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAg
ICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVm
ZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmI5Yjg4MjBh
NjkwYzljNjY0NTFhMWY1MjVmNDE4MzljODYyYzFiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDE3ICs0MSwxMyBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24g
YWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMg
ZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9u
LgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpIHsKKyAgICBpZiAoaGFzT25lU2VnbWVudCgpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRz
WzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gKmRhdGE7
CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51
bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNmRGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCks
IHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsKLSAgICByZXR1cm4gY2ZEYXRhOworICAgIHJldHVy
biBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkpOwogfQogI2Vu
ZGlmCiAKQEAgLTcyLDcgKzY4LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwog
ICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0
aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42
ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIx
MSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJp
bmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRp
ZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVw
IGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRX
aXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlw
ZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAg
ICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZv
clR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBi
dWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZl
ckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5
ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi45ODA1NDdiOGNjNGM0YTg4
Y2ExNTVjYmIxNzgyMGFmODVlMmRjOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1w
b3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBv
c2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRh
dGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBf
ZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBf
c2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtOTUsMjcgKzk1LDI2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKE5TRGF0YSAqZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRh
dGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJp
ZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVh
dGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50
KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50
cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2Vn
bWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRv
IHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0p
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjUsNyBAQCBSZXRhaW5QdHI8
TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7
CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0
ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXpl
KCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBm
Mzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJz
ZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1
cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24g
eyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24p
OwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQz
NDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFkZGVlN2VlOGI0ZWViODM1
ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApA
QCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXRE
YXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBk
YXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5p
dERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXRE
YXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgp
OwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBA
IC0xOTYsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEo
aW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBA
IC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVj
ayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENv
dW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtl
eUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1
dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046
OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJh
eSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0Zjgo
KTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgp
LCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRz
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlk
czsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4K
ICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAg
ICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVh
dGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRy
YWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAg
Ly8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBt
ZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2gg
ZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0
ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5
LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5p
dERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5j
b2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5z
aXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0Fy
cmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3Ro
KCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRh
KCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAog
Q0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43
YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAK
QEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkK
ICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9l
bmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0
MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2
ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9Owog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29u
c3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBk
MWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdl
MTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6
OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rpbmco
KQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFy
aWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRf
YnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRh
ID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
Z19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
Z19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2Ux
MzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5h
bDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtl
eSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlm
YzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAg
LTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShH
Qnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRl
cykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBj
b25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRl
cygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRv
cHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9p
bnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5k
ZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwor
ICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAg
cmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1
ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJl
ZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRh
LCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0
Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZh
bGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAotUmVm
PEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9u
dDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQor
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250
RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRo
ZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZl
cnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERh
dGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCks
IHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmlu
ZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVhMjY0
MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpYmls
aXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0
aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxE
YXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmlsaXR5
ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9u
RmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
PSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3Jl
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0
IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250
Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpP
cmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGlj
SXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9u
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIx
OS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAt
NzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8v
IFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBp
bnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFz
cyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBz
dHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VE
YXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwog
ICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAg
ICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIz
YmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1
MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAg
LTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9k
ZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1
cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVy
bCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBt
aW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92
ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3Vy
bChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApp
bmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhm
YTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1v
ZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVj
b2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVk
QnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJp
bmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6
ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1f
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAg
ZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3
ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2Rl
bDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCpt
aW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5
cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXgg
YjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNj
NzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0
aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBi
b29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9m
ZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXpl
b2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJ
bnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50
MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIu
c2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkp
CkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90
PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZT
aWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpA
QCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdP
RkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29s
IGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1
aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsK
IApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVy
JiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09
IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3
IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYg
KGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVy
dGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXgg
M2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRi
ZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYg
ZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29m
ZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1w
bGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVy
bnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252
ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7
Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZl
Y3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZG
IGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3Ig
V09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBn
aXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBi
dWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1
NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2Rl
ZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9
OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0g
SlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNl
OTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6
VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMg
SlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihq
c29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXRE
YXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAg
ICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVs
c2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0g
ICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5k
YXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNl
NjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0
RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlh
bGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0
cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAg
ICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQog
ICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vz
c2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsK
ICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNv
bnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRz
OmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdl
dCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2so
ZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQog
ICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAg
W3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAg
ICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZD
b250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0
cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIp
OwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVu
dFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9u
c2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25z
ZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklY
TUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwg
aXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2su
CkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAg
ICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50
aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVS
TF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9u
SWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdl
ZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6
Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0
c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0
VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250
ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAo
YXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwog
ICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRy
PE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmly
c3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAg
ICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBw
SWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQo
KSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0x
MTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2lu
c3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcgUmVx
dWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWlu
UHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5Niw3
ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50
cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSBy
ZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0
YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAg
IGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50
cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0
KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNP
Ti0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyArMTIx
Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0
IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRv
IGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAg
ICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5n
Q29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElk
ZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhh
bmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRv
ciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERh
dGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVl
c3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYg
KGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAg
ICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVx
dWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVy
ID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5n
Q29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElk
ZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhh
bmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJy
b3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIo
Y29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBj
YzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDksNyAr
MzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMo
W1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVj
b21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRhdGVE
YXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xvYWRl
ciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Y29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVs
ZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQ
QVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVl
c0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2NDMs
NyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9u
ZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6
c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAg
IFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6
YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07
CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIy
ZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBA
IC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmRE
YXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVy
ID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRC
dWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdh
c1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBb
bV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFt
RGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhl
NzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2MWFj
ZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lk
IGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVk
KCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsK
ICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmI2ZTIz
N2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsxNjMs
NyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsK
ICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJl
bnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1f
YnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3Bh
cmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAog
Y2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07
CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKQEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0
YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAg
aWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBE
YXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpy
ZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
cmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpAQCAtMzg4LDcg
KzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQog
ICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpu
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1
ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFk
YXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQz
ZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2
ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2
ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9u
dENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0
Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2Zv
bnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4
IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1
NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZy
b21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVf
dCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVy
LCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1No
YXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVy
LT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAz
MikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0
YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAg
IHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwog
ICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0lt
YWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJ
bWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVy
IGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBr
bm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBp
dHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1h
Z2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAg
Q0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0
ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRh
dGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRl
IGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVm
KCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVz
QXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJl
Y2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2Nr
IGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwg
d2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50
ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJD
YWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hh
cmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0
YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVj
dChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykp
OwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdl
dCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2
ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lE
ZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3Vt
ZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZE
YXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0g
YWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQo
KSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5
Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJk
ZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyAr
NTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0
KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5U
eXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRh
NDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzVi
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNv
biwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1
dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAg
ICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3Jt
RGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1
N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZv
cm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEw
IEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFs
aXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9u
dCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRD
b3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAg
ICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJk
NTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlk
YjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFs
aXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
KQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYm
ICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0
NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3
ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkg
Y29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNv
ZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2Nr
ZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJv
RnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVO
VFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdl
NDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZm
OGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQy
Miw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNv
bnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dT
dHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcxYmUuLmQw
MTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3Vp
bnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVm
UHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5
YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFT
dGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3Rh
dHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1
dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlz
LCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRv
IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywg
ZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsK
ICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVj
b2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXIt
PnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlm
OTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEy
OTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAg
ICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVk
ICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51
dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwot
ICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhp
cy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxv
YWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4u
Y2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewog
ICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAK
IHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29u
c3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9p
bnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lk
IG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6
ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQs
IHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAg
IHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwor
ICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMg
dm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIp
CiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVu
dCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1
cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lm
TmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7
CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBw
YXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRl
eCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi42NmUyOTc5ZTNlY2Yy
ZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VY
VEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29y
eSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAgICBJ
bml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsg
fQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBo
YXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5LgogICAg
IEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEpCkBA
IC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0co
d2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdT
VF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwg
c3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1h
cHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBh
cnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVT
aGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxv
YWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1f
c3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVk
ZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5
bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVu
ZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhl
cmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAg
IG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxv
YWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9h
ZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBt
X3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAg
ICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZO
ZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsK
IH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIu
LjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBp
dGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVu
ZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIu
Y3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQz
MTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3
OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0
aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0K
aW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2
YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0K
QEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50
SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhb
YWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVu
dEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91
bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4
Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQx
ZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAt
NjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0
aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7
CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8g
VGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVz
LgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rp
b24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJl
Y3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29y
cmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6
IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVD
b3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsK
IAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBp
ZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFi
bGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAg
IHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0Cisg
ICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFy
dHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0x
NDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0
aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEds
eXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZv
aWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
VmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBj
b3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1h
dGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0
IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50
c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAK
LSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZl
Y3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25z
dAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJs
eVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3Nl
bWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9
IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3
ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGlj
YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEds
eXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEds
eXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3Qg
TWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEds
eXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAo
IWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0p
KQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAg
IE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhD
b25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0
aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3Rh
bnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVj
dCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaElu
Zm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYg
KG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlh
bnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2
ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9u
dFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRh
Jik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0
aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+
IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIx
YWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4
ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVk
ZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFL
RV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgo
KHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVp
bnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2
YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBj
b3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
VGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVf
dCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXpl
b2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAg
c3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAg
ICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0
IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFs
aWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZh
bGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRy
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRp
b24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0
ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0
ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRl
T2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEy
Nyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJM
RShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsK
IHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWlu
dDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSog
Y292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAg
IGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
Y3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNjYTcy
N2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFk
ZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250
RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxl
CiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5
IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1l
Rm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1l
LCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnRO
YW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBv
cmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIq
IHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRh
KCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZm
ZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAKIC8v
IFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBz
eXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChj
b25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQorUmVm
UHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZv
bnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdm
Li4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBz
dHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hhcmVk
QnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90LCA1
MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlSZXNv
dXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVzb3Vy
Y2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNh
bERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1
ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBz
dHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsK
IAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZm
ZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdl
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KIH07
CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25TdWJU
YWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBPcGVu
VHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIgdmFy
aWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAotICAg
IGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhh
c2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0gc3Vi
VGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxlT2Zm
c2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1cExp
c3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3VwVGFi
bGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8
ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3ICsy
MDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdEluZGV4
WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCog
bG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1
cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBj
b3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9v
a3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1cmVM
aXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zmc2V0
OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUo
dWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5k
ZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsK
ICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1
cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRh
YmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlw
ZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsgKytp
KSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkgJiYg
ZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RydWN0
IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJl
Q291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBG
ZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcs
IGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJl
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhbY291
bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5nU3lz
UmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBk
ZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0yOTgs
NyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVu
VHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBjb25z
dCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBl
OjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAo
IWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3IEBA
IHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8fCAh
aXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcgQEAg
c3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwogICAg
IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFu
Z1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0KGJ1
ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBAQCBz
dHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1
cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsKIAot
ICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2Ny
aXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZl
YXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1
cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7
IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlz
dD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBm
ZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zm
c2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29r
dXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5nU3lz
VGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0TGlz
dCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRzKQpA
QCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAg
ICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAgICBj
b25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZl
YXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUqIGxh
bmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJlTGlz
dCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0
cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVyZTsKICAg
ICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5
cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBi
b29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiog
bWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVhdHVy
ZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVydGlj
YWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRh
YmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5v
cGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhl
YVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJs
ZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQy
NCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRh
KQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3Ig
Zm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcp
OworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICgh
dmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVW
ZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJz
dGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShP
cGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5
cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJs
ZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1
ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJz
dGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQw
ZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgU3Ry
aW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVh
dGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0
aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5k
ZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVjNzg4
YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBG
b250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVj
dGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRh
Z2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVy
ZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0
YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4u
ZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmlu
ZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRl
VW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2
YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5j
cHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRj
NDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURh
dGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpw
bGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAg
ICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUx
MTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3Zjgx
MDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTgg
KzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhG
T05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250
ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9u
dERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUp
OwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZP
SUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZv
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXgg
Y2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBjNjE5
NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFj
ZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZl
cik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1
c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsg
fQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25zdCB7
IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkgeyBt
X2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7
CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlk
YWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAg
Ly8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGlu
IGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5i
ZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRp
Z3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91
c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdp
bigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMg
PT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVj
b2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShh
bGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQz
NDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uYTQyZTViYzRhY2NmMzcyMmE1
YWY5YzkwNTQ2MmQwOGVkODg0MTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9t
YXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwog
fQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5m
by0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAg
IGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2
LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAt
IGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXpl
KTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0g
ICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcgKzcy
Niw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURlY29k
ZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQ
RUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2
OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNFKExD
TVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5
NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2
ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBt
YWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlm
IChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBl
XSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNTRVJU
KGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXpl
KCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAogICAg
IGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3ZWJB
cmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRh
KCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkg
ewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05T
S2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhP
YmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJd
KQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05T
S2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhP
YmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAt
NTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAg
UGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdp
bihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOworICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0ZXJJ
dGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVi
b2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAg
YXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0eXBl
cy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0g
dHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlw
ZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFb
aV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNb
aV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0aU9y
TUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYg
KCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlw
ZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdl
RGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9y
TUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFn
ZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmlu
ZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FO
RF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21f
cGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9t
RGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXpl
ZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2lu
KSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQog
ICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUsNyAr
NjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZv
TGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0
YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJp
YWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNE
YXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7
CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJk
IHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBk
cm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJz
IGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVz
IGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxv
YiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdv
dmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2Nv
YVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAg
cmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYg
KChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2Fy
ZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0g
Y291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5k
ZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2Qy
NjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi40N2U1YmY1ZTUxNzU3YzlhODhkNWMzMmYyNmMx
NmU3ODIyM2JiODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJl
dmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJl
dmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIp
Ci0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBt
X3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPihTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9
CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRl
IHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhE
ZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4u
ZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmls
ZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZElt
YWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0K
QEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0
ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBz
dHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0K
IAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1J
bmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgs
IFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3Qg
U3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJk
U3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAg
ICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5
cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVh
ZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBp
dGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAg
ICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRl
ZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
RDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRl
ZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMx
ZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0x
MjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5n
Rm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQot
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0
YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEko
d2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdl
YkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1
c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29u
dGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3Rv
bURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBh
c3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1
NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5n
PihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAq
ZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0K
IAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgs
NyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxT
dHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3Vz
dG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3Vz
dG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3Jp
Z2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygp
KQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQs
NyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
cikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAg
ICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBl
OnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBz
dGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEm
IGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAg
ICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21E
YXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1
c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcm
CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0
RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6
cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBz
ZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURh
dGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2
LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVi
b2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVt
ID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0g
ZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEu
Y29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkp
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5n
ZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShj
b25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZm
ZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAg
ICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pihz
dHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAg
ICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZv
cm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmlu
Zz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0
PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4
ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRX
cml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7
CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3Vi
bGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9y
bWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFm
N2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5
Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAg
ICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ug
c2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2Fm
ZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmICht
X3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAg
bV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cisg
ICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAg
ICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBhMzdhMGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4
NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3Mzk4OTA5Y2M4YmVhNGQwYTNiOTU3OWE3ODgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEy
LDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAog
ICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
b3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVu
KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigp
KTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUx
NzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNi
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsK
IGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVj
dCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Vs
ZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0
dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29s
IGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9p
ZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBh
bHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVh
ODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3
OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAg
IGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1
NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1
MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAg
ICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICgl
cykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlciho
YW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7
CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsK
ICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2
Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3Bv
bnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVz
b3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZl
ckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90
IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29t
cGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhl
c2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0Rh
dGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBl
bnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0g
c3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5n
OjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAt
MTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNr
KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFu
Z2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERh
dGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwog
CiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ug
d2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNo
IHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFz
IGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3Ro
IGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgp
CiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNp
emUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8q
IHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sg
PSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRh
IH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRl
c1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRh
c2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rh
c2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAg
ICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRl
eCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAg
ICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Ynl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUlu
ZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShj
b25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNz
ZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5n
OjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1
cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4
cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBk
YXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICgh
ZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5p
c2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXgg
ZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEy
ZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAt
OTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAg
W3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0
ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEg
PSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5j
b3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vz
c2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxl
Z2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2Rh
dGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRh
c2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNm
YmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2
ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcg
KzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAg
ICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZl
cnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9
CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0
ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVt
cyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAg
IC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEo
KSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZl
cikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMg
KzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAog
ICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxN
YXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlk
IG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0
aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlh
bE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBh
cnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFs
TWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxh
dGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEo
KSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwg
Ym91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFy
dCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJv
dW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2
NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRv
RG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0K
IAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25s
b2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVz
dDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRl
N2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hh
cmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFu
ZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRS
ZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7
CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwor
ICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxl
LCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQo
KS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciks
IGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmlj
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZl
clBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBP
U0lYLmNwcAppbmRleCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMyYzM4MWQzZDE5NjEzZTYwLi4z
Y2EyMDgyMmMwMzE4YTU0OTExMTg2NzVkMjdiODc4ZGQxODNmZTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBp
ZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcg
KzY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAodG90YWxCeXRlc1JlYWQg
IT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uYzQ2
MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDggKzk4Niw4IEBAIHN0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQot
ICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRl
bnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAg
ICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhH
TE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZp
bGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZp
bGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2Vl
ZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1w
V3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisg
ICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwg
MCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0
ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4
NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJk
YTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJl
ZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAg
ICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERX
T1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNU
b1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShm
aWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYg
Ynl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9m
IGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwg
R2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdj
ZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAg
Ym9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewot
ICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
c2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNp
emUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3Bs
aXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZl
ci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3Bv
bnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0g
ICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1Zp
ZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNp
emUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRl
U3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcg
KzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0
b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxi
YWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNj
ZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAK
aW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJh
NWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBT
Y3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBh
dXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1
dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZm
ZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVy
OjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYg
c2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYg
c2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9T
dHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFw
cGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5o
YXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhh
c09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFp
bnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgp
OwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAg
IG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMw
NGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1
ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcg
KzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZm
ZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Cisg
ICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVm
ZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5
KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNv
bnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2Rl
ZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMg
dGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
cmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEy
OGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjg1ZTc2MzgzZGFiMzUzYTRmYzRiMDlkMTI3NzE4NWEw
MGU5ZTIzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2Vy
Rm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRG
cm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZN
b3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxT
Y29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCitib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNM
b2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051bGwoKTsKK30KKwogYm9v
bCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9y
T2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9k
YXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAo
bV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtl
KCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAg
ICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250
aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAg
ICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBt
X2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSArMTI3LDYgQEAgdm9p
ZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4
IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLjFiM2Q3ODcwZjEyOGJm
ZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
b250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJH
bG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1
Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9Cisg
ICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3
LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1
ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVk
NWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2
b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZl
dGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9y
bURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9
LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNs
aWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5k
aWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcy
MTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
QEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2
ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2Fz
ZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5n
KCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFy
ZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91
bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5
VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVN
YXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3Jh
Z2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUz
ZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4
ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAt
MTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxz
ZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAg
ICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVt
cHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0
aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91
dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2
ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2su
IFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYg
KG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZSht
X2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYg
KCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBu
b3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9u
c2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZh
dWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxp
emVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VS
VChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NF
UlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9
IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25z
ZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxw
dHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25z
ZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
KQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0
YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAg
ICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVm
Mjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1
LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURh
dGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhy
ZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkw
ZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEy
Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1s
Q2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAg
IGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUo
KSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRi
MjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAg
LTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQog
ICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUy
ZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVt
bwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBw
b2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUw
Y2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3Mi4uNjM5OWFmZDE2ZWQ4MzMxYWIy
Mzg4OGJiYTY5NmE3MGQ4NzI4ZmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBz
dGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVm
ZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNl
QnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBy
ZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtM
b2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApA
QCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVx
dWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3lu
Y2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9w
YXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBj
b25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNv
bHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9
PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAg
ICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1
ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lv
bnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhp
bXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIw
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwog
ICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRh
LT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgp
ID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhI
UihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25z
ZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3Bh
cmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFN
YXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4
ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBp
ZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAg
IG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJlc2V0
KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAg
ICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJp
ZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVy
U2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVy
U2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIu
Z2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7
CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJu
OwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQg
LTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVu
Z3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Cisg
ICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERh
dGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWRE
YXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1Rp
bWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBs
eVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWRE
YXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNo
cm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0
KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmICht
X2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQ
YXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUu
Ci0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAg
ICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNl
TG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2LDE1ICsxMjU4LDE1IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQo
KQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7
Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRh
LT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9
LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQo
KSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVk
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5
KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEy
ODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2Fj
aGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2li
bGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAg
ICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3Jp
bmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEsMTIgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9z
c09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5l
Y3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAg
ICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9y
aW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVm
ZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwg
V1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7Cisg
ICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+
Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50
cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFi
bGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCks
IG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJl
ZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNl
SGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRh
YjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3
MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAg
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAg
ICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWdu
ZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9u
b3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQ
dHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlG
b3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxT
ZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBjZjZj
NmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4OTljMWMwMmQw
ZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9k
eUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFl
YjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7
Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVz
aW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAgICAg
dm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTEx
MmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4
NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQot
ICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCks
IHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0
Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEy
NTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4
MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJ
bmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAg
IFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6
OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0
YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpA
QCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNv
bnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVj
b3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2Uu
Ym9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJv
ZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5
LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUw
NTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29k
ZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZl
cigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1
ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUo
KSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVy
LT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhl
YWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
aW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZDQzYzA4OWQ2
MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJl
CiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25z
ZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0
cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2
YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsg
Ly8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2Fj
aGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFCiAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1v
cnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVf
dCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApA
QCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRDb21w
bGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUo
bV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29w
eVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50cnkg
PSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAg
Ly8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAg
ICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQo
bV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92
ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdj
ZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwor
ICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Owog
ICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmlu
ZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMuLmY2MzNmZmZlYTQ4
ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE3
NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwo
c3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAgICAgbV9y
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJlbnRSZXF1
ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAgIGF1
dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQt
PmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihn
X21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsKICAgICBk
aXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZk
OGNlY2UzZmNmNGNiMzNlZjcxLi4yOWY3MWQ3ZTZkYzc1MGVmMTlmMzI4NjJjODliNzE4NWUwM2Jm
ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNo
YXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6
ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1
ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmU5
Y2Q4NzJmOGQ0NGYxNWUwZWUzN2M3MzQ5MmIyZDgwMmFjOTA3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTM5LDE4ICszOSwxOSBAQCBj
bGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkg
PSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkg
eyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYw
LDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQy
NDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2
NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJu
IHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVh
dGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6
ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAg
ICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNk
NzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFm
ODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgK
QEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0K
IApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBw
YWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7
CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6
ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4
IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5
ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVs
ZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRh
dGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5j
cmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hp
dmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAg
ICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VE
YXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3
ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2
ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5
LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVj
ZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2Ny
aWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZv
bnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52
YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBh
dXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1
b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247
CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0
ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTlj
MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBA
IC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xP
RyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNp
emUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAK
LSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAg
IHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkg
eyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9
OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQx
MjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBi
b29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAq
dGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYg
eyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAg
UmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjpt
YXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUx
ZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdy
YXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1f
c2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRj
Li42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEs
NyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAg
ICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsK
LSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRs
ZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBl
cy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDks
NyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNv
ZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3Rv
cjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9y
ICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAg
IHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01D
YWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNh
CiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29k
ZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29y
ZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwog
ICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9
LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBA
QCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAg
LTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1
ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2
YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURh
dGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0
ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50
aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRl
bnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6
Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAh
YnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorewor
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6
Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRy
KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwg
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIz
LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlw
dEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1
ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0
YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4
Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNz
IEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4g
ZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+
IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
cj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3
YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEw
ICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNl
bGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
IChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4o
KmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBs
YWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJk
ZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJn
dW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBs
YXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAg
aWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNv
ZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1
YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywx
MiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVu
Y2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMz
Li5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JK
Q19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNs
b3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2Ug
PSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAg
ICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6
OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1l
bnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcAppbmRleCAzNmE2ZjRmYjA3ZjBhYjlkZGM3YTQ2MThmZWQ0MjJlYzM4OTc0
MDM1Li4yZjQ0OGE3NjM5MjdlMDJlY2MxNTk3NTYwMmM5MDFiNzE5YTFhNjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAg
IGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29u
c3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29s
KFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2Ey
NWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNj
YTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29s
IEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAm
JiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBw
ZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNl
cmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
c2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUp
Cit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBh
Z2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1NGNmYWRmN2ZlZTNiZjFiN2Mw
ZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBiNTIxYjdkODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3
ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFw
cEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0
ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBh
ZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGln
aHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7
CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2Nd
IGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhp
Z2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtk
ZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgp
IGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1
ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVk
SW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0
NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBA
IC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQm
JiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxl
bmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0
YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0
aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7
CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3Ro
KSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMx
YzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFl
M2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
CiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcyNzc0ZTI2OTY1YjJkYmIy
YTczNWUuLmJlMTQzNzBkZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRhNWY1YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29h
Lm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBv
bmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJh
dGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRv
cHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9
IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlv
bkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgp
KTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25z
dW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7
CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICB3
ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50
UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAg
ICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4u
NjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBA
IGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2Fy
ZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5k
ZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQog
ICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlw
ZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBz
ZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlw
ZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcg
KzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJD
b3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBl
cyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJk
KTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJj
aGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2
ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0
YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBl
IGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRh
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5k
YXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBt
X3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkp
CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0
Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3
IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERl
c3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsK
IAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJ
bWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJ
bWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlh
dGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmlu
ZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFz
dGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEg
PSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgp
KS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRB
Y2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAg
ICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRl
ZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVj
N2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZl
MzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
QEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdF
bGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBO
YXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xp
YnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wg
aGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpS
b3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVE
b3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmll
cikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YTgzMmU1
NWFjYmExODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li45ZmYyM2E4NjZmZjBkODYyNzUxODVi
ZjYyOWYxYTQ3NmNmNGZlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nl
c3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9r
ZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwog
ICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Np
c3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlm
NmM0N2JlZjA1MWQ4MGMxNmJkMS4uNTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3NjcwMzU0ZmVh
ZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAK
QEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJV
UkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcmVxdWVz
dChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5mbyhBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAmcGFnZSkpCiAg
ICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxl
cikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
KSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTg3LDEwICsxODgs
NyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAg
ICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAg
bV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNr
OjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlw
ZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAg
ICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkg
fTsKLQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsKKyAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1f
c3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEg
PSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmll
cigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZj
NzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmIwN2MxNDlmZDRkYTE1Y2VlYzRhOGVmZGFhYjdhNWEx
YmU2YWRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBAIC00NCw2ICs0
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJp
dmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhh
bmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBt
X3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
aW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNj
ZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
bnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0No
YXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdl
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0
LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFm
ODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4
OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hh
bmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnko
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNh
dmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZl
cikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFn
ZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYTgxY2Nl
NDQ1NWViMWE3MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNmYmQ5ODQ5Yjg0
YjZlN2FhZmEzNGNmN2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBA
IC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRl
cjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEg
PSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9y
IChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1
bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02
NTk5LDcgKzY1OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRj
aE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0
YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAg
ICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1
ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJl
dHVybiBOTzsKIApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lz
dGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQK
IHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBO
U1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIs
IChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBm
b3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBu
YW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsK
KyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07
CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29u
dmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhh
bmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVkYmM2
Yy4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4
LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRk
OGU2MWI2NmI1OThkYjQ2Li5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
QEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUz
Nzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBA
IC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1
bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0
eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9u
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6
OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsg
cmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4
IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjcz
MTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlk
IDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAg
ICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VU
b1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYg
cmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lk
IGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVn
YXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcK
ICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVs
ZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9j
b250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhh
bmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4g
ZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlw
ZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0
ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1
MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2Jm
Y2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29u
c3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwg
dG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdl
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3
ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2Fy
ZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0g
OiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5z
aXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3Rl
Ym9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZl
NzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5
YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5n
ZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2
b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRp
b25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2
b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3Rl
Ym9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBh
Z2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFu
Z2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBj
YzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5hMzRlMjEyZDA3YWYyZmY1NzNlMWE4YTM0MGVjMWQz
ZmNlYjQyYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGlj
IHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0
YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChX
ZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVm
UHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hh
cmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBB
UEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
Y29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3Vz
QnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0
KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShN
SU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5y
ZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVj
Mzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9k
ZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShm
aWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
ICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCA5NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5YTk4OTU1ZmQ0NDMwLi45OGE2ZTJlN2I1
N2U1MjMxOGY0MmM4Y2QxN2U0ZjBkZTA1MDk0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFy
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hh
cmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0
OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5
NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
bV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5v
dCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAg
aWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+
aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
KHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uNThjMWM5ZmViZmFj
MjVkNTkxZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5W
aWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1
Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50
LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5n
VVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5k
aW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBs
dWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3Ojpt
YW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
CiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxT
dHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0g
ICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAg
ICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAg
ICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5W
aWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmll
dzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQg
fHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51
YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAg
ICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4g
bV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFu
dWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3Ry
ZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51
YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21h
bnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAg
IG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVu
dC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRy
OwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4z
NGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1
YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJl
c3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFt
RGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVj
dHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzVi
YTRkNjA5NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCAr
NzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAg
ICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNw
b25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
cmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkp
CisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAg
ICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCAr
MjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAg
ZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
LSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10o
Y29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVE
YXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAg
ICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFi
MWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZk
YjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4
Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2Fk
ZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVm
PFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJD
b3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNw
b25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0
OGUuLjE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6Ondp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIK
ICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0
ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFu
Z2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2
ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAg
LTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQg
cmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVn
aXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEy
MGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEg
PyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1h
aW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRl
bnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJl
ZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uNmYzZjU2NmM1
MmYxZTM5ZGVmMDBiNWYzMTlmZWJhZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVz
KHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVy
cmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVi
b2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVi
b2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAv
LyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJv
YXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAt
MzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAg
IElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBp
cGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBh
Z2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjcz
MjE0ZmIwLi4zZmYzNTU4MDhlMWQ2ZWIyYWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlk
ZmE1OWY1ZmQxM2M3NTRlMTAuLjc2YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMz
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUs
NyArNDUsNyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZp
bGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0K
LSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZl
ciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKQEAgLTY5
LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0
KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwog
fQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVm
ZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3
Li5hZTA1MGE5OTIzZWE3ZWY5NTU1Y2JhMTcyMGJkMWZmZjZiYzk2ZTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJG
cmFtZTsKQEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxl
TmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIx
N2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAK
ICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVz
cG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGlt
YWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFn
ZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7
CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZl
cigqaW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVs
ZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3Qg
YXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgp
KTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNo
aXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVC
dWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQx
My4uOTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3
IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5l
bmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29u
dGVudHNBc1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYw
YzU3ZTM0NGNhMzZlMzA5Li5mM2VkYzI5MWZkOGFhZmUzZGE4MzBmMGQwNDhkOGFlNWU4MzZiM2Jm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAg
aWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1l
LmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZl
ZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhk
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRp
b246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNh
Y2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0
Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmco
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0
IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6
OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMz
ZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5
YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5
IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQs
IG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5
NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIy
MzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1
LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxT
dHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3
ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJv
YXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5
OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZj
YzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2
YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VE
YXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhk
N2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0K
QEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3Ry
aW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFy
Y2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2
ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJj
aGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUt
PmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFy
Y2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmls
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAx
MTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1h
Z2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVy
LT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtp
dGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1
bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFj
YzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0K
QEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0Nv
ZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVy
CiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwot
ICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRh
dGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWws
ICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAg
ZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRh
dGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3Vy
Y2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5j
b2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAg
ICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAg
ICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0
YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJl
c291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2Vi
UmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JL
ZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRl
eHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIw
Miw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVy
biBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICsz
NjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdp
bmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEg
PSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEo
KSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29y
ZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29k
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6
ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIx
NzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9y
eVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVt
b3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQs
NyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3
IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1
M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVt
b3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Q09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8v
IElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsK
QEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRl
OgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
OwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3Vu
dCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNo
aXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAx
ODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQw
NWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01f
T3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Q0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdl
dCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Q0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdl
dCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3Zl
KGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0
MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
MjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2Rk
ZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01
NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAg
ICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5k
VXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
YXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYw
MzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhS
RVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJl
YW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAot
ICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1
b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJl
cHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24q
KiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZl
ZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3
YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1
LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6
OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0lu
XyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQo
ZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDEx
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9J
bl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBk
b2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0
aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNv
bWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkK
LSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNo
YXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0
YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1v
dmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0
cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNv
ZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2Ez
MGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2Fl
YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpj
cmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJl
c291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAz
Li45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVz
b3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
V2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVz
b3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5r
bm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzk0OGFmMTk4
N2JmZTVhN2MyZjc0MWJiYTYwYzM5ZWEwMjVjZGU4MS4uNjk1ZDY5MTg4NGQxMzgyYTNlOTc2NGQ5
ZTIwNDQ5ZjZlN2RmZTBjMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwog
MjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQg
RmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3
Y2E0NjguLmFkZDI0OGIwZGUyZDJmMTFjNWExZjUyY2E3ZThlZmE5NDkyNzRjMDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1MiArNDMsNDcgQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAg
QVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZp
bGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9O
T1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkp
OwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5p
c0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQ
RUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXpl
KCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0
YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
LXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXIt
PnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBl
bmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBl
bmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1j
bXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZl
ci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6
ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAg
RVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpA
QCAtOTYsMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3RE
YXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3Js
ZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBl
Y3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENv
bmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNiwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigw
eDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZN
b3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hh
cmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBV
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTE1MSwxNyArMTQ2LDUzIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1h
c3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1
cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBh
cmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0
aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
MSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIx
LmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250
YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgp
LgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBB
U1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1l
bWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkp
OwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxl
bmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWls
ZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEu
Y29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxk
ZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpj
bG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVD
VF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7
CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVy
Mi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwor
ICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAg
IGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVY
UEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBT
aGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8g
QnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0
YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIy
LnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIy
LmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0x
NzUsNjAgKzIwNiw3MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2En
LCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdn
JywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsK
LSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIp
KTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7
ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAn
aicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
czIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIg
PSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVE
YXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8g
Z2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNv
bWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAg
YXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamts
ID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRh
KDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAg
ICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBj
b250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCks
ICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOwor
ICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNr
QnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRh
dGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBr
bC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5z
aXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIu
c2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6
ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwor
ICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRy
KCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIg
PSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0g
ICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0
dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkp
OworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZl
cjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVy
MSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9F
UShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChW
ZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVm
ZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdj
JywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYics
ICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtl
QnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQo
KSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50
OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdl
dCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdk
JyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAn
YicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7
ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkp
OworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtl
QnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdh
JyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5n
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNU
X0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVy
LnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1
ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI5MCwxNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxk
ZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRl
ci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzEzLDE1ICszNTUsMTcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90
IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAg
ICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwg
cGVla0RhdGEpCkBAIC0zNTgsMTYgKzQwMiwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIp
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBF
WFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQwNiwxNyAr
NDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVu
a3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1
KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAg
RVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0
KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMz
MzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkz
ZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0
IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAq
ZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7Cisg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciop
aGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJp
ZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERh
dGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZE
YXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBo
ZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9
IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVn
ZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVy
LmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlz
RXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUlu
dGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3
aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNy
ZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hp
bGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFs
VG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0
aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxh
c3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAg
YXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAt
IDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVh
bFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7
CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446130</attachid>
            <date>2021-12-06 23:26:44 -0800</date>
            <delta_ts>2021-12-09 04:54:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211207182642.patch</filename>
            <type>text/plain</type>
            <size>137385</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFlNTI1Y2NmYTZhMzI2
MzU3YTJkZGVkYWNkMWE0NjBmZWQzZGZkZC4uOGIyNGE4MWI3YzNjMzNjMmY0MmY0OTJhZTEyMmM0
NDNmZmY5ZGI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBj
b25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBk
byBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFz
RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291
cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVz
cG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkOWM3MDY4ZmMwMmFkNWFkODg4Y2YyNGYy
NjFlYjAyNDE4ZWNhNDUxLi5hYmYwNTU3OTlkYTUzMTNiMGIyMWE4MGZiNzM1ZDI5YTBmN2I2MGUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0
MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDYzZDAwMjZmMmE2N2E3ZGU1MjQxNmI5ZmFjM2E4MGY5ZDg0YWI2
NTAuLmU4YTZmYjEyMzVmMTc5M2I3YTE0NTJkNDIyNmYyODM3OGViMDM3MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQx
MGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNw
b25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlz
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJv
ZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi4xMWE3M2YzNDVlODJkOWU3MDg1OThh
YTgzM2RlYWVkOGJlYzkzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMTYgKzMyNiwy
MCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
IHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAog
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90
PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRv
IGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShj
b250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50
VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0z
NjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRl
eHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0z
ODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21p
c2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3Vy
Y2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlm
IChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9Cisg
ICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtl
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEy
NjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRl
OgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJl
ZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1
ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVm
NGYxODRjLi44YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4ODhlZDA0NjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAg
ICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQog
ICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
ICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiBy
ZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVs
bCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VS
VCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVy
LT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAg
IG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5
dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFi
ZWU3ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEw
MywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENl
cnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMmYyZTgyYzJiMTdmM2M5NGRlYmYwYTZhNDE4ZjQ0MzNlNGFh
YmQ2YS4uNWViMDY1MzYwYjEwZGY4MWI1NmJlNjk0NzUxZGNkOTMxZTdkYjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklO
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1f
cmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZl
cnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyAr
MTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBt
X2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
bV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDE5ICszMzUsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
LSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJj
ZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQog
ICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitjb25zdCBTaGFy
ZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9yZXNvdXJjZURhdGEtPmlz
TnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNv
dXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0
ZWU0MmI5MTcuLmNmODIxNzRiZThlZDg2N2Q0NzgzZWNhYTEzNmI1NzgzOTJjMjgwYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpA
QCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3Mg
TGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NB
VE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNl
TG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJl
ZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQg
ewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVz
b3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVk
QnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRh
KCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsK
QEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVx
dWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSBy
ZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAg
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAg
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5
MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRm
Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0z
Nyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQor
ICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJv
dGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNm
YmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEy
OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEo
KS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+
YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OS4uYzc3MGQ3NjQx
MzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMzZDFmYzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBA
IC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFT
dGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hl
UmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRh
dGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBm
dWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODczLDEy
ICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1
dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNl
IGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRh
dGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1v
cnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRh
KCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+
c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXgg
YWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uOTkzYzJiOGU4MzBkYzNk
NzVjNWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDggQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFzIGFz
Y2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBBU0NJ
SSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmluZygp
LmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlT
dHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOworICAg
IG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiLCBj
b250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJsLnN0
cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3Ry
aW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEuYXBw
ZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0cmVh
bSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEgPSBy
ZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3Vy
Y2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1
b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQ
cmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERhdGEt
PmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAg
ICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxEYXRh
LmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAgICAg
ICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cgYXMg
aXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JMRnMu
CkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAt
IGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5h
cHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAgICAg
ICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgbWh0
bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAg
ICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAoaW5k
ZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2NpaVN0
cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0gICAg
bWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1sRGF0
YS50YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA3MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjli
NmMzMWQ0MmM1MzJmLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlkOTJmZTg1OGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAg
ICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3Vu
ZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBj
aGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVu
ZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNm
ZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBj
b250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOwor
ICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVh
ZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENo
YXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7
CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVj
aWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAg
ICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgo
KSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUu
bGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBm
b3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2Rl
ciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29udGVu
dC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxy
XG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5MywxMCArMTkz
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZSgpLT5t
YWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0
byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2Rl
KGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFs
aWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTIwNSwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJs
ZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRh
YmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5z
aXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0Ogog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1
b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVu
ZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlk
IGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY2MWE5
OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYuLjkwZDFjNmEyYmE4YzRhNDJlMWZl
YmQ4MDFlNTI4NzgwNTkwMTJiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZm
YjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZm
MzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVs
bHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA2NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2
N2U1M2ZhMmY4YzUwLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9k
eURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBh
cnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9p
ZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5
M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2MTYwY2NhZTQ2
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFs
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7
CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGY2NDMz
M2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MuLmY5YWQ3NzEzYzYwM2E2YTBhNTZi
Y2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2Fj
aGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggMGI3ZWQ5
YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2
MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19B
U1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDcyYzE5
ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUuLjdjMDFjOGNjMjMxMTc4NmM2MjRm
NDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdl
OjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsNyArNTIzLDcgQEAgYm9vbCBDYWNo
ZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAo
TW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRz
KCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZO
ZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5
LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRh
dGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERh
dGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4
NzNiMTI4MzQyZjUuLmQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEy
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAg
IHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRl
SW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsx
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNv
bnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IElt
YWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAg
ICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRl
eCA4NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjLi44NDJiZjVmMjBlMDZm
ZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNE
YXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBhbnkgdXBkYXRlQnVmZmVy
cyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRl
IGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90
aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJj
ZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBt
YXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxs
YmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5
NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1
MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVF
cnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGll
bnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWlu
OwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBt
X2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGRlNzhhY2IyMjEwYTFmZjRlZmE5NmMwNWY4NDkx
OWIyNjVkMDFjYWQuLmNmNGYwMmM1ZDc0MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAt
MzM0LDcgKzMzNCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hl
ZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7
CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcy
OTZmZmU3NTcuLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSAr
MTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVz
b3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNv
dXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGRlNTdmNDA0MDM3MjRj
NTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUuLmIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5
YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1l
bnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5h
bWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUg
bmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYz
NjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5iMDEyYmE5OGVlZGY3MzJjMDgyYzM2
M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQ
dHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKaW5kZXggZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MS4uYjg3
YTNkYjA2ZjAxMTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdW5zaWdu
ZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwog
fQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4u
NzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rlciog
dGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQo
KTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IGFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcx
ZjNiMjQ3MTlhMmEzMmEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKQEAgLTUxLDEzICs1MSwx
MyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2Uo
KnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFj
azo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1
MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICsz
NSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2Rl
ZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7
CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBjMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMy
NWQ4NTJkYTZiMTFmZDMwLi5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFj
ZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVm
YWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQz
ZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAy
ZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJldmll
d0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAK
IGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xv
YWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERh
dGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwog
ICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBt
X2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1
YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLmRiODA2OWNiZjlkYjc1MGViN2MxNzE4NGFiZmMxYzJiM2M1
MDkyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
ZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAg
ICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAg
IG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5lbXB0eSgpOwog
ICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVy
KFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnBy
ZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZl
cnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9y
UHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIp
OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3
ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0g
ZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMp
IH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2
aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmln
aW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRh
IHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPihTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxk
RGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNo
b3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAx
ZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0Yzc5ZGViNTc0NGYy
ODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXIm
IFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQog
CiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjIsNyAr
MjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29u
dmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkg
JiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlk
UmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQu
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0
KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVu
dChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4
Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJD
bGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTIw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3
RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3Rh
dGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCA3ZDg3ZDM5N2EzMmRhMTFjYTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2My
Li4wMWZiYWE5NmY4YTQ1NGZjMmQxMDk2ZmJkY2JhMjQ2MWNjNGZkNjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE3MywxOSArMTczLDYgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KICAgICBi
b29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0jaWYgVVNFKEZPVU5EQVRJ
T04pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCi0j
aWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Ci0j
ZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKLQogICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwpAQCAtMjQxLDYgKzIyOCwyMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgbGVuZ3RoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGVhcigpOworCiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEg
VmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRC
dWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAg
ICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNp
emVfdCBwb3NpdGl0aW9uKSBjb25zdDsKQEAgLTI2NywxMSArMjY4LDYgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5k
IG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4KLSAgICAvLyBXaGVuIGNhbGxl
ZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4KLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOwotCiAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKCkpOyB9CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKCkgY29uc3Q7CkBAIC0yOTgsNiArMjk0LDcxIEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiB9OwogCitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAv
LyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIg
YXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2Ug
Y3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYg
IWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBl
bmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2Fu
dCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1
ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAg
ICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsK
KyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOwor
ICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAg
eworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsg
fQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBl
bXB0eSgpCisgICAgeworICAgICAgICByZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsK
KyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9Cisg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIo
KTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9i
dWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZl
Y3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFz
T25lUmVmKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKaW5kZXggNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1OTI1NC4uYjliODgy
MGE2OTBjOWM2NjQ1MWExZjUyNWY0MTgzOWM4NjJjMWIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNjgsNyArNjgsNiBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXpl
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFH
ZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMzgyOThh
MWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3Yi4uMmFkZGVlN2VlOGI0ZWViODM1ZmE3
MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAt
MTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGlu
aXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpAQCAt
MjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVjayBp
ZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50
IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlk
cy50YWtlKCk7CiAKICAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VD
b250aWd1b3VzKCk7CiAgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgp
OwpAQCAtMjI2LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9i
amVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmlu
ZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+
YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBr
ZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hl
Y2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0
YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5
SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjUxLDgg
KzI1MSw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAKICAgICBvYmplY3QtPnNldEFycmF5
KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBv
YmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0
YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtl
eUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0
dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNs
ZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5
ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApA
QCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCAzMmM1YTY2OGExNmFlNDhl
ZWU4YzlkMzhkYmZmMTMzMDVmZGFjMGIxLi5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIz
MTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRl
KFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMCArMjEz
LDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAK
IHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFt
X2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAg
IG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3Rv
cmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1f
YnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTM4
Nyw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVk
KCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRh
UmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlm
ICghZGF0YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aAppbmRleCA3YmIyNzQzYTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMyYzUwLi42NmUyOTc5
ZTNlY2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVH
T1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19j
YXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoK
LSAgICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpIHsgfQorICAgIEluaXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5
LgogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERh
dGEpCkBAIC01MCwxMyArNDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZF
TF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdv
cnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBk
YXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVl
ZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChh
dXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5j
cmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNl
ZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3Qg
U3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAg
ICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5j
SWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgewor
ICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQo
cGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVs
IGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAg
ICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3Bh
eWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5
bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVy
biBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QK
ICAgICB7CkBAIC05MCw3ICs5Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcg
bV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVt
RXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGU1NjQ3MTIwMDE2
N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3ZDQ0NDQuLmE0MmU1YmM0YWNjZjM3MjJhNWFmOWM5MDU0
NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIy
LDcgKzIyMiw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0
ciBtYXJrZXIpCiAKIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElD
Q1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZm
ZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2Vy
X2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJ
Q0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYs
MTMgQEAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmls
ZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmYKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0g
aWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUp
OworICAgICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAg
ICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLjQ3
ZTViZjVlNTE3NTdjOWE4OGQ1YzMyZjI2YzE2ZTc4MjIzYmI4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4
Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJl
dmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fb3Jp
Z2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92aWRlciB9
CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0NvbnZlcnRl
ckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVl
ZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2Jm
MmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2Nr
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
ZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAg
ICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlw
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5j
NzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAg
KzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0
IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBz
byBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBs
b2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxl
Z2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBA
QCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07
Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBl
bmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkK
IHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdU
Rk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2Uo
KTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNk
YWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAg
ICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVz
cG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAg
ICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVj
dCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRl
VG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0
ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Np
b25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRl
OjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0Rh
dGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3Bv
bnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7
IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVz
b3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVz
dFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0
aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1h
a2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3Qg
YWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0
aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29u
dGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29u
dGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0
YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7
CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAo
IXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rh
c2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIg
eyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1
dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0
byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAg
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+
c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUo
KSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0
aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChk
YXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7Cisg
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgog
ICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4
cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAg
ICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZm
ZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rh
c2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJi
MDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2Ny
aXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlw
dEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRv
U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVh
Y2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVh
Y2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0
cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7
CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJp
bmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpj
b250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9i
dWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+
c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAm
JiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdp
bigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0
QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZl
cikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8g
dXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwg
dXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29u
c3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5k
ZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdmOGM1
MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0
cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlw
dEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZm
ZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0K
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsg
fQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZm
ZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZp
bGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRh
aW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1f
YnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5k
ZXggYTRlMGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNy4uODVlNzYzODNkYWIz
NTNhNGZjNGIwOWQxMjc3MTg1YTAwZTllMjM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVz
dChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUsMTggKzc2LDIzIEBAIHZvaWQg
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9u
cyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAor
eworICAgIHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEt
PmlzTnVsbCgpOworfQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAg
aWYgKG1fZGF0YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAg
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAg
ICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0
YSkgewotICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNv
bnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBp
ZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1
b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSkKKyAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0xMjEsOSArMTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
ICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9k
YXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9k
YXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgw
YmRlZWJjNWM2ZTA0YTFlODYzYzcuLjFiM2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0
NWUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0Owog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9
Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBG
b250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9
OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2
YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1
ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAg
ICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAg
ICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIo
KnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCAr
MjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQog
CiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJv
Y2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQot
ICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVs
bHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgp
LT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9i
Ojpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZ
ZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkg
YmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4
LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJl
c3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25z
ZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAK
LSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAg
ICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJy
YXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZl
cnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERv
Y3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQog
CkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRl
ci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChk
YXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3
Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5
YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxl
LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBU
ZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNl
YXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERv
Y3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9u
c2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTc3ZDY1NmU2N2ZjY2E0NjQwNTBiZmQzNGRh
ZGMyYTM2MjVlMjMwMS4uNjM5OWFmZDE2ZWQ4MzMxYWIyMzg4OGJiYTY5NmE3MGQ4NzI4ZmUwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1Jl
cGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBt
X2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMo
Y29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JD
cmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0z
MDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3Jr
TG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1f
cGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAK
ICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAg
LTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYg
KG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAg
ICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlN
RVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJT
dHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3Ig
bXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBo
YW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCAr
ODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsK
KyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1p
dCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRl
IHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVk
IGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVm
ZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0g
ICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERh
dGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1
ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0
YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwg
LTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7
CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2
LDE1ICsxMjU4LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQo
IW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwog
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICpt
X2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVm
ZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAK
LSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CiB9CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5
U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVz
dCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVF
bnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEs
MTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkK
ICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXND
YWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAg
ICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNl
KSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1h
cHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2Uo
KSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNo
YXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJm
YmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0y
MjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7
IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERh
dGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0
MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdU
aW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVu
aXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRp
bmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4
MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5kNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNj
ZWMxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2
ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAg
aWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJl
YW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUg
PSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAg
ICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8
PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJv
ZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShh
dXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2Fj
aGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYm
IGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3Jp
Z2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUp
KTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdp
bmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwog
ICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRm
MGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCmluZGV4IGY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLjU4NTQ3
ZDg0ODgxZGM4MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNj
aGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwg
V2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVl
c3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBh
cmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtl
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIH0KQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9u
VHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92
ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIg
KzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7
CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0Rh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAg
ICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNw
b25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0
cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9y
ZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2Rk
MGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAK
ICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5n
Rm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1
NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjU4YzFjOWZlYmZhYzI1ZDU5
MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6
UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4m
JiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQo
KSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJl
cXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VS
TFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5W
aWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFt
U3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAg
ICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
LT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00Mzcs
NyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBt
X21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAg
ICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6
d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFt
X3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0
dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUg
PT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFu
dWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJl
c3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3Ry
ZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxT
dHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2Vn
bWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZi
NzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2NkNjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkg
dGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25z
ZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVu
aXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7
CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNo
b3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYw
OTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
d2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBp
ZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VE
YXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3Bv
bnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAg
ICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAg
IHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4
IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpu
dWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZp
bmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAg
ICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0
IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgq
YnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlk
RmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUy
MDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVl
NzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwog
ICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJD
b3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6
Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VE
YXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAz
OWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzZjNjAyODg4MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJh
YzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsg
ZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQg
fQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVm
ZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAt
NjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9h
ZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdl
LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5n
ZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7
CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9i
dWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2Rh
ODcuLmFlMDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YkZyYW1lOwpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2Zp
bGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZm
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42
ZGM0YTQ4NTJhMTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9h
ZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHQKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0
YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBC
U1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RH
IHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05B
TUUpKSkgewpAQCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEo
X0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAg
ICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBi
ZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8v
IG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NF
RURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0
YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6
ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4
dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIu
dGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDZhNGVhNzA5MWYwYzhhZTI3ZmQ3MWEyZjIyNDdlMjdiYjcwNGIyNjAuLjY5
NWQ2OTE4ODRkMTM4MmEzZTk3NjRkOWUyMDQ0OWY2ZTdkZmUwYzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVm
ZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CmluZGV4IGJhYWUyN2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZiZDRmMDUyMmMyMDAuLmFkZDI0OGIw
ZGUyZDJmMTFjNWExZjUyY2E3ZThlZmE5NDkyNzRjMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC03NCwyNCArNzQsMTYgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNv
cHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNUX1RS
VUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgYXV0byBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+
Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9U
UlVFKCFidWZmZXItPmRhdGEoKSk7Ci19Ci0KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBl
bmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91
c0J1ZmZlcik7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1
b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7
Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBz
dHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2En
LCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSldKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkp
OworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTksMTAgKzkxLDEw
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBj
aGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxk
IjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVz
dERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEx
LCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJs
ZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1
aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENv
bmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxl
bihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXIt
PmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExNCwxMCArMTA2
LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdl
U2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3Iy
KSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCkt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBV
ICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9u
ID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTQsMTcg
KzE0Niw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRp
Z25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVl
dCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHBy
b2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3Vs
dXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0g
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0
RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Cisg
ICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRh
dGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAg
IEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgYXV0byBj
bG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBj
bG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBj
bG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAg
ICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxl
bmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xv
bmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5z
aXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWls
ZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1Rf
RVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4o
dGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVy
MS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1w
dHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhh
dmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZm
ZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIu
YXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7
CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5l
bXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBl
eHBlY3RlZCkKQEAgLTE4MiwxOSArMjEwLDIxIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBn
ZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdo
JyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYp
OwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgxMCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwog
ICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9
IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUo
KSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2gi
KTsKQEAgLTIwMyw2ICsyMzMsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURh
dGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNo
ZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsK
ICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVj
a0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CiAgICAgRVhQ
RUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRh
KCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwu
ZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAgLTIxMSwxNiArMjQyLDE4IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0Vx
dWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhf
dD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZv
ciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
dGFrZSgpOwogICAgIH07CiAgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEu
Z2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYics
ICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7
J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVY
UEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2Qn
LCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKICAgICBFWFBFQ1RfRVEobWFrZUJ1
ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicsICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CkBAIC0y
MzAsMTEgKzI2MywxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBi
dWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwot
ICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0g
YnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIp
OwogfQogCkBAIC0yNTUsMTYgKzI5MCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVh
ZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBs
ZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWls
ZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSAr
PSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0g
ICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwot
ICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1M
KQpAQCAtMzE5LDE1ICszNTUsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVz
dCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1
NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNjQsMTYgKzQw
MiwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0
cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxl
VGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShi
dWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRh
a2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxD
aHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQxMiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9
OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4
dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVj
ayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihz
aW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2lt
cGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEo
YnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2lu
Z0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJj
NGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJl
ZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERh
dGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRh
ICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAg
ICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIg
bGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0Rh
dGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBd
LCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBO
U0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEg
XSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdv
cmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjksMzIgKzcwLDMyIEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpo
ZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0
YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVy
LT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJh
eSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNV
SW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0
aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAo
YXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50
IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdt
ZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291
bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENv
dW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVu
dENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsK
LSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShw
b3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7Cisg
ICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVE
YXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEu
Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50Kytd
XSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAg
ICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3Vu
dCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0
ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRT
b21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRl
LmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNB
U0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5z
aXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446521</attachid>
            <date>2021-12-09 04:54:32 -0800</date>
            <delta_ts>2021-12-09 05:30:38 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211209235429.patch</filename>
            <type>text/plain</type>
            <size>517499</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhMDgyNGJiN2M3ODUw
NzRhZjgxMzY1OTEwNjEwMGRiZTNmMDVhMC4uYjVmNDBkMGVhNDE1MmJjMDg4ZWVhNzBjNDkzYzAz
MzY0YTg0ZjRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBBIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBs
YWNlbWVudCB0byBSZWZQdHI8U2hhcmVkQnVmZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbnVsbCBhbmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxv
d2luZyBhIGNhbGwgdG8gcmVzZXQoKSwgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAg
ICAgICAgd2lsbCByZXR1cm4gdHJ1ZSBhcyBvcHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBj
cmVhdGUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6
ZSBvZiAwLgorICAgICAgICBBIG51bGwgU2hhcmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhh
dCBhcHBlbmQgd2FzIG5ldmVyIGNhbGxlZCBvbiBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVt
cHR5IFNoYXJlZEJ1ZmZlcikuCisgICAgICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sg
aWYgdGhlIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGlu
ZyBjb3B5KCkgb3IgdGFrZSgpIGFzIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0
ZWQgaWYKKyAgICAgICAgbm9uZSBleGlzdHMuCisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lv
bnMgd2VyZSBtYWRlIGR1ZSB0byBob3cgU2hhcmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAor
ICAgICAgICBhbmQgdG8gbWluaW1pc2UgdGhlIGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3
b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxk
IGFsd2F5cyBjcmVhdGUgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAg
ICAgIGl0cyBzaXplLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGlu
Y3Rpb24gYmV0d2VlbiBudWxsIGFuZCBwdHkgd291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4K
KworICAgICAgICBXaGlsZSB0aGUgYWltIHdhcyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1
ZmZlciBvbmNlIGJ1aWx0IHdhcyBpbW11dGFibGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3Qg
ZW50aXJlbHkgYWNoaWV2ZWQgYXMgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBS
ZWZQdHIKKyAgICAgICAgdG8gYSBTaGFyZWRCdWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0
byBpdCB0aHJvdWdoIGl0cyBTaGFyZWRCdWZmZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxs
IGltbXV0YWJpbGl0eSBjb3VsZCBiZSBmdWxseSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSBy
ZXR1cm4gYQorICAgICAgICBzaGFsbG93IGNvcHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFw
IG9wZXJhdGlvbi4KKworICAgICAgICBGbHktQnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZp
YSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0
byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291
cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
YXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJj
ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVy
QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFVzZSBlbmQgYml0cyBpbiB0ZXh0IGJveCBp
dGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA3MTc5NDc1ZjdkZmQwOGYxNDhkMDI1ODdlNDBjZmQ1OWIwMWFh
OGRhLi5hYmYwNTU3OTlkYTUzMTNiMGIyMWE4MGZiNzM1ZDI5YTBmN2I2MGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdp
blZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3lu
Y2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
Q29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAg
ICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJj
aGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlX
cmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBl
c0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRy
eT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQ
STo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAg
ICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6
OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJv
cHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVz
dERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAg
ICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6
cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVs
ZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291
cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToK
KwogMjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBh
bmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzZhYTZhYWY4
NGRlYjA4MmU0Yzg0MzIyNDkzMzgwZDgzM2RlOTJkMS4uZjgwOGU5MDVhYmQ1MDJiOWUyOTAzOTYy
YzE0N2Y1OWQ3OWJkM2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29u
dGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUz
MzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIERP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQg
ZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRN
TFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhD
b2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMiAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgbmF2aWdh
dG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
MDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1NDcyNDdjYy4uZThhNmZiMTIzNWYxNzkz
YjdhMTQ1MmQ0MjI2ZjI4Mzc4ZWIwMzcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICBy
ZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisK
KzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3Vz
IG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWVtb3J5U3Ry
ZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAg
KE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5o
OgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAg
KiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIgTG9jayBBUEkgd29yayBhY3Jvc3MgbXVs
dGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5Yzkw
NzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3
LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVt
VHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2Fu
aXRpemU7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3Vw
VG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVh
ZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0Ns
aXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMy
OGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAg
aWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkK
ICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZl
Y3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEu
bGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdl
NWJmLi5mNDEwYWFiMTUxN2UzOTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7
CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFn
ZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZv
clByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAg
YXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBb
cmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVU
eXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFh
MDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZj
MzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3Qg
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNo
ZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNo
T24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBy
ZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7
CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2
NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi5kYjNjMTM2NDY5NDliNWNmODRlZjkyMzM1ZWYxNDEwYWE1
NDk2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAt
Mjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+
JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3Jk
KHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwog
Ci0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hh
bmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2
ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3Np
dGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNw
b25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRh
c2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0y
OTksMTUgKzI5OSwxNSBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZv
PiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9u
c2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRk
UmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtlKCktPm1ha2VD
b250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hlZFJlc291cmNl
UmVxdWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpw
dXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJl
ZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2Us
IEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQg
RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4m
JiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYm
IHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9
IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTgsNyAr
MzE4LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpS
ZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVs
ZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1
dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3Vs
dCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3Vs
dCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBp
ZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJl
c3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVC
b2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9
IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2
aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3Bv
bnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNw
b25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
IAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAg
ICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNv
bGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1
ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNl
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5y
ZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0
YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3
Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRj
aFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAg
dm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8
RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0
cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4
OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0x
MzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShj
b25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAg
cmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVm
ZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJl
ZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSBy
ZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3Bv
bnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsg
fTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNl
Qm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9k
eSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZj
MTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyAr
NTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2Fj
aGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRp
b25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25z
dCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlP
cHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VC
b2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5
KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmlu
ZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQx
OTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAt
NjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlk
cy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8g
dmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBA
IC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5
aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6
T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVh
dGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAg
ICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5n
KGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3Zl
KGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3Ry
aW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMy
MmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0
YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0
aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8
IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
ICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFz
dGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7
CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtl
eUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZl
clNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRl
eCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+
ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmly
c3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlh
bnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVm
ZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJl
M2IxLi5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAg
dm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEo
RmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7
CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZm
ZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVm
ZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBu
dWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRh
IGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3
Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEo
KSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2Fz
dDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29u
c3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZl
dGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVy
ID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAg
ICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2Vu
RGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAK
ICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShV
VEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShV
VEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNC
b2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5l
bmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVm
ZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5
dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0
ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VB
ZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
aW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAw
NDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0
cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0
YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBU
YWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4m
JiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2Rm
Njk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uYzE4YjE4ODNjMWU0YmYzZDUxOGI5YTFmYjg0
YWVmOGFlMmU2MTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZm
ZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJv
bWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNr
KCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAg
IGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3Npbmsg
PSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5
cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5r
ID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5
cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwg
Y2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5
cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAg
ICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcm
IGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpG
b3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBi
dWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRl
eHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBw
cm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAt
MzI0LDI2ICszMjYsMjUgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZl
ci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkK
K3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5yZXNldCgp
OworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlm
ICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxw
dHIsIDApOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFr
ZSgpOworfQogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZm
ZXI7CitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsK
IH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUyLDcgQEAgUmVmPEJsb2I+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0
LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVu
dFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVs
bHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVy
biBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7Cisg
ICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3RE
YXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQpAQCAtMzYyLDggKzM2MSw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1f
YnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgz
LDEwICszODIsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNl
KCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNl
PiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAo
bV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAg
IGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZUFz
QXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWls
ZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFh
MDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFh
Zjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsg
fQorICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRh
a2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBl
IG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJl
ZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRh
YmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9k
eVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2
NGYyLi5iOTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0
MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVu
ayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
IFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9Owog
ICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1
aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7
CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAg
ICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7
CiAgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0
MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJi
YzJkMTY2NmM2YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZl
ZWRTdHJlYW0oKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcg
UmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OwogICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9k
eURhdGEoUmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4
IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdh
MzY4NDBmMTFiOTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+
c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRh
dGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNp
emUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmlu
ZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAw
N2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAt
NDYsNyArNDYsOCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9
IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29k
ZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAg
c3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+
PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJh
MmMxZmMzMjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5
ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBl
IHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9
IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMg
dm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBr
ZXkpCiAgICAgfQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBz
ZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBl
bmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRh
JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIz
MWM4YzU0MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZh
YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3Rk
OjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYpOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEm
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcAppbmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2Nk
OGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJ
bmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAg
IHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRo
QmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5
UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAo
IWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0
IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURC
S2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRh
dGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGlu
IGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNo
YW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAg
YXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwog
ICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGgg
dG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNv
bnN0IElEQkluZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFz
ZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQog
ewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1
dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShp
bmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
aW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFi
YXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3Mg
fTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYg
KCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0
cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0
b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3Jl
Il9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAg
QVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5
KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRv
IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURh
dGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4g
YSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1
dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtl
eUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3Rv
cmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAg
IGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJL
ZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXku
aXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
KyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
ICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5k
ZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVk
REI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWlu
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAg
ICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29r
IHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5
ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5n
ZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0
aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5Lmlz
TnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVy
S2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktl
eSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
Q3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2
Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
Q3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5k
QXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJL
ZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dl
cktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50
KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5k
UmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJn
dW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXgg
ZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdk
MGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
cjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3Ig
KGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVm
ZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7
CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Ns
b3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJk
YmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZv
aWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZl
cmVkTWVzc2FnZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRC
dWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVS
YXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAg
ICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2Vp
dmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFu
Z2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIx
MjI0MDliMWY4OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVt
ZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVy
bDsKIAotICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9k
YXRhQ29tcGxldGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyAr
MTQ5LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1
cmwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291
cmNlLnZhbHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4
ICsxODAsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5h
cHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVu
Z3RoKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyAr
MTk0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291
cmNlLmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgbV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFu
ZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1f
bW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNv
dXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpj
cmVhdGUobV9kYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWlt
ZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxl
QW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3
YTBhZTQ2NWI2MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQx
ZTZlODU4MDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToK
IAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21v
ZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJv
b2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRN
b2RlbExvYWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQy
Y2QzNzc3Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6
Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFT
U0VSVChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVf
dCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNv
dXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNp
emVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5zaXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0g
bW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTVi
ODUuLjg1MTQ3YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3
ICs0NzUsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBGb3JtRGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9i
amVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxP
YmplY3QpOwogICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4
IGM0NTJjODNmYmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1
MjE2NDI2ODk4ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUx
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1
b3VzQnVmZmVyICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJ
SSkpCisgICAgICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJ
KSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3Rl
cnNBcmVBbGxBU0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkp
Ci0gICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2gg
PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAg
fQogICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4g
eyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7
IG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2Ny
aXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0
QnVmZmVyLnRvU3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAg
ICAgbV9jb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05
MSw2ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0
QnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29u
dGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsK
ICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0
NzUyNjU2MGJhZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3
IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
ICAgICAgICAgICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAg
ICAgICAgICAgICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdG
b250RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAg
ICAgICAgICAgIGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVt
ZW50KSkKLSAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAg
ICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVy
YXRlZE9URkJ1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21Q
bGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9U
RkJ1ZmZlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsx
NzYsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICAgICAgfSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNT
RVJUKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9v
bCB3cmFwcGluZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVz
cygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNv
dXJjZS0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQo
KSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2Fz
dDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVs
c2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJh
OGVlNWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQz
MWUzNjIzMjc4NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApA
QCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNl
OwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7
CkBAIC00Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2Vs
ZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7
CiBjbGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRU
YWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBA
IHByaXZhdGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAv
LyBGb3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90
ZSBmb250cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0
ODFlZTcyNGNiNzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGEx
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFBy
b21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBh
ZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRp
dGlvbmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxE
YXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYz
ZjI2YTcxYjQ3MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5
ZmZhMmFiOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBj
bGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3Np
dGVFZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0
b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247
CkBAIC01MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5
RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlz
ZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9y
PFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRh
KTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5
LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRT
ZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0
cmluZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBp
bWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0
aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsK
LSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmli
dXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0
aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApp
bmRleCBmMzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNk
ODU2ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewog
ICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9FZGl0b3JDb2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5
OTE0YWFiLi5kMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwx
MiBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
Rm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChf
X2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNo
aXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRl
ZFN0cmluZykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWRE
YXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJp
bmcpCiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNo
aXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9v
dE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6
bnVsbHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpA
QCAtODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3Rl
Ym9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxT
dHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkK
K3ZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVt
ZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdl
ID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05
OSw3ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAg
ICAgICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkg
ewogICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7
Ci0gICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSkpOworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24o
UGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9h
cmRXcml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJj
aGl2ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlRnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlv
bigpLmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRU
ZXh0Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJp
bmcgRWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4g
V1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0
cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5n
Lmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3Vt
ZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0
YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmlu
ZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmlu
ZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IGQ0OGUxMWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5
ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRN
TENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5T
VVJMICp1cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5z
dWJyZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNl
LT5taW1lVHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlw
ZSAhPSAidGV4dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmls
ZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVk
RmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwog
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0y
MzAwLDcgKzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFw
cGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFT
b3VyY2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0g
ZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJl
c291cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAo
IWZpbGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFt
ZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3Vy
Y2UtPm1pbWVUeXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxO
U0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxl
bWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNo
ZWRJbWFnZSgpKSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNh
Y2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVk
QnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hh
cmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
IH0KIAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpp
bmRleCA2YWEzY2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMy
OTYzMDVkNjBjNjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4
NSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFt
ZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvIHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29u
dGVudFR5cGU7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2lu
YWxFbGVtZW50OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2Ug
PSByZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAog
ICAgIGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICsz
MzIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRh
Y2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFs
dWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCks
IGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNP
ZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBA
IHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJh
bWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9u
SW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCks
IHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0
IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvKSB7CkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5k
QXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBp
ZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOCht
YWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSks
IG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkg
fTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxl
YXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBB
bmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3Ms
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBl
QXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBX
aXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAg
ICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250
ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0
YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1
cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1l
TWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1h
aW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAg
ICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1l
LCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRp
c2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBp
ZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRv
IHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
RDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7Cisg
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJh
Z21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZy
YW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1
dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5n
LmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
NTcsNyArNjU3LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0
cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNl
YmMyNjdjNjc2MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYy
ZGE0YjE5MmJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAg
LTE2NiwxNSArMTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJk
KE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCkt
PnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVu
dCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNo
aXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRp
b24oKS5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRl
cmZhY2UgdG8gdGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRl
ciBvZmYgd2l0aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywg
dGhpcyBpcyBvbmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dL
VmlldyB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVz
ZWQgdG8gc3VwcG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVk
MWNjYjNkZWU4YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYs
OSArMjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBl
bmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVu
YW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9
PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZp
ZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMg
aW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNv
bnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBz
ZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZl
cikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5n
dGggJXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3
ICsyODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBs
YXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3Rv
cnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBT
aGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVu
dERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRl
RG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBG
SVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmlj
aWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8v
IHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHki
IGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRl
eCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5jNjg3NzJhZmI2MjRj
ODMzNmU4MTg1ZTM1MmM2OWQ2OTk2NjY5NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck5ldHdvcmtBZ2VudC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAKQEAgLTYzLDggKzYyLDggQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgdW5zaWduZWQgcmVzdWx0ID0g
MDsKICAgICBpZiAoaGFzRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsK
LSAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci5zaXplKCk7Cisg
ICAgICAgIG1fZGF0YUJ1ZmZlci5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50
KCkpIHsKQEAgLTgxLDM2ICs4MCwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7
CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICEhbV9kYXRhQnVmZmVyOworfQorCiBzaXplX3QgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1
cm4gbV9kYXRhQnVmZmVyLnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1
ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
ZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXIuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgp
OwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNv
ZGVEYXRhVG9Db250ZW50KCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAKLSAgICBz
aXplX3QgZGF0YUxlbmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gYnVmZmVy
ID0gbV9kYXRhQnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAg
ICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAg
ICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRy
dWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZl
ci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0
YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkg
LSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1
OTA4ZDcuLjA0YjM1NTA3MzM3YzhiODYxYjM4M2Q4ODEzZGMwM2YyYTM4OTE3MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMCw2
ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC0xMDMs
MTAgKzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1w
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAgICB2b2lkIHNl
dFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9
IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzRGF0YSgp
IGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2b2lk
IGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
ICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksNyArMTIwLDcgQEAg
cHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgICAgICBTdHJp
bmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVj
b2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOworICAgICAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YUJ1ZmZlcjsKICAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZv
PiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVz
b3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyZmJj
NTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3
NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTQwNywxMiArMTQwNywxMiBAQCBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAg
YXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2Rlcihy
ZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUo
KSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJl
c3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0
cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0Mzdk
ZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAz
ZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBib29s
IEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJv
b2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9y
UGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZy
YW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwor
ICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVu
Y29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1
ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0
RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRh
Q29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMw
YzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEy
MjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBA
IC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRh
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6
QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VC
dWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNv
dXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQ
YWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0
NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
cjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVz
b3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxp
Z2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVy
cmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVy
LmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJlc291cmNlU3luY2hyb25vdXNseShw
cmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRG
b3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRh
dGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4
NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2
ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5
YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUp
OwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWlu
UmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hp
dmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9
IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRN
SU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+
ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwg
bWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNo
aXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxp
dmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFy
c2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRM
b2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXJzZWRB
cmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9h
ZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwot
ICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0
SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBm
YmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcy
ZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpA
QCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFs
bEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
QXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxBcmNo
aXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURh
dGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hl
ZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247
CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFy
Y2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hp
dmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hp
dmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRL
bm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdj
ODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2OGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5t
YXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMu
c25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBjMDg3ODVhZjhmYzky
NGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0Li45ZTlmMjk0NjcyZjNkNjIyNTAzYjFlNTViMTc5
NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2Vs
ZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNG
b3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQp
IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1NjYx
MDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2
Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7
CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRl
bnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBv
cHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Q2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRj
aE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2Zy
YW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5Ojpn
ZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3ko
KSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMxNDksNyArMzE0OSw3
IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIo
KS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVx
dWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBkYXRhID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAg
ICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAg
ICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9h
ZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlz
U2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9h
ZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5
MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNo
ZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBj
bGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NV3Jh
cHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTc2
LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogZW51bSBjbGFzcyBD
YWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3Qg
SFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRl
bnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9u
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0IFJlZmVycmVy
UG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdG
cmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25s
b2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9
LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0
KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0g
bnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6
bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBh
YTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li5iODQ5MWFiMzBlNDhjNzMx
NmI4ODgxYmJkMzljZjA0YTFjNGY2YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgpAQCAtMTE4LDcgKzExNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNv
dXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0gICAgbV9yZXNvdXJjZURhdGEg
PSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJl
cXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMzE4LDcgKzMxNyw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGlj
eSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBk
YXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6Ondp
bGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzMywyNCBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQ
YXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAg
bV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVz
b3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXls
b2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKKwogICAg
IGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7Cisg
ICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisKK2NvbnN0IFNoYXJlZEJ1ZmZlciogUmVz
b3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb3Vy
Y2VEYXRhLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291
cmNlRGF0YSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNl
RGF0YS0+Y2xlYXIoKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEuZW1wdHkoKTsKIH0KIAogYm9v
bCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CkBAIC01NzEsNyAr
NTcwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRv
ZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4g
aW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2Fs
IGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJh
Y2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEo
KSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxp
bnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYw
YmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li4zN2Q2NjdkODM3NmQwMGRhNzg5NDYy
ZGNjZTFhZGIzMzY4ODlmZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyVHlwZXMuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVk
QnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQo
KTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAg
dm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJl
c291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0yMjcsNyArMjI4LDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2lu
YWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fcmVzb3VyY2VEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9yZXNvdXJjZURhdGE7
CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5
ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1
ZmE2OTM4OGJlZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLjM0NGNhOTgy
ODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAg
ICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1f
ZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVh
cigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291
cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNw
b25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3Bv
bnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291
cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
VVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMz
OWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkw
MzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAg
ICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZl
c3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAg
ICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRp
bmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29u
IGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4g
RG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRl
eCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2
NWVmNGNlMjMyNjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiAr
MjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBT
dHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJj
ZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZy
b21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8v
IEZJWE1FOiBDbGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVk
QnVmZmVyLgotICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUg
U2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRo
KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2Uu
cGF0aCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGRhdGEpCiB7CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBp
ZiAoIXNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291
cmNlKSkKQEAgLTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXli
ZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJh
Y2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0
cyBpbiBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNh
dGl2ZSBvZiBhIGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9y
IGVxdWl2YWxlbnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0
IG5vdCBpZiB0aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0
LCBmcm9tIHRoZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAt
MjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNh
Y2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJl
c3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xp
ZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAg
ICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFy
ZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3Vy
Y2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNk
MTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1
OTI4ZDNlZDc1NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNo
ZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpA
QCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJl
TG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVy
cm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBt
YXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJj
ZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAg
Ym9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJy
b3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7
CisgICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2Fj
aGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRl
ZjhlNDFkYzVkMGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4
Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291
cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmRE
YXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEo
KS5tYWtlQ29udGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2
YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1f
YXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5
OTAyNDBhNTIwYmQzMGU2MzY1OTUuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2Qx
ZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVz
b3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkg
VkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJj
ZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAg
ICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhl
Y3V0ZUNvbW1hbmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5z
aWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFs
dWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNj
ZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAv
LyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBs
YXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5
KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2Ut
PmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAg
IHJldHVybiB0cnVlOwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2Fj
aGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlE
KQogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50
KDEpOwogCiAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2Fj
aGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBh
dXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtbkJsb2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0
YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcAppbmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVj
NGRkNjdmN2RmOGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAs
NyArOTAsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEg
Y2FuIGJlIGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFS
ZWYKICAgICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0
YUtleSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBk
YXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJl
c291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2Ut
PnVybCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlM
aXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSBy
ZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7
CiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlM
aXN0UmVwcmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2Vi
QXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsK
ICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMg
KzIxNSwxMyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9m
IHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8g
cmVzb3VyY2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9u
c2VWZXJzaW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBD
RkdldFR5cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQo
KSkgewogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291
cmNlIHJlc3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVh
dGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3Bv
bnNlRnJvbVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVz
cG9uc2VWZXJzaW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
KQogUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25z
dCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxM
ZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpOwogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgCisKICAgICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rp
b25hcnlSZWY+KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBr
Q0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7
CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIm
IGRhdGEKICAgICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0g
Q0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENG
RGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlz
dC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAg
Ym9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENG
RGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNl
RGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICgh
bWFpblJlc291cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gTm8gbWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFy
Y2hpdmUiKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBpZiAoYXV0byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkp
CiAgICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hp
dmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAg
TE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBl
eHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAor
CiAgICAgICAgICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAg
ICAgaWYgKHN1YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAg
ICAgICAgIGFkZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAt
MzYxLDcgKzM2MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lX
ZWJBcmNoaXZlIC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAg
fQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcg
QEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1l
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNl
VVJMID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhh
dmUgYSByZXNwb25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0v
NTQ1NDkzNT4KICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcg
QEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21T
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgp
KQogICAgICAgICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBm
cmFtZXNldCBkb2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAg
ICAgLy8gYW5vdGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNl
dCBvZiBpdHMgb3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1l
Ym9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9
XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNo
aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHAKaW5kZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uOTkz
YzJiOGU4MzBkYzNkNzVjNWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIs
OCArMTYyLDggQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1M
RGF0YShQYWdlKiBwYWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBh
c2NpaSgpIGFzIGFzY2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBo
YXZlIHB1dCBBU0NJSSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpLmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRh
dGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0
bWxEYXRhOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0
cmluZy5sZW5ndGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7
CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJl
ZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFn
ZSkKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVu
Y29kaW5nOiAiLCBjb250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVz
b3VyY2UudXJsLnN0cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBw
ZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBt
aHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVu
dCBhcyBhIHN0cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1
dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVu
Z3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50
RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERh
dGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUo
KSk7Ci0gICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAg
ICAgbWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUo
KSk7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2
NCkpOwogICAgICAgICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRy
dWUgYmVsb3cgYXMgaXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVx
dWlyZXMgQ1JMRnMuCkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRN
TEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBk
byB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVk
RGF0YUxlbmd0aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAg
bWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgp
OwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAg
ICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGlu
ZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwog
ICAgICAgICAgICAgICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAg
fSB3aGlsZSAoaW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAK
ICAgICBhc2NpaVN0cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51
dGY4KCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0
cmluZy5sZW5ndGgoKSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCks
IGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0
dXJuIG1odG1sRGF0YS50YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2Fj
OTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi40MDI1Yjk4MGU1ZWU2ODJkYjA3NjJhZmE4NmVjYTlk
OTJmZTg1OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9m
RG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAg
Y29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsK
ICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5j
b250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0
LDcgKzE1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5l
eHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5kKFdURk1v
dmUocGFydCkpOworICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKICAgICAg
ICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJz
LCAyKSAhPSAyKSB7CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVy
LAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8g
Tm90ZSB0aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBhcyBhc2Np
aSB0dXJucyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQuLi4pIGlu
dG8gJz8nLgotICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwg
bGluZS5sZW5ndGgoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5k
YXRhKCksIGxpbmUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVu
dFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUpIHsKICAg
ICAgICAgICAgICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdl
IG5lZWQgdGhlbSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90ZWRQcmlu
dGFibGUgZGVjb2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAgICAgICAg
ICAgICAgY29udGVudC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgY29udGVu
dC5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg
LTE5Myw5ICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVu
dC50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRl
bnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewot
ICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29k
ZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZh
bGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFi
bGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgp
LCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2Rl
KGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2Ug
TUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5kYXRhKCks
IGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50
LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1M
IHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRl
bnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRv
IGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJl
IHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3Bl
Y3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBz
ZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRl
eCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li45MGQxYzZhMmJhOGM0
YTQyZTFmZWJkODAxZTUyODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwx
MiArNDAsMTYgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
ICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEw
NzljNTY0ZWVmZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0
NjY1Yzc1OTE2ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9j
ZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3Vt
ZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291
cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQy
Zjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2Ey
NDQzMDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50
LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2Fj
aGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNl
IHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZy
b20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFy
c2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewot
ICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rpbmcg
YW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5k
IG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBj
aGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7Cisg
ICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwog
ICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVl
ZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXgg
NWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4
NzU0MGY0NjRiOWU1NjE2MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcg
ZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0
ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgp
OyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0
Li5mOWFkNzcxM2M2MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
ICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRl
ZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
Rm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcg
Kzk1LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBj
b25zdAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwog
fQogCi1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAm
JiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJv
b2wgd3JhcHBpbmc7CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYg
Ynl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRl
Q3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZl
ciB7ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBw
aW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4g
YnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xs
ZWN0aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250
OjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xv
YWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUg
KENhY2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVu
dC0+Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAppbmRleCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4xNTRk
YjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlh
dGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRv
bVN0cmluZyYgcmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
biwgYm9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3Jt
RGF0YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250
ZXh0Jik7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0
YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBi
b29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBl
bnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAt
NzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2Rl
MDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1
ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKQEAgLTQ2OCw5ICs0NjgsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFn
ZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
LSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7
CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBk
YXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0g
bV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFj
a29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hl
ZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0
YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAg
aWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlw
dFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0
RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNj
cmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0
KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNh
bmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3Jp
cHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBA
IEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1
cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2b2lkIENhY2hl
ZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAg
aWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApp
bmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li5kNTEzZTE2Y2Jh
NWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2Ut
Pmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsg
fQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUg
ewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVy
VXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAg
RW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
ICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdl
ZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcklu
dGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29u
c3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250
ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3
ZjE4Mzk1NjJmLi44NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0
YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
Ly8gU2tpcCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMu
IFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlm
IChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1h
a2VDb250aWd1b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6
ZSgpOwogICAgIHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTk2
LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURh
dGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYg
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJl
IHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUg
ZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0
YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0g
ICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRh
ID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1l
bnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAg
ICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmlu
ZGV4IDg0ZTBkODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEw
MGRjMDlhZGYyNmVjNGNiYWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYp
IGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQg
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwot
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZEln
bm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3cs
IDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNv
bnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxh
eWVkRmluaXNoTG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQy
NWNkZGQxODAyMDkyMmY1ZWRiMjRkNGI5MTIwMDAyLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4
YWM3ZmE3M2FmNjE2Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpj
aGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNs
aWVudC0+bm90aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBA
IC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiwgdW5zaWduZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3Qg
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAg
IHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTEzLDcg
KzkxMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRy
eVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVk
UmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBu
ZXdCdWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw4
ICs5MjcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJiBuZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQo
bmV3QnVmZmVyKTsKKyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBs
YWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgx
M2U2YzAzNWJjMjc4Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEy
LDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVy
biBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVk
UmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVy
KiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0
ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7
IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
OwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JM
b2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVk
OgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAv
LyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1f
bG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1Rp
bWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBp
biB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4
MzkuLmIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIs
MTIgKzUyLDEyIEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0
byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVu
dDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAg
ICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudCht
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5n
KGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdm
MTQ3ZWFhLi5iMDEyYmE5OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMs
NyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5
MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5
ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBT
Y3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNj
b3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7Cisg
ICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6
ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAg
ICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4
dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNv
bnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAg
ICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRl
ZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0
cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNi
MDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5
MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCog
bWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252
ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRl
ZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAg
ICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBS
ZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5
YmU0MThmMTdiNjUuLmI4N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niwx
MCArOTYsMTUgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1
cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7
Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChk
YXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENh
Y2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZl
MzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZj
MmM3ZTYzNDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4
IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjU0MjY2ZGQ5MDgxOWMz
NGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4
dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJp
bmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2Rh
dGEgPSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8
Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUxLDEz
IEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgq
dGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hl
ZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNr
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3Qg
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUw
N2FkZC4uZjQ2MzE3ODMyMWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1
LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVk
RGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsK
KyAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3
YTI3ODI2MTVkMzQwMGMuLmI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAKQEAgLTYxLDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6
ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgp
OwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRh
dGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2Fk
aW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0
ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEw
YjllZmFmNDEyNTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291
cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsK
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNl
NTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3
YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNo
YXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYp
OworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJh
Y2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAg
dm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBy
ZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIy
ZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5
ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3Ig
YSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0
Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hh
cmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBj
YWNoZWRSZXNwb25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVN
b25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9u
c2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRh
dGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2Up
OwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9y
RmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJl
c3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1v
bml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAg
X0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNo
ZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAK
LXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1
ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VC
ZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIp
CiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3Vy
Y2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFy
ZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uZmY0
MGM0MTZjYzYxNmU5MmIxMzA3YmFiYjdlMzQzYjM3ZTU0NjAwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVn
YWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwg
cHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFByZXZpZXdD
b252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VM
b2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJ
bnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2Ug
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQu
LjVlZGI0ZDZmYWI5MWViOTA2YTNkZGMzOTE4NGQ1NDVmNWUxYmVmZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTY5LDcgKzY5
LDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBMT0coTmV0
d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxk
LiIsIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQoYnVmZmVyKTsK
KyAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBk
YXRlTWFpblJlc291cmNlKCk7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVy
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZl
cnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVz
cG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRh
LmVtcHR5KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZp
ZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBj
b252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWlu
UmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBt
X2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdldCgpKTsKIH0K
IAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7
CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdM
b2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9h
ZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9u
c2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZl
cnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAg
ICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29y
aWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6ZW1wdHkoKSkgfQogICAgICwgbV9yZXNvdXJjZUxv
YWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcg
eyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmEzNjNiN2IwMmNi
M2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVu
ZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRl
eHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGYzN2QwNTliMGVi
NTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMuLjZkNTFjNWU1MTZhM2RiZmJiNzQ3NmVkOTRi
MDQxZTZlNTZmNzNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1Miw3ICsxOTUyLDcgQEAg
Y29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdo
YXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0
aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1
bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUg
YWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJT
dHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5
bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAxYTEy
MTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5kNzUwY2ZmOTY0MjMwMDUyZjc5
OTVhMjdlODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZy
YW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4
dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3Vy
Y2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50
LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4
dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0p
OwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDog
bm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxp
emVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVu
IHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgVGV4dEVu
Y29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAg
ICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRF
bmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpF
bnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2Nz
cyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUo
Y3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwog
ICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFn
ZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUo
KSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAg
bV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNi
ZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVz
b3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXpl
cihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQy
YzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFj
ZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5
LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcg
ZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFy
ZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEz
ZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAg
LTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhp
bnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAK
KwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAg
ZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSks
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVu
ZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBp
ZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fk
cy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9u
SGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVk
Q29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5
YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIw
YmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVk
RGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBr
ZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFhMTZmMzQy
YzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2ExM2Q3MzkzNGFhMDQzNmVl
N2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2
MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBz
dHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJv
YXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2Fu
U21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5n
IGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBW
ZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29u
dGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2Ug
ewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0Owog
I2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRp
ZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRT
aXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+
JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFk
U3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+
IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJp
dHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVl
MmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1
c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQg
Y3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5
LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8
IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlw
ZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwg
ZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNl
RGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsx
MjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBl
cnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1
ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZh
YmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEg
ewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAx
YzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5hNzg4ZmI3MzBlZGMxYzNl
ZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
YXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+
IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAt
NzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJp
bmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRo
c0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3
Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRX
cml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAg
ICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1M
Rm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUwMDI0M2JiNDZm
ZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIw
ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApA
QCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1
YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZv
cm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgs
IFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRl
eCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li45ZWI0YmRkZjA3Y2Y2
MTY2YTU4NjBiYWMwNzQ2MjZkMjk1YWNiMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiUHJl
dmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKQEAgLTY1LDcgKzY0LDcgQEAgY29uc3Qg
UmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKIAog
Y29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZp
ZXdEYXRhLmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNv
dXJjZSgpCkBAIC0yMjEsOCArMjIwLDggQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlU
b0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgQVNTRVJUKG1fc3Rh
dGUgPj0gU3RhdGU6OkNvbnZlcnRpbmcpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlk
U3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAotICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0
eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRl
ckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICBpZiAoIW1f
cHJldmlld0RhdGEuaXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQorICAgICAgICBjbGll
bnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS5n
ZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xp
ZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNCw3ICsyMzMsNyBAQCB2b2lkIFBy
ZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNs
aWVudCkKICAgICB9CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWRDb252
ZXJ0aW5nKTsKLSAgICBBU1NFUlQoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUKCFtX3ByZXZpZXdEYXRhLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcHJldmlld0Vycm9y
LmlzTnVsbCgpKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcoKnRoaXMpOwogfQpAQCAtMjU2LDcgKzI1NSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6
ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgaWYg
KGRhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByZXZpZXdEYXRhLT5h
cHBlbmQoZGF0YSk7CisgICAgbV9wcmV2aWV3RGF0YS5hcHBlbmQoZGF0YSk7CiAKICAgICBpdGVy
YXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7CiAgICAgICAgIGNsaWVudC5wcmV2aWV3Q29u
dmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkw
YmE2NGNmOGNlMmIuLmYxNGRlMWQ5MTRhNGNiY2ExNWE3NWQ2ZDVlNWUwZGNiNGM0YTlmNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTQxLDggKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwot
Y2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVu
dDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMTcsNyBA
QCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0
YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRB
dHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVm
ZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcg
QEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8
U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4
MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLjkwNjk1ZmIwNTM3YzBhMmFmMGFhNDFkYTIw
ODg2MzU3NTM5MjhkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cApAQCAtMzcsMzEgKzM3LDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEs
IHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworfQor
CitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
KSA9IGRlZmF1bHQ7CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQog
ewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
ZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3Zp
ZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAg
IGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKIH0K
IAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC03MywyNiArOTUsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZl
cikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBw
ZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVm
ZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5
VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZp
bGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBl
ZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFw
cGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBW
ZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArMTA5LDE2IEBAIHN0YXRpYyBWZWN0b3I8
dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0
byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGlu
c3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJl
IGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNv
bWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisg
ICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+
KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRz
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkp
OwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRz
LCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAg
QVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29u
c2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJp
bmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgp
IGNvbnN0CkBAIC0yMDIsMTAgKzE5NCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAg
ICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9z
ZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9z
ZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBt
X3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywxOSArMjA1LDE5IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29u
dGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3Np
emUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAg
IEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFt
X2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9
IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
c2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21l
bnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQu
YmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9u
ZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVs
ZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAg
cmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFy
ZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxj
b25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1f
c2VnbWVudHM7CkBAIC0zNTMsMTIgKzM0MCw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAg
ICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Ci17Ci0g
ICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0g
ZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRCdWZmZXI6OmludGVy
bmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3Miw0MSArMzUzLDEyIEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAg
ICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7
IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0IFJl
dGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBDRkRh
dGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdMSUIpCi0gICAg
ICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5n
ZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAg
W10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAotICAgICAg
ICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRv
ciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRh
KTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5l
ZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4ge3sgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwotfQotCiBib29s
IFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25z
dAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAgLTQ1Niw3ICs0MDgsMTE4IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21l
bnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwor
fQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91
c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7
CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1
b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsg
MCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsK
KyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkK
KyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9
IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVN
YXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9
PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7
CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGlu
Z1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNb
MF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAoreworICAgIHJldHVybiB7IHsgZGF0
YSgpLCBzaXplKCkgfSB9OworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sKKyAgICBkYXRhLnNocmlua1RvRml0KCk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQor
CisjaWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHTElCKQorUmVm
PERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPERhdGFTZWdtZW50PiBEYXRh
U2VnbWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30K
KyNlbmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworY29uc3QgdWludDhf
dCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAoreworICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisjaWYgVVNFKENGKQorICAg
ICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKKyNlbmRpZgorI2lm
IFVTRShHTElCKQorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVz
X2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyNlbmRpZgorI2lmIFVTRShHU1RS
RUFNRVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKKyNlbmRpZgor
ICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KKyAgICApOworICAgIHJldHVybiBz
dGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK2Jvb2wgRGF0YVNlZ21l
bnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURh
dGEpOworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcg
KzUzOCwzMiBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAot
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjpl
bXB0eSgpCit7CisgICAgcmVzZXQoKTsKKyAgICBlbnN1cmVCdWZmZXIoKTsKK30KKworUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSgpCit7CisgICAgZW5zdXJlQnVm
ZmVyKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQor
eworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKG51bGxwdHIsIDApOworICAgIHJldHVybiB0YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKK3sKKyAg
ICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Cit9CisKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50
KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkK
ICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9u
V2l0aGluU2VnbWVudCkKQEAgLTQ4OSwyNiArNTc3LDE2IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIs
IHNpCiB7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6ZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1f
cG9zaXRpb25XaXRoaW5TZWdtZW50OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9
IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2Vn
bWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0
YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgp
XSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4g
c2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIg
YmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3Qg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzYxMiw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAg
YnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi4y
YThhYjY3N2Q2YTA2NzdjYjgzOWNlM2RhMjRmNTcxOWUxNjgzYmU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTI1IEBAIGNsYXNz
IERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVm
ZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRh
YmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRv
IG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4K
K2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdt
ZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNv
bnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCi0jaWYgVVNFKEZPVU5E
QVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAg
UmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNE
YXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNy
ZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Q0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
KTsKICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdS
ZWZQdHI8R0J5dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVz
ZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlm
IHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5n
IGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxs
IHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBp
ZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3Qg
Y2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25z
dDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlp
bmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNo
YXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERh
dGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNo
YXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0
IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRC
dWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAg
ICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248
Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7
CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShQcm92aWRlciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNo
b3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBv
YmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBh
IG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VY
UE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlm
CiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsKLSAgICAgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNNYXBwZWRGaWxl
RGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0
IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlk
ZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRl
cikpIHsgfQogCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlv
bjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+
IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAg
ICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZl
Y3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lm
IFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAg
IEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERh
dGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURh
dGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJv
dmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkg
eyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRl
cj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisgICAg
ZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEK
K307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
aGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJl
dHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUp
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rv
cjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAotICAgICAgICBzdGQ6OnZhcmlh
bnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7Cisj
ZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJl
Zik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+
LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5
dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4g
bV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAg
IH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0
IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlz
IHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBj
b3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlC
dWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZl
ci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICBi
b29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQogCi0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICB2b2lkIGZv
ckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21l
bnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNv
cmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1
c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRW
ZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsx
ODksMTYxIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxE
YXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAg
ICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4g
bV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAg
IGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09
IDE7IH0KIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMg
Tyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6
ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRh
VmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRv
SGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5n
KCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAK
LSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFv
cGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3Qp
OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29u
c3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRp
Z3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7Cisg
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RG
TW92ZShkYXRhKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
OwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRp
ZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsK
IAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Citwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBD
b21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2
ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhf
dD4gdGFrZURhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAv
LyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhh
dCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZl
Y3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0
OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0g
ICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlm
CiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhh
dCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFu
ZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGlj
IFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4u
IGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkp
OworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAg
ICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikp
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hh
ciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8s
IFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKwor
I2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+
IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVf
RVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlm
CisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0
ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNl
Z21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghYnVmZmVyKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEg
cmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQg
YmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZl
ci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKKyAgICAgICAgICAg
IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBTaGFy
ZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShidWZmZXIpIH0p
CisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFy
Z3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFw
cGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKwor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6
ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbXB0eSgpOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZm
ZXI+IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRha2VB
c0FycmF5QnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1
cmVCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlu
bGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAg
aWYgKGhhc09uZVJlZigpKQpAQCAtMjY2LDIzICszNTEsMjQgQEAgaW5saW5lIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKICAgICByZXR1cm4gY29weURhdGEoKTsK
IH0KIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgeworY2xhc3Mg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5T
ZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXpl
X3QgbmV3U2l6ZSk7Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXco
UmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXpl
X3QgbmV3U2l6ZSk7CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
KyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50LT5kYXRh
KCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0No
YXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAg
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25z
dCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlv
bldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5
MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3
ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3
ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0lu
Zm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRp
bWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8u
YXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAg
YXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdv
cmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtN
SU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIo
bm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5k
ZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0
OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXll
ZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVu
Y29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRl
RGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9w
ZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3Mjgz
ZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0
Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChj
b25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQz
NDYzNDBiYjJmY2I5MS4uNDdjMTBmOTgwMjM0YzlhYmM2MDg0ZWMyMTA0NTZmNmIxNTQ4MTkxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAt
MzUsMjMgKzM1LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwog
ICAgIGFwcGVuZChkYXRhKTsKIH0KIAogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFu
IGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8v
IHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShG
T1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkg
eworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBz
dGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+
bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAg
YXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgp
KSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZE
YXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXpl
KCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIApAQCAtNzIs
NyArNjksNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAg
IEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4
IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFh
OWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3Rv
cjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQog
CiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZG
VG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsK
LSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRX
aXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZm
QnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNE
YXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0Zp
bGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShw
bmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4g
UGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2Nv
YVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
Rm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1
cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBl
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRj
MmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjk4MDU0N2I4Y2M0YzRhODhjYTE1NWNiYjE3ODIw
YWY4NWUyZGM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDog
TlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUlu
dGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVu
dCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVu
dDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsK
ICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAt
NjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAK
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERh
dGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRp
b246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05NSwyNyAr
OTUsMjYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpk
YXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKIHsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRh
KSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsK
IH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBj
b25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAo
IW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUo
bnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAx
KTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVO
U0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRh
ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNSw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWlu
UHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29u
c3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGlu
aXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4u
NjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9v
dCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAg
ICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4
NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVm
ODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4
LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNM
b2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgp
IHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0
YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsK
ICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcs
NyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRz
TWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAg
ICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUs
MTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRh
IGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3Vz
SW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBj
b250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0
ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAg
IG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0
cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlk
cy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVy
biBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8g
Q2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0
RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4g
a2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1
LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21X
ZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0
IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAg
Ly8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRo
ZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBj
b250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmco
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkp
KTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhp
bml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5
SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xl
YXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4
IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNi
ZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEz
OSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2Rl
ciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5j
b2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRk
MzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtl
eSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4
Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAK
QEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQog
ICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19h
c3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7
CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgm
bV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRf
Z2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9k
YXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNf
Z2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9k
YXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNf
Z2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBl
NTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFj
MTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
fktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9p
ZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
ZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkx
N2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdS
ZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRy
PEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsK
ICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRl
c19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAg
fSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2Fz
dDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3Rf
Y2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0
NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6
OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmln
aW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3Jp
Z2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50
aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3Jp
Z2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9u
dDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9u
dDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQog
ewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGlu
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJl
YmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1
ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmls
aXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6
Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3Rp
dGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5
OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8s
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9w
dCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxs
cHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRD
YWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApp
bmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0
ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBA
IGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBp
cyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91
bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlv
bkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmlu
ZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRN
ZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJm
YzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2Rl
bD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwo
V1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1N
b2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwg
dXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAg
ICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJs
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3
OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0
MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9k
ZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3Ry
aW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYp
OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJp
bmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBl
OwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1f
bWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVm
UHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RG
TW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUo
KnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4
ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZh
ODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50
MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQz
MihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJf
dCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6
ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBA
IC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkK
IHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAg
IGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1
LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVp
bnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4
Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBz
aXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2
LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFy
ZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZU
b1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyAr
MjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6
ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAK
ICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZU
b1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAg
ICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4
NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdh
OThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBp
c1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVy
Jik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQg
b3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNv
bnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3
cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50
KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVy
dFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+
JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhl
IGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250
cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3
YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJl
IHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJl
MTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkw
MjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBK
U09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9
IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5n
IGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6
cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3
OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VK
U09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5p
bmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAt
NzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6
YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBI
QVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERh
dGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBw
c3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERh
dGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkp
OwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRh
V2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9u
czpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpA
QCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8g
ZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1
dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsK
LSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Np
b25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Np
b25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURp
cmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAg
ICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9j
ZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3Mo
KSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6
cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3Jl
cXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFtt
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtl
eVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5
UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRh
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1
ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJv
YmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29u
dGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5
MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0
YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFz
cygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVu
dGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxh
eWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAg
ICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50
aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVS
TF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAg
ICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlE
cy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRL
ZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250
ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRh
aW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3Qg
bWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdl
dCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmls
IGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAo
TlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRh
ID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJ
ZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZl
ckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBW
ZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+
OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZp
cnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAg
ICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmco
a2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0
cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5n
KCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5
bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0
KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5
SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRv
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAg
YXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250
ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQg
PSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3RE
YXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdU
Rk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtl
eVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFi
bGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
IGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkp
OwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmly
c3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50
aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250
ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3RE
YXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0
cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRk
ZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFy
ZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlz
XSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107
CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRl
ci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BS
SU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3Vz
bHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0
ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVw
ZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2
ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChh
bGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2Yjkx
YTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMs
NyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
QygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYm
IHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwg
QXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRh
a2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxh
Z3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBl
bmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3Ry
ZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2Ey
ZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTVi
NmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0
cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIy
YTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcy
ZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6
CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdl
YWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBA
IC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2Fk
RmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
OwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwot
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAg
IG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4
LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1
bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVy
OjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAg
ICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEp
KTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRp
bmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1
ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTli
YTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZm
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250
ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAg
LTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1f
Zm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlm
ZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3
MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMo
Q0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
aW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAg
ICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMs
NyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1
dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRl
Q0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYg
KHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBl
SWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNH
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAg
Ly8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3Jl
dGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAg
ICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUg
Q0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAg
Ly8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNl
VXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0
KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92
aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNE
YXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNh
bGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRC
dWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0
ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8v
IGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4K
ICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsg
MCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxl
YXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnBy
b3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNE
YXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92
aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApp
bmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlk
NjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5
LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJv
b2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERG
RG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBm
YjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9m
b250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZj
N2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6
ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0g
cmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+
ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0
ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRy
PENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNv
bnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYg
KFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZv
bnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBj
Y2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxp
YnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3Rh
dGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVG
cmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBj
NDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAg
ICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3Jv
bWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZv
bnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIu
ZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAo
ZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4
ZTg0YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9y
PHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1
cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2lu
QXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXgg
YmJiOGMxMzk2ZjAwM2Q2NDI2ODg5NzlhNjg0YzY2MWIxY2I4NzFiZS4uZDAxNGNjNmE1ZGM3YjE3
ZTM5OTYwMDZiZjZlYTY4YThiYzk5NGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAt
MzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5l
IGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3Vp
bnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVh
cmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
OwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVy
PiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXgg
OWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2
MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAog
CiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZm
ZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhy
ZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lu
bmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUo
KnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAg
fSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3OTc5NDgwZjkxYzU5N2FhOWY5MDA5N2MxODgzMmM2
YTE1YzMyY2U4Li5iMzI0Y2YxMTQ2NDdiMzM3NWU2YTQ1YmZhYjEwM2UwYTI5MGZiOGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY5
Miw3ICszNjkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVC
VUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Yg
c2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCks
CiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9N
RU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5p
dERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Cisg
ICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBp
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5
cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRl
eCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5
OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1Bh
cnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQg
bWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxl
bWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRh
UHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChH
TWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgK
ICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7
CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBz
c2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1
c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpw
c3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVy
cm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdN
YXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRF
bGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJ
bml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9h
ZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBh
eWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQw
OWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1YzFl
YzQ0MWFmNzE5NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVW
RUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVn
b3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24g
ZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5l
ZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAo
YXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+
Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJz
ZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0
IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAg
ICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVl
ZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9h
ZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzYs
MTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2Fy
ZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAot
ICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAg
bV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9h
ZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBt
X3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNv
bnN0CiAgICAgewpAQCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJj
ZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Bh
eWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0
YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURh
dGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwg
Ym9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24u
dGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0g
YnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3
MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1
MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAg
LTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0
YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4
YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZE
b2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFk
b3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERG
RG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29t
cHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5k
ZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1
ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBU
YWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlv
bkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25b
MV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9u
IHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWND
b3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5
cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxp
Y3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRh
bGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlw
aEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRl
ZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9P
ZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8o
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAg
ICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJs
eSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07
CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBj
b25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0p
KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJs
ZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAg
ICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50
IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QK
KyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBA
IHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAg
dmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAg
ICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0
cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYg
YXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGds
eXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNz
ZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBA
IC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5U
eXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJl
IHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6
b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0
IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAg
IGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0
aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVy
dGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRb
Y291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRz
KiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBA
QCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRo
R2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAg
ICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1h
dGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNl
dCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNm
Li4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6
IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJf
Zm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIy
YzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMw
OTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBA
QCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5l
IE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAy
NCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgp
IHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29u
c3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBz
aXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2
YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
LCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgp
IDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29u
c3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVk
OgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAg
ICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJu
IG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVk
IGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCog
cG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxp
ZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQq
IHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1
cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2
YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0
KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNl
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEy
Nyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNp
ZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxl
QmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5
cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJ
bmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdl
VGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNv
bnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewog
ICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFh
Li4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFw
cGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUg
aW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZv
bnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMg
dXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29s
IHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBm
b250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1l
Rm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBz
aXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50
SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERh
dGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgog
fQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50
byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFy
ZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUy
YzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWlu
dDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVt
b3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9y
eVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3
YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3
MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2
LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VP
ZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJs
ZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBj
b3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQp
OyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0
aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAg
Ly8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFm
dGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHku
CiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0
aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJs
ZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJU
YWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBM
b29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExv
b2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBj
b3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0y
MDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3Bl
blR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExp
c3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1
cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25z
dCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBG
ZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVy
ZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQx
Nl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJl
Q291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIs
ICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUo
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291
bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNb
aV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBA
IHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYg
ZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0g
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0
dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
ZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUlu
ZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0g
bGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpA
QCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAg
ICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0g
ICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICsz
MTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0
U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291
bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMy
MSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0
KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVm
YXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNj
cmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYs
MTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZz
ZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZm
ZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVM
aXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25z
dCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RP
ZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNj
cmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJl
TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNj
cmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2Ny
aXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQog
Ci0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRh
ZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRh
YmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVh
dHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUs
NyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1
cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBH
bHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9
IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAo
IXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFi
bGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRo
cykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5
cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpI
aGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWly
ZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpW
aGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0g
T3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAg
ICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9w
ZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpH
U1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRh
YmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcx
Mjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1l
ID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRm
MTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250
UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwog
Y2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0
aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9u
dEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0
Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5
MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRp
YyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fp
cm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQu
LjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9X
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25z
dAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4
IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2Rj
OWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAg
LTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9i
amVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyho
ZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkog
b2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9
IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwg
MCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRj
LCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxl
Y3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5o
CmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMy
YjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFy
dFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3Rv
bURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92
ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkg
Y29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0
YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBt
X2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4
Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAg
ICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRv
IG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0
byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNv
bnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0
YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRh
U3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAg
ICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29k
ZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmE0MmU1YmM0YWNj
ZjM3MjJhNWFmOWM5MDU0NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdf
c2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0g
J1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpw
ZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7
Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtl
ciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewog
ICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUND
UHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9s
ZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFy
a2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAg
IH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJl
dHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcy
Niw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXpl
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1h
Z2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhl
MWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUz
YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lm
IFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYw
MmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFk
MzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBs
YXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5
cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsK
ICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5
cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAg
IEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEu
c2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlw
ZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07
CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1
dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0
ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBz
ZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5k
YXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpu
dWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBz
ZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5k
YXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9
CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5z
ZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJl
Z2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBt
X3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NF
UlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0
byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAg
ICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9y
TUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0
byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcg
Kil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0
UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJv
YXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9T
VFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0
YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXpl
ZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNl
cmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09
IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlw
ZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAt
NjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1
c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIg
PSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFz
dGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJh
ZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHBy
b3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2Fy
ZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBk
YXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5n
IGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRm
b3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewog
ICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bh
c3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3
LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9h
cmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmpl
Y3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmlu
ZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFi
NjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFj
YzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9y
JiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3Rl
Ym9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFz
dGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVk
RmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVy
bC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdy
YXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5n
IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAg
LTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0
eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAg
ICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2Fj
eVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAg
ICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAg
IHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZi
OTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5
YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6
d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0
cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNs
aWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERh
dGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgp
XTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVu
dERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07
CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3Vz
dG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJl
YWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07
CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2Qy
NDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5
ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0
eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6
cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdl
dCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMo
W2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVy
T2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBp
ZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5
cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRv
IGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRh
dGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAg
aWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5
cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBs
YXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAg
ICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsK
QEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxk
V3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlm
IChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJv
YXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBA
IGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBl
KHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRl
RGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3Jp
dGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlw
ZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2Fm
ZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9y
bVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAg
ICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICgh
aXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBp
ZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0
byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVt
PiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5j
cmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1E
YXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAg
ICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAy
MTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAz
NTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2Rh
dGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVy
OwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1
M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0x
MzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAg
IC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBk
YXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0
aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0
ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVy
KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUz
NSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0
YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFM
b2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRh
LT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0K
IAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VE
YXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0
YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRh
LnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBhMzdh
MGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3Mzk4OTA5
Y2M4YmVhNGQwYTNiOTU3OWE3ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6
Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigp
IGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAg
ICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRh
dGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4
IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0
NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIy
OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+
JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJl
YW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5k
ZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5
NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2
ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTkyNTM2OTRh
YS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNl
aXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRS
ZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxlLT5jbGll
bnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJl
Y2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VR
dWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4
MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVkMzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQw
MjlhODJjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpE
YXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNv
dXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAg
LCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2Uo
cmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVj
dCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSAr
NTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNp
emVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNz
IFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JT
ZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsg
UmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAg
SGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlx
dWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
b3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9h
ZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3Vj
Y2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFz
aykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRl
c0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0
IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVy
U2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFi
bGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRh
dGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0
IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxs
IGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYg
KCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVm
ZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdl
LmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEu
YnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFz
ayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8g
Z2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0Rh
dGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9
XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2sp
LCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBn
ZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0
ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJl
Y2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7
CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZl
ckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRl
eCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVy
U2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmll
dyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVm
ZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3
IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3Rl
ZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3Vj
Y2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZl
ci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8g
RklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91
bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMg
Y2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2lu
YWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBw
cml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3Vy
bFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+
YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2
ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4
OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29y
ZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291
cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlv
bjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSld
IHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXpl
KCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0g
KGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRl
bGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRh
Mi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRs
ZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBj
bG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAo
cHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVu
ZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2Yg
dGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4K
LSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpF
bmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91
bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3Vu
ZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxs
IGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9i
dWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZm
ZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9y
IGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4K
LSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZl
ci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIw
ZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0
YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQg
Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAh
PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRG
aWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQz
ZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5
LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRs
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRv
bigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShi
dWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdU
Rk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0
d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCAwZmI0NTAwNzJmYTEwNDIyZjZh
OWZlNDMyYzM4MWQzZDE5NjEzZTYwLi4zY2EyMDgyMmMwMzE4YTU0OTExMTg2NzVkMjdiODc4ZGQx
ODNmZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRC
dWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVk
QnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
ICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYy
NDg2NjQ3M2Q2MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMw
YzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cApAQCAtOTg2LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmls
ZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywg
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAg
ICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAz
OCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUg
dGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAg
ICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5k
YXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZp
bGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAg
ICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBX
cml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxl
SGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRC
dWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDcz
OWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXpl
KGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwog
CkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7
CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1Rv
UmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAg
ICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBm
aWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4
NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1
NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJl
c3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3Bv
bnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVm
ZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRh
KCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0
KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1y
ZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBA
QCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1Zp
ZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQg
OiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgn
ICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNl
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7
CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1h
dCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3
NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAK
IFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBT
Y3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZl
ciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVy
Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5m
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAg
IH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAg
U3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZl
cjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2lu
KCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZm
ZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+
YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNj
cmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9i
dWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBh
dXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRh
KCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRm
OC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3
ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVy
IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBT
Y3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1f
YnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIp
OyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZm
ZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1f
YnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5n
bGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmlu
ZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBD
b250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAog
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmY2YmM5YjNi
ODQxN2E4YjhiYTM5NGZiMjgxMjkyZGY1MTFkZDE4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJGb250U2VsZWN0aW9uQWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldPRkZGaWxlRm9ybWF0LmgiCiAjaW5jbHVkZSAiV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC03
OCw5ICs3NywxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcp
IHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAg
ICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRp
ZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250
aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAo
Y29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS5hcHBlbmQoKmNvbnRpZ3VvdXNE
YXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZp
ZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0K
QEAgLTExNywxMCArMTIwLDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vy
cm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAg
ICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4
NjNjNy4uZGFiNzNmYzdiMWE5M2VkNGUzZmViMzFkNjcwOThkOTliNTE3NmEzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlck9wdGlvbnMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CkBAIC0zNiw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAg
Rm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIg
fTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1f
ZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXgg
OGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRlNTI0MC4uMGJjZDk3NmVkYTlkNGE3
ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBA
IC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+
JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkg
PSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAo
UmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9y
bURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpu
dWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2
MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAy
ZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZl
ciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJs
ZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmls
ZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJp
dmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5
VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5v
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVy
OwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0MWNjNWUyOWNlOTZiNC4u
NGY5MDYyMDNiZDQ5Yjc3Y2QxMTdiYzA1Y2Q4YmUyZTMwOGI2YzczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlN0cmluZ0FkYXB0b3JzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTIwOCw3ICsyMDcsNyBAQCBSZWY8Qmxv
Yj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8gRklYTUU6IFdl
IGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5k
aW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGE7CiAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3Rk
OjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRh
KCk7CisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlKCktPmV4dHJh
Y3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1h
bGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAv
LyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNv
cnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOSArMjE3
LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VB
cnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlwZTo6
QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAgIGF1
dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0
ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwotICAgIHJldHVy
biByZXN1bHQ7CisgICAgcmV0dXJuIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2VBc0FycmF5
QnVmZmVyKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRUaW1l
b3V0KHVuc2lnbmVkIHRpbWVvdXQpCkBAIC03NDEsNyArNzM4LDcgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0
cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURv
Y3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7
CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIucmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2Fj
aGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOSArMTA2Miw3IEBAIHZvaWQgWE1MSHR0
cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAg
ICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBs
ZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAg
ICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3
NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li44MzI0OTY4ODM1YjAxZWE4MDQ3YTBjY2JlODdjNTdhMzQx
MjRkMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5k
aWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDUsNyArNDYsNiBAQCBjbGFzcyBC
bG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsK
IGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcs
NyArMjM3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURv
Y3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBl
MDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJj
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAt
MTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxD
aGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAg
Ym9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgp
ICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIy
NmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAt
NDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAg
ICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJk
YTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRl
cjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1v
CiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBv
aW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBlNTBj
ZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi4wYjlmNDlkMzY0YzI1OTVlMjIz
YjMxMTRkZWFmY2VlOTJhNDAwZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0
YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZm
ZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VC
dWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJl
c3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBA
IC0zMDYsMTAgKzMwNiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25z
dW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8
IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhLmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQot
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmVtcHR5KCk7CiAgICAgfQog
CiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBA
IC03MzQsMTYgKzczNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAmJiBt
X3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25n
PigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAg
ICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAg
ICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVm
ZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5n
VGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAg
IH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQg
cmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1f
cmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRy
OworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7
CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGlmIChtX2Nh
Y2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRl
ZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZp
ZWQKQEAgLTg2OSwxMCArODY5LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jv
d3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBp
biB0aGUgY2FjaGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXpl
ID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAvIDg7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXpl
KQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CkBAIC04ODAsNyArODgwLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXAKICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZm
ZXItPnNpemUoKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZl
cmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLmFw
cGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZO
ZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTA5LDExICs5MDksMTEgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAg
ICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwg
bV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVy
ZWREYXRhLmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAg
ICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsK
KyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXpl
IGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOwor
ICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEuZ2V0KCksIC0xKTsKICAgICAg
ICAgfQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNo
UmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KQEAgLTEyNTksMTIgKzEy
NTksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQo
KQogICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQp
OwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fYnVmZmVy
ZWREYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEuZ2V0KCkgfSwg
bV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAg
ICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyODksMTIg
KzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVu
dHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0
b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAg
ICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCku
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jl
c3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2Fj
aGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2NhY2hl
LT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZN
b3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0
byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50
YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxl
IHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9k
eS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLmM0
MjM0NjUxYmE5MjhiOTVkOGM2ZjU3YmUyNWM1ZjIxMTg5ODlmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
ZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBA
IC0yNDAsNyArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVy
aW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAg
ICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZh
bGlkYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2Fj
aGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXgg
NzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uM2E1NTE3NDkwMWQ0Nzg5
OWMxYzAyZDBkMjdhODg4YTdjYmRhNWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAg
ICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggMWU3OGMyY2VmYTE1NDg0MTA0MDYwZjNiMTlkYzUw
ZTZjYjhmMWViNC4uNWM0YzhlNzFkNGRkMzgzNWMxZDU3MjJiODFjYzdiNTk4NDBlOGFhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxs
YmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47
CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
PjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5k
ZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNl
ODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5z
aXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIt
PmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNv
ZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRl
eCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZj
YmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0
IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJv
ZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8
V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUg
Zm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpk
ZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsK
LSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJl
c3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9y
YWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNv
cmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2
NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRy
eTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAg
aWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwg
bV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVT
dGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5k
NDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNw
b25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmICht
X3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAg
ICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkg
PT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQg
JiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBv
cnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2
ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29u
c3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAg
ICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkg
PD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFG
b3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXpl
KQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51
bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAg
fQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlmICht
X2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYg
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hl
LT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwog
ICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3Rv
cmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5
RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNo
ZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNl
LCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVF
bnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1
OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2
ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25z
ZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hl
RW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgwN2Q3NDE3MWFkYzUyMDVhMy4uZjYz
M2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5MWQzMWNhOWUxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFk
RGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAK
ICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3Vy
cmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7
CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRv
cHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkp
OwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZm
ZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjI5ZjcxZDdlNmRjNzUwZWYxOWYzMjg2MmM4OWI3
MTg1ZTAzYmY4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
Q29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
ZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdU
Rk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgz
MmU5Zi4uZTljZDg3MmY4ZDQ0ZjE1ZTBlZTM3YzczNDkyYjJkODAyYWM5MDcxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMzksMTggKzM5
LDE5IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAg
fQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZl
cjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsg
fQpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAK
aW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlhZjhm
NTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1v
cnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90
IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0
YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4
IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4NWQ3
ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUg
c3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFn
ZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBP
UyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
UmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2Uu
bW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBh
ZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMg
dm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkK
IHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+
ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRh
KCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVS
ZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
aW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2MjE1
NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2
OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZvbnRG
YWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8g
VXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBj
YW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRv
IGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZh
Y2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7Cisg
ICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29s
bGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVlZGQ2
NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZl
MzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJF
TEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAj
ZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9
IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZjY2Fh
NTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsMTUgKzU1
LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5T
aGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9
IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2Vs
ZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVz
b3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1YzQ4
NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBw
cml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1l
bW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJkNDky
ZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkx
LDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNO
dWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVy
U2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmRE
YXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNT
RVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsK
QEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNv
ZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEp
CitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29k
ZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBl
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAK
ICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAg
ICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNo
T24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8
IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkp
OwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcg
KzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRD
b2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1
ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVm
ZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1
ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBs
YXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2
LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1v
dmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RG
TW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBS
CiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9
CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1
LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVj
b2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRp
ZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAx
OWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYw
OTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3Mg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIs
MTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5
Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBA
IC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50
Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVk
QnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5T
bWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3
MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1E
YXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAg
ICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7
CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAg
ICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBh
ZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApA
QCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBj
b25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFi
YmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgs
NyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3Np
bmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNv
bnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
QXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdl
UHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFiOWRkYzdhNDYxOGZlZDQy
MmVjMzg5NzQwMzUuLjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3MTlhMWE2MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRh
KGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxi
CiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0
YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2wo
U3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRh
KGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0
aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlv
bih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNm
NDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAz
ZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3
IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVX
cmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBm
aWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBA
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250
ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVw
cmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAo
IW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVl
M2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1MjFiN2Q4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2Vi
Q29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAg
ICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hs
aWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0
OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFn
ZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdo
dCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAg
ICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0
b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAg
ICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGln
aHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxp
Z2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQw
ZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJ
bnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAg
ICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVj
dGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBp
ZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0
YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxl
bmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4
N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0
YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZp
ZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZp
Z2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkYmVhMmU5NzI3NzRlMjY5
NjViMmRiYjJhNzM1ZS4uYmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRjZDZjNzdiOGY2ZGE1ZjViOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
ZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgaWYgKG5vRXJyICE9IEF1
ZGlvQ29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZyZWdpc3RyYXRpb25zKSB8fCAh
cmVnaXN0cmF0aW9ucykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlv
bnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3Ry
YXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgewogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVn
aXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlv
bnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdpc3RyYXRpb25EYXRh
IH0pLCAwKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKKyAgICAg
ICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9D
b21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSB9KSwgMCk7
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAz
OTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsy
OTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2Jq
ZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAg
LTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFu
ZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBh
c3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0Rh
dGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEg
PSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERh
dGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFy
Y2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1
MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0
ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1h
Z2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2Vk
SW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0
YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3
ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJv
cHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGlu
Z0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29u
c3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0
YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAg
IGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZm
ZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdl
LT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5hbWVHZW5l
cmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
OjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5k
ZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUxNjY2NmM1YTMx
MTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNG
b2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50
KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJ
bWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdl
YkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJ
ZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDVhODMyZTU1YWNiYTE4OWIzOWI5ZTg5N2NjMWNhMThiN2I0ODQ1NTUuLjlmZjIzYTg2NmZmMGQ4
NjI3NTE4NWJmNjI5ZjFhNDc2Y2Y0ZmU2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xMTc5LDcgKzExNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3Rl
clVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBl
bGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAg
Ym9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2
b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdm
MmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi4zNzNhY2MxYmMzMGExMWUwN2ZhOGRmZWVkYzNi
OGE4MjM5YzFhMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcApAQCAtMTg3LDEwICsxODcsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAg
IG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmICht
X3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZl
cik7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE1LDE0ICsyMTIsMTEg
QEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBtX2NvbXBsZXRlZCA9
IHRydWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1f
c3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKKyAgICBpZiAoaXNTeW5j
KCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLnNpemUoKTsKKyAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9z
eW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9
IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVy
KCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3
MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uZGQ2YjcyNDEwYWRkNGVmNjMxZDI4MDY5ZTE0YTNmMmEw
MGM1Y2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApA
QCAtNDMsNyArNDMsNiBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE0LDcgQEAgcHJp
dmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhh
bmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9y
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDcz
YmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQy
MTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUlt
YWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29s
IGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6
Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNo
b3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQw
YTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2
MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9z
aXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQK
ICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsK
IH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xp
YnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgp
OwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgp
LCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMWE4MWNjZTQ0NTVlYjFhNzJi
MTBlOGYyNDczYzYwYTI5MWVhNThiYS4uMGM2MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdhYWZhMzRj
ZjdjMzQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNh
blBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRl
cgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9h
cmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpk
YXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4p
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5OSw3ICs2NTk5
LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkp
Lm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAK
QEAgLTc1NzAsNyArNzU3MCw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2Vi
Q29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZp
bGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcq
KVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxl
IGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0g
ICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVE
YXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxm
IF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJv
dW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CmluZGV4IGY4MGM4MjQ5ZGE0NjdiOTQyMDM1ZTQ2MDZlODk5YmNiNjRlZGJjNmMuLmJhOTk1ZmI5
ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmlu
ZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KaW5kZXggZTAzZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFiNjZiNTk4
ZGI0Ni4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyAr
MjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFi
Yi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEs
OSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRp
ZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3Ry
aW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
V3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29s
IHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZy
YWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxz
ZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5
YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1
MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02
MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9j
ZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2Nv
bnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJk
OndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVN
ZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdL
V2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAg
ICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgp
IF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBw
YXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2Up
LmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUp
IHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAg
ICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEu
YXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBl
W3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUz
MDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRh
MzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAg
IG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0
ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFu
Z2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsK
ICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBl
bmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5
LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0
ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5
M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2Ex
MzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYs
IGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFu
Z2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmlu
YWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBh
Z2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29y
ZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5h
dGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0
N2MxNzFlMzQxNDY4Yy4uYTM0ZTIxMmQwN2FmMmZmNTczZTFhOGEzNDBlYzFkM2ZjZWI0MmExYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxM
b2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVh
c2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAg
Ly8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3
aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUs
IGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcy
LDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2Fk
RGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRh
dGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXIt
PnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygo
Y29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpj
cmVhdGVXaXRob3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNC
dWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIo
KSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFn
ZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1w
bCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJM
LnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1
MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNj
MGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQog
ICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxl
UGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQy
Y2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4uOThhNmUyZTdiNTdlNTIzMThmNDJj
OGNkMTdlNGYwZGUwNTA5NDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODEs
NyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgYXV0byBidWZmZXIgPSBoYW5kbGUu
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291
cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQy
Mzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4
YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNz
aW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRh
IHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VM
WShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAg
ICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIo
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3Zl
KGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2Yw
NzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjVjMzFlZGYyZTU1MDlkNjc4NjU3YTE5
YTJmNDU5NjA5M2E4NDg1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MDMsMTAgKzQwMyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6
bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFs
U3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwot
ICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YS5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQz
Nyw3ICs0MzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAg
IG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAg
ICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLnJlc2V0KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjYsOCBAQCB2b2lkIFBsdWdpblZpZXc6
OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3Ojps
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAh
bV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJl
dHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRl
ID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21h
bnVhbFN0cmVhbURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMTI0Myw5ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJl
YW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1E
YXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVh
bURhdGEpCisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAg
ICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBl
bGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51
bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3Ry
ZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNm
MjMuLjczMjc0MWQ5NWVlNmEyYjY1NmYzZDhjMDhjOGFmZmJhN2UyZmFmNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Rp
bWVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMjUy
LDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
bWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVh
bFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFs
U3RyZWFtRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fbWFudWFsU3Ry
ZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVm
ZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2Uz
YzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3
N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03Nywx
MCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0g
ICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9y
ZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHko
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICgh
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0
YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsK
KyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYs
OCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlz
XShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAg
ICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhp
c10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAg
ICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1
NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4Yzgy
NGZkYjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3
ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JM
b2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVl
UmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxX
ZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9y
ZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5
NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9Q
YXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwg
cmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZl
NGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
QEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5h
bDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZv
aWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQg
cmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYw
NTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAg
ICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURh
dGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRh
ID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNv
bnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0
YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uNmYzZjU2
NmM1MmYxZTM5ZGVmMDBiNWYzMTlmZWJhZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5
cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBv
dmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFz
dGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAg
ICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0
ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpA
QCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAog
ICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6
b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUs
IHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFh
YjczMjE0ZmIwLi4zZmYzNTU4MDhlMWQ2ZWIyYWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIw
MzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjIzZDAxMTRiMGU5NDBlZTEzNDNlMjQ3OTZmM2ZjOTdhYWUz
MmU5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NSw3ICs0
NCw2IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5h
bWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAg
ICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KIHsKIH0KIApAQCAtNjksMTMg
KzY3LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygp
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7
Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAK
IHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXIt
PmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLjll
NmY1MGYxYjMyNWExMzMzZjJjOTRjMTc0NzRjMGE3ZjUzNGU1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVm
ZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2
ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1l
CiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJM
UmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9
IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5p
bWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXpl
KCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1
ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVu
dDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXpl
X3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2
ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdl
dCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBh
cmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hp
dmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1
ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0
Myw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0
YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVy
LT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6
Y29udGVudHNBc1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4
MjYwYzU3ZTM0NGNhMzZlMzA5Li5mM2VkYzI5MWZkOGFhZmUzZGE4MzBmMGQwNDhkOGFlNWU4MzZi
M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAg
ICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5
MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRk
ODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRF
eHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4
dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50
YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/
IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0
YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2
NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRp
bmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAg
ICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNv
bnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9u
c2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJh
MTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2
NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBv
bmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJL
aXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRi
Njk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNm
OWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAg
LTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNk
NDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2Fm
ODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0
ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQw
YjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2Rh
YTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9w
cml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRh
LT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4u
MzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5T
U3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dl
YkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJj
aGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2Vk
QXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZh
dGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAg
ICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNl
ZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDog
bmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2
NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGlj
IFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQu
aW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVm
ZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAg
IFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVu
Z3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RS
ZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2Jk
ZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlk
Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihO
U0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNv
ZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgp
OwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBu
aWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAg
IGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVz
b3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0
RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwog
ICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsK
ICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNl
RGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5Oldl
YlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6
V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBm
b3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAg
LTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5j
b3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3
ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9
IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURh
dGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRh
dGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRl
Y29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+
c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVk
ZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1l
bW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6
TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAt
NDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJl
YW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4g
bmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjli
ZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3Mg
TWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAg
IC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5
SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0
KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2
YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZD
b3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4
IDAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFm
NTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFy
Y2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9D
T01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRh
LmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRh
LmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZN
b3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2
YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApA
QCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFm
Y2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7
CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlk
RW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJl
c3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0
ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBA
IEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBz
dHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsK
IAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWlu
UmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250
aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6
OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRp
b24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEz
MzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlh
NTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAt
NTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJh
bWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwg
X0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVE
RUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1
LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEs
IF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhp
cyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50
byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9y
IHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQp
KSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAg
IHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4o
ZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdU
Rk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVs
bHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRF
bmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2
N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3
Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3
ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNl
OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdl
YlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5
OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2Vi
UmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2Vi
UmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJ
VW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzk0OGFm
MTk4N2JmZTVhN2MyZjc0MWJiYTYwYzM5ZWEwMjVjZGU4MS4uNjk1ZDY5MTg4NGQxMzgyYTNlOTc2
NGQ5ZTIwNDQ5ZjZlN2RmZTBjMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KwogMjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBh
bmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIx
MmM3Y2E0NjguLmFkZDI0OGIwZGUyZDJmMTFjNWExZjUyY2E3ZThlZmE5NDkyNzRjMDAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1MiArNDMsNDcgQEAgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlz
dGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAg
ICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0
eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3Vz
KCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAg
RVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5z
aXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+
ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZm
ZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBh
cHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5h
cHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1
ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVy
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIu
c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Cisg
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
KQpAQCAtOTYsMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRl
c3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRh
MCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9X
b3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9u
KSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChl
eHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3Rl
ZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNiwxMCBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9y
MigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChX
VEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
c2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQw
MDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTE1MSwxNyArMTQ2LDUz
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2lt
IG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0
aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFj
LCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxl
bmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxk
ZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBj
b250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29w
eSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAg
ICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAs
IG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUo
KSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VR
KGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBi
dWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRl
cjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsK
KworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5k
KCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVY
UEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0g
YnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUo
KSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWls
ZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOwor
ICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAg
IEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVu
dCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsg
Ly8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0
RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNO
dWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxk
ZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBA
IC0xNzUsNjAgKzIwNiw3MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZics
ICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wn
fTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
czIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIg
PSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2kn
LCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZm
ZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNv
bWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1
dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdl
dFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAg
ICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hp
amtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVE
YXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsK
KyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wg
PSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXpl
KCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIp
OworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNo
ZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamts
LmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgp
LCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVy
LT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBn
aDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wu
c2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkp
OworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFy
UHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZm
ZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMp
Ci0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAg
cmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVu
dCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRvIGJ1
ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVm
ZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVD
VF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVu
ZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEo
YnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYics
ICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsn
YicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdk
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5n
ZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBt
YWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1
aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVy
LmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycs
ICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwg
eyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9
LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAn
YScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1
ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7
ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3Ry
aW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVu
ZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFr
ZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQ
RUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWls
ZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VR
KGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI5MCwxNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2so
YnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1
aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVp
bGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzEzLDE1ICszNTUsMTcgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50
OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAg
ICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNr
KGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVz
dCwgcGVla0RhdGEpCkBAIC0zNTgsMTYgKzQwMiwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9
IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAg
ICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0g
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRl
eHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQwNiwx
NyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxD
aHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1
ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBF
WFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2so
YnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSAr
PSA1KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0g
ICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwot
ICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXgg
OTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3
NTkzZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4
LDU0IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAq
PiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hh
ciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRo
Q29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5T
RGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQo
KGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBD
RkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBA
WyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6
ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUlu
dGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVm
ZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkK
ICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgp
IGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5T
VUludGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAg
ICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAg
d2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0Vx
dWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBv
c2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRv
IGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAg
ICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6
ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNF
cXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2Rpbmdd
XSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446522</attachid>
            <date>2021-12-09 04:55:40 -0800</date>
            <delta_ts>2021-12-09 05:30:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211209235538.patch</filename>
            <type>text/plain</type>
            <size>135681</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFlNTI1Y2NmYTZhMzI2
MzU3YTJkZGVkYWNkMWE0NjBmZWQzZGZkZC4uYjVmNDBkMGVhNDE1MmJjMDg4ZWVhNzBjNDkzYzAz
MzY0YTg0ZjRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBBIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBs
YWNlbWVudCB0byBSZWZQdHI8U2hhcmVkQnVmZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbnVsbCBhbmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxv
d2luZyBhIGNhbGwgdG8gcmVzZXQoKSwgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAg
ICAgICAgd2lsbCByZXR1cm4gdHJ1ZSBhcyBvcHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBj
cmVhdGUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6
ZSBvZiAwLgorICAgICAgICBBIG51bGwgU2hhcmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhh
dCBhcHBlbmQgd2FzIG5ldmVyIGNhbGxlZCBvbiBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVt
cHR5IFNoYXJlZEJ1ZmZlcikuCisgICAgICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sg
aWYgdGhlIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGlu
ZyBjb3B5KCkgb3IgdGFrZSgpIGFzIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0
ZWQgaWYKKyAgICAgICAgbm9uZSBleGlzdHMuCisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lv
bnMgd2VyZSBtYWRlIGR1ZSB0byBob3cgU2hhcmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAor
ICAgICAgICBhbmQgdG8gbWluaW1pc2UgdGhlIGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3
b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxk
IGFsd2F5cyBjcmVhdGUgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAg
ICAgIGl0cyBzaXplLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGlu
Y3Rpb24gYmV0d2VlbiBudWxsIGFuZCBwdHkgd291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4K
KworICAgICAgICBXaGlsZSB0aGUgYWltIHdhcyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1
ZmZlciBvbmNlIGJ1aWx0IHdhcyBpbW11dGFibGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3Qg
ZW50aXJlbHkgYWNoaWV2ZWQgYXMgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBS
ZWZQdHIKKyAgICAgICAgdG8gYSBTaGFyZWRCdWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0
byBpdCB0aHJvdWdoIGl0cyBTaGFyZWRCdWZmZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxs
IGltbXV0YWJpbGl0eSBjb3VsZCBiZSBmdWxseSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSBy
ZXR1cm4gYQorICAgICAgICBzaGFsbG93IGNvcHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFw
IG9wZXJhdGlvbi4KKworICAgICAgICBGbHktQnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZp
YSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0
byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291
cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
YXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJj
ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVy
QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkOWM3MDY4ZmMwMmFkNWFkODg4Y2Yy
NGYyNjFlYjAyNDE4ZWNhNDUxLi5hYmYwNTU3OTlkYTUzMTNiMGIyMWE4MGZiNzM1ZDI5YTBmN2I2
MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6Oldl
YlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNl
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVh
bFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWls
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCmluZGV4IDYzZDAwMjZmMmE2N2E3ZGU1MjQxNmI5ZmFjM2E4MGY5ZDg0
YWI2NTAuLmU4YTZmYjEyMzVmMTc5M2I3YTE0NTJkNDIyNmYyODM3OGViMDM3MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJGcmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3
NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uZGIzYzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVm
MTQxMGFhNTQ5NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFk
ZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxw
dHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAo
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVj
b3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVm
IHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVz
dEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCBy
ZXNwb25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRh
c2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRh
LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwg
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUs
NyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+
aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSBy
ZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5
Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0
aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3Vt
ZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7
CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5m
bywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5z
aXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShX
VEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3Vz
KCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAxMjZi
NTM4NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxLi5jMThiMTg4M2MxZTRiZjNkNTE4
YjlhMWZiODRhZWY4YWUyZTYxNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2
b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAg
ICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENv
bnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFy
Q2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNv
CiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAg
IG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlw
ZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlw
ZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJl
c3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+
ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRU
eXBlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFr
ZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFu
ZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBt
X3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMjYgKzMy
NiwyNSBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KCFtX2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAg
cmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCi1SZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKCFtX2J1ZmZl
cikKLSAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7Cit9CiAK
LSAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKK1JlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIo
KQoreworICAgIHJldHVybiBtX2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8
QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKQEAgLTM1MSw5ICszNTIsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAo
IW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1
aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwog
Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAg
ICBhdXRvIGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9t
RGF0YShjb250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4g
YmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9j
b250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgp
CkBAIC0zNjIsOCArMzYxLDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBh
dXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIg
PSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGln
dW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRG
OChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQog
CkBAIC0zODMsMTAgKzM4Miw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3Vt
ZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJv
ZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwot
ICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAg
ICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZl
ci50YWtlQXNBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9h
ZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2Jh
OTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZkOGJi
MGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
LmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7
CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQ
dHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8
RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCA3NWRlYWQz
Yjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2
NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAK
ICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9k
YXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jl
c291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAg
ICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xp
ZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwog
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1f
ZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRh
LmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAg
ICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAg
ICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAg
aW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcg
KzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29t
cGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCBy
ZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRha2Uo
KS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2Uu
dXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2MzQ5YWE1YmJi
MWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJj
ZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNv
dXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJl
ZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0
Yy4uYzY4NzcyYWZiNjI0YzgzMzZlODE4NWUzNTJjNjlkNjk5NjY2OTYyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVu
c2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQo
IWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwot
ICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICByZXN1bHQgPSBtX2RhdGFC
dWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAg
ICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODAsMzcgQEAgdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4g
cmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30K
Kwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgo
KSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUo
KSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0g
ICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVm
ZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7
CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2Rl
Y29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29u
dGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZm
ZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0
YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3
Li4wNGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEzODkxNzIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzAsNiArMzAs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtMTAzLDEwICsx
MDQsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNw
b25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1l
OyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVy
biBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25z
dDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBl
bmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAg
dW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEyMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1f
bWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9j
ZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNl
IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMmYyZTgyYzJiMTdmM2M5NGRlYmYwYTZhNDE4ZjQ0MzNlNGFhYmQ2YS4uYjg0OTFhYjMwZTQ4
YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJv
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNl
UmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VE
YXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogICAgIG1fZGVmZXJy
ZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICszMTcsNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQ
b2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVy
ZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVy
Ojp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDE5ICszMzMsMjQgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQ
b2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBE
YXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQ
YXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKKwog
ICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7
CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbV9yZXNv
dXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisKK2NvbnN0IFNoYXJlZEJ1ZmZlciog
UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVz
b3VyY2VEYXRhLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJl
c291cmNlRGF0YSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291
cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEuZW1wdHkoKTsKIH0KIAog
Ym9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1
MmMyZTFjYTY0ZWU0MmI5MTcuLjM3ZDY2N2Q4Mzc2ZDAwZGE3ODk0NjJkY2NlMWFkYjMzNjg4OWZk
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNl
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3Qg
U2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBj
b25zdDsKQEAgLTIyNyw3ICsyMjgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJl
Zm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEw
ZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0ZmM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsOSAr
MzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBT
aGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxl
bmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZl
clJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVy
UmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3Rl
ZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJv
dGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRh
ODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVu
ZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5l
d1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4
IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkuLmM3NzBkNzY0MTM1MDY1
MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgz
LDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291
cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3Rh
dGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBh
dGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3MywxMiArODcy
LDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3Rh
dGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRh
IHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFu
ZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5Ogog
ICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNs
ZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0
b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGFjZmJi
YjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMwZGMzZDc1YzVh
ZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxT
aGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkK
ICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgp
IHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hh
cmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0Fs
bEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRt
bERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwog
CiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdC
dWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVu
dEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmco
KSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5k
YXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChh
c2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBG
SVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0
aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3Vy
Y2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRh
dGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQ
cmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRh
YmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBl
bmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAg
bWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAg
bWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAg
IC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdv
dWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAt
MTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVu
Z3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAg
ICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRl
eCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5k
KGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAg
ICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBp
bmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcg
PSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1s
RGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwor
ICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFr
ZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5YjZjMzFk
NDJjNTMyZi4uNDAyNWI5ODBlNWVlNjgyZGIwNzYyYWZhODZlY2E5ZDkyZmU4NThkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNT
RVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnku
aXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tC
b3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBh
cnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1F
SGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVu
dHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAg
ICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5z
ZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsK
ICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAt
MTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2Ug
bGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBj
aGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAg
ICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOwor
ICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0
aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5n
KCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRo
ZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhw
ZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFw
cGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwg
Mik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsMTAgKzE5MywxMCBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwotICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29udGlndW91
cygpOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2Rp
bmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVj
b2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVu
dC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJh
c2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0g
ICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURl
Y29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBj
YXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNv
ZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NjFhOTlhZTU3
NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmLi45MGQxYzZhMmJhOGM0YTQyZTFmZWJkODAx
ZTUyODc4MDU5MDEyYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCw3ICs0MCw3IEBAIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVmZmI2OTdj
MzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0ZDFk
NTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6
Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYg
bWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcyNzI3NjdlNTNm
YTJmOGM1MC4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRh
RnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRT
dHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4
ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2MGNjYWU0NjlmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAg
ICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCBmNjQzMzNmMDQz
MzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjLi5mOWFkNzcxM2M2MDNhNmEwYTU2YmNhMjc5
Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZv
bnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDBiN2VkOWJmMWM2
MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQuLjE1NGRiOGNiYWJmM2Q1YTM4ZTA5NjFhY2I1
NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJU
IHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA3MmMxOWY2NTdi
ZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllLi43YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVk
ZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xl
YXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDcgKzUyMyw3IEBAIGJvb2wgQ2FjaGVkSW1h
Z2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90
b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwg
dXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVk
KFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJ
bWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2OSw3ICs1
NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJ
bWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZO
ZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEy
ODM0MmY1Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VI
YXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFz
UmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAog
ICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lk
IGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdl
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYp
OwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9p
ZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggODcz
MWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYy4uODQyYmY1ZjIwZTA2ZmQ4M2E3
MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJp
Z2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZm
ZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkK
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdl
dCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sg
dGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5OTUzYWU2
YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNiYWM0NTE0ZjM2
Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3Jz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50c1Jl
bW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAog
ICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4gbV9kZWxh
eWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAppbmRleCBkZTc4YWNiMjIxMGExZmY0ZWZhOTZjMDVmODQ5MTliMjY1
ZDAxY2FkLi5jZjRmMDJjNWQ3NDM0Y2I2NWNiM2QwMzM4YWM3ZmE3M2FmNjE2Njg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTMzNCw3
ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQoKnRo
aXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiAgICAg
QVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAg
IGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZl
NzU3Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDkgKzExMiw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6
OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBkZTU3ZjQwNDAzNzI0YzUzNmJh
OTdiMmI2YTA2MmVjYWY2NzQ2MTllLi5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFj
YTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBk
b2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5
MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMzNjNiMGNi
ZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNW
R0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBt
X2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CmluZGV4IGVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEuLmI4N2EzZGIw
NmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2lnbmVkIENh
Y2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAot
dm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjc1YmU0
ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0K
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCBhYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0
NzE5YTJhMzJhLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygp
IDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CkBAIC01MSwxMyArNTEsMTMgQEAg
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlz
KTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRk
Li5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAg
IHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUy
ZGE2YjExZmQzMC4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2Rp
bmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQog
Ci12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3
ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEy
NTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
ZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJj
ZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5mZjQwYzQxNmNjNjE2ZTkyYjEzMDdiYWJiN2UzNDNiMzdl
NTQ2MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNs
aWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzcsNyArMzgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVm
PExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9vcmlnaW5hbERh
dGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBi
b29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2Yzhj
ZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNWVkYjRkNmZhYjkxZWI5MDZhM2RkYzM5MTg0ZDU0
NWY1ZTFiZWZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5tbQpAQCAtNjksNyArNjksNyBAQCBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBl
bmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUoKSk7Ci0gICAgbV9vcmln
aW5hbERhdGEtPmFwcGVuZChidWZmZXIpOworICAgIG1fb3JpZ2luYWxEYXRhLmFwcGVuZChidWZm
ZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2UoKTsKICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTA5LDcg
KzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0
YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgICAgIHJldHVybjsKIAogICAg
IEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNs
ZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEuZW1wdHkoKTsKICAgICByZXNvdXJjZUxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVy
KSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9Owog
CkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFz
c3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5
UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJl
dmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNo
YXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQo
Y29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmln
aW5hbERhdGEuZ2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5
UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2
aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZp
ZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsg
bWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252
ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjplbXB0
eSgpKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxk
RGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNo
b3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAx
ZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li45ZWI0YmRkZjA3Y2Y2MTY2YTU4NjBi
YWMwNzQ2MjZkMjk1YWNiMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiUHJldmlld0NvbnZl
cnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIgotI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKQEAgLTY1LDcgKzY0LDcgQEAgY29uc3QgUmVzb3VyY2VF
cnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKIAogY29uc3QgU2hh
cmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLmdl
dCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBA
IC0yMjEsOCArMjIwLDggQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQ
cmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgQVNTRVJUKG1fc3RhdGUgPj0gU3Rh
dGU6OkNvbnZlcnRpbmcpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252
ZXJ0aW5nKCp0aGlzKTsKIAotICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhh
c0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICBpZiAoIW1fcHJldmlld0Rh
dGEuaXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQorICAgICAgICBjbGllbnQucHJldmll
d0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS5nZXQoKSk7CiAK
ICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVu
dCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNCw3ICsyMzMsNyBAQCB2b2lkIFByZXZpZXdDb252
ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAg
ICB9CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWRDb252ZXJ0aW5nKTsK
LSAgICBBU1NFUlQoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3By
ZXZpZXdEYXRhLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcHJldmlld0Vycm9yLmlzTnVsbCgp
KTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMp
OwogfQpAQCAtMjU2LDcgKzI1NSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVE
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgaWYgKGRhdGEuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByZXZpZXdEYXRhLT5hcHBlbmQoZGF0
YSk7CisgICAgbV9wcmV2aWV3RGF0YS5hcHBlbmQoZGF0YSk7CiAKICAgICBpdGVyYXRlQ2xpZW50
cyhbJl0oYXV0byYgY2xpZW50KSB7CiAgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlk
UmVjZWl2ZURhdGEoKnRoaXMsIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNl
MmIuLmYxNGRlMWQ5MTRhNGNiY2ExNWE3NWQ2ZDVlNWUwZGNiNGM0YTlmNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAg
LTQxLDggKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVZpZXc7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBwcml2YXRl
OgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3ByZXZpZXdE
YXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRh
dGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZWFj
ODQxODNjYTNkOWE0NjQ4NzhjNmM0OGZjZTAyMjBhZGQ0NzlhZS4uOTA2OTVmYjA1MzdjMGEyYWYw
YWE0MWRhMjA4ODYzNTc1MzkyOGQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCkBAIC01MzgsNiArNTM4LDMxIEBAIHNpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsK
IH0KIAordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSgpCit7CisgICAgcmVzZXQoKTsK
KyAgICBlbnN1cmVCdWZmZXIoKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
QnVpbGRlcjo6dGFrZSgpCit7CisgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgcmV0dXJuIG1fYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisg
ICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOworICAgIHJl
dHVybiB0YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cit9CisKK3ZvaWQgU2hhcmVkQnVm
ZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cit9CisKIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwg
c2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUp
CiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRo
aW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKaW5kZXggN2Q4N2QzOTdhMzJkYTExY2EwNjIyYzA0NTk3MDZlOTk4OTdiODNj
Mi4uMmE4YWI2NzdkNmEwNjc3Y2I4MzljZTNkYTI0ZjU3MTllMTY4M2JlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNzMsMTkgKzE3Myw2IEBAIHB1
YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAgICAg
Ym9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotI2lmIFVTRShGT1VOREFU
SU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgot
I2lmIFVTRShDRikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwot
I2VuZGlmCi0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0KICAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKQEAgLTI0MSw2ICsyMjgsMjAgQEAgcHJvdGVj
dGVkOgogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8
dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xlYXIoKTsKKwogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBh
IFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVk
QnVmZmVyLgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwog
ICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihz
aXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CkBAIC0yNjcsMTEgKzI2OCw2IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVu
ZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCi0gICAgLy8gV2hlbiBjYWxs
ZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKLQog
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcigpIGNvbnN0OwpAQCAtMjk4LDYgKzI5NCw1NiBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAorY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAg
aWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIFdlIGRvIG5vdCB3
YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVk
QnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAg
ICAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSkg
eworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOworICAgIH0KKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZN
b3ZlKGJ1ZmZlcikgfSkKKyAgICB7CisgICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBB
cmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDog
bV9idWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVu
ZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAg
ICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQor
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsg
fQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgp
IDogdHJ1ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9
IG51bGxwdHI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVtcHR5KCk7CisKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuc3VyZUJ1ZmZlcigpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3RE
YXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjli
MjZjNWIzZGQ1OTI1NC4uNDdjMTBmOTgwMjM0YzlhYmM2MDg0ZWMyMTA0NTZmNmIxNTQ4MTkxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKENGRGF0YVJlZiBkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAg
ICBhcHBlbmQoZGF0YSk7CiB9CiAKQEAgLTY4LDcgKzY5LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
aWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3
M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IuLjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4
OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcs
NyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRz
TWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAg
ICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUs
NyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEg
aXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgp
Ci0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwog
CiAgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygp
OwogICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwx
NyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFy
cmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEg
PSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29u
RGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAg
IGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAg
cmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRy
YWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXRE
YXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgp
IHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7
CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBr
ZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYQogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdU
Rk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMu
dGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2lu
Z2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4u
NTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAg
ICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggMzJjNWE2NjhhMTZhZTQ4ZWVlOGM5ZDM4ZGJm
ZjEzMzA1ZmRhYzBiMS4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1f
cmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTAgKzIxMyw4IEBAIHZvaWQg
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtX2J1ZmZlci0+
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQo
KSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODcsNyArMzg1LDcg
QEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3Rv
cExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRh
dGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggN2Ji
Mjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1MWYzMmM1MC4uMzMwYmUyMTNjN2ZlZmVkYjJm
Nzg4YjVjMWVjNDQxYWY3MTk0OWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oCkBAIC01MCwxMyArNTAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NU
X0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVi
dWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJv
dGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0
Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAg
ICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZElu
aXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBw
ZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERh
dGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2Fk
KQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4
dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgeworICAgICAgICBpZiAocGF5
bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9w
YXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEw
ICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBi
ZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlk
OwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAg
ICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAg
IGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9w
YXlsb2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25z
dCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBl
KCkgY29uc3QKICAgICB7CkBAIC05MCw3ICs5NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0
aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGU1
NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3ZDQ0NDQuLmE0MmU1YmM0YWNjZjM3MjJh
NWFmOWM5MDU0NjJkMDhlZDg4NDE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRf
bWFya2VyX3B0ciBtYXJrZXIpCiAKIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5m
by0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAg
IGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2
LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
SUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmYKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFf
bGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1h
cmtlclNpemUpOworICAgICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAg
ICB9CiAKLSAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQw
OWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcs
NyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0
ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlv
blJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1
NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVl
NDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNs
ZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9u
Z2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFu
ZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdh
dGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxs
cHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
LCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBt
X2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBw
ZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFM
b2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRh
OworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZm
MDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUx
MTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpA
QCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmln
aW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9
CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+
IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEg
ewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAg
ICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0
LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVz
cG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsK
LSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
az4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVs
bHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8
UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZv
aWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25z
ZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAg
ICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBv
dWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAv
IGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5z
dGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNo
IHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVu
Z3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAK
KyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZl
clNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBi
dWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFz
a0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBi
dWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFr
UHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJl
dGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAq
dGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNl
c3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEy
OSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZC
eXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFz
a0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5
dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAg
IGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUlu
ZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBh
dXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAg
ICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAg
LTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5n
ID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1
cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUo
KTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1
cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGgg
PSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIs
NyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5t
X21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9n
ZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhi
ZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFi
YTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVy
OjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0g
c3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0Zjgu
ZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCks
IHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgp
CkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQog
ICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAK
LQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
KyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwg
c2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29u
c3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQo
KSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVu
dCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRh
KCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50
KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmls
ZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1
ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2Yjcx
YTA0MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVy
KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IFNo
YXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7
IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3Jp
cHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgp
KSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVm
ZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0Lgor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBl
bmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXIm
LCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCBhNGUwYWIzOWI5ZDY2ZjYwZmZkM2JjNzYzMDI2
MGQ2MWMxZjlmYmM3Li5mNmJjOWIzYjg0MTdhOGI4YmEzOTRmYjI4MTI5MmRmNTExZGQxOGVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJXT0ZGRmlsZUZvcm1h
dC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgsMTUgKzc3LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wg
V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3Ry
aW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9j
Y3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKLSAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNE
YXRhOwotICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7Ci0gICAgICAgICAgICAgICAg
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgq
Y29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwot
ICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAg
ICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwotICAgICAgICAgICAgfQorICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAg
IGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
Y29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAg
ICAgIG1fZGF0YS5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3Vv
dXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAg
ICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgIG1fZXJy
b3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyMSwxMCArMTIwLDcg
QEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5k
ZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uZGFiNzNmYzdiMWE5
M2VkNGUzZmViMzFkNjcwOThkOTliNTE3NmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBA
IC0zNiw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xp
ZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2Vh
NTNlMjQ2YjYzMzIxZmJkNDE0MWNjNWUyOWNlOTZiNC4uNGY5MDYyMDNiZDQ5Yjc3Y2QxMTdiYzA1
Y2Q4YmUyZTMwOGI2YzczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBA
IC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmluZ0FkYXB0b3JzLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXIuaCIKQEAgLTIwOCw3ICsyMDcsNyBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEg
ZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5l
ZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci50YWtlKCktPmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5v
cm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25z
ZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1
bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6
ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOSArMjE3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVy
PiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJU
KHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VS
VChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPSBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2VBc0FycmF5QnVmZmVyKCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRUaW1lb3V0KHVuc2lnbmVkIHRpbWVvdXQpCkBA
IC03NDEsNyArNzM4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZl
cnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERv
Y3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIucmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAK
QEAgLTEwNjUsOSArMTA2Miw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVy
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAg
ICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRh
dGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBs
ZW4pOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li44
MzI0OTY4ODM1YjAxZWE4MDQ3YTBjY2JlODdjNTdhMzQxMjRkMmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9y
LmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtNDUsNyArNDYsNiBAQCBjbGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7
CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNw
b25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1NzdkNjU2ZTY3ZmNjYTQ2NDA1MGJmZDM0
ZGFkYzJhMzYyNWUyMzAxLi4wYjlmNDlkMzY0YzI1OTVlMjIzYjMxMTRkZWFmY2VlOTJhNDAwZmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0zMDYsMTAgKzMwNiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJz
dExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAo
aXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBf
cykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVz
ZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMg
PSBtX3BhcmFtZXRlcnM7CkBAIC03MzQsMTYgKzczNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJl
c3BvbgogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3Rh
dGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNv
dXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1l
VHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVy
cy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1C
dWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBs
YWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFu
ZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNT
eW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZm
ZXJlZERhdGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5yZXNldCgpOwogCiAg
ICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wg
dmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7
IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2OSwxMCArODY5LDEwIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8g
UHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0
IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAvIDg7Ci0gICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAg
aWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CkBAIC04ODAsNyAr
ODgwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0
YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkg
ewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFy
dEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTA5LDExICs5
MDksMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAgICAgaWYgKGlzU3lu
Y2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3lu
Y2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmlj
cyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3Vz
TG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWRE
YXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhl
IGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1
ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEu
Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAg
IH0KQEAgLTEyNTksMTIgKzEyNTksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1
ZmZlcmluZ1RpbWVyRmlyZWQoKQogICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CiAgICAgQVNT
RVJUKG1fbmV0d29ya0xvYWQpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkp
CisgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1f
YnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZm
ZXJlZERhdGEuZ2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0g
ICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVy
ZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7
CiB9CiAKQEAgLTEyODksMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9j
ZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJf
UkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZl
dGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNl
KSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9u
LT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51
cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0Vf
TE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2Fj
aGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0g
UmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBt
YXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAg
ICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzcz
NzBhOWYxNTk1OTdmOTcuLmM0MjM0NjUxYmE5MjhiOTVkOGM2ZjU3YmUyNWM1ZjIxMTg5ODlmM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3Qg
bV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7
IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNo
cm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNv
cmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2Fj
aGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9v
bCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0
ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZm
MmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9u
c2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQo
KSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2Nl
ZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9k
aWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0x
MjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZl
ci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0
byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3Rv
cmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
Z2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5
bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2Nh
Y2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtl
RW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVu
dHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhl
ZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlk
Q29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKaW5kZXggZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBk
YWI4OC4uMzczYWNjMWJjMzBhMTFlMDdmYThkZmVlZGMzYjhhODIzOWMxYTBkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTE4NywxMCArMTg3
LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAog
ICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAg
IG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRh
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
Tm9uZTsKICAgICB9CiAKQEAgLTIxNSwxNCArMjEyLDExIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5
cGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OldhaXRpbmdGb3JSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwotICAgIAotICAgIGlmIChp
c1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1f
c3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCisgICAgaWYgKGlzU3luYygpKSB7
CisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS5zaXplKCk7CisgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jl
c3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxs
cHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJM
U2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBt
X3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkz
ZGQwYTQ3ZjJjMTMwODUyNjcuLmRkNmI3MjQxMGFkZDRlZjYzMWQyODA2OWUxNGEzZjJhMDBjNWNj
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTQz
LDcgKzQzLDYgQEAgY2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNCw3IEBAIHByaXZhdGU6
CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVy
OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcw
OTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li41YzMxZWRmMmU1NTA5ZDY3ODY1N2ExOWEy
ZjQ1OTYwOTNhODQ4NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtNDAzLDEwICs0MDMsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAg
ICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgICAgIG1fbWFudWFsU3RyZWFt
RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEu
YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00Mzcs
NyArNDM0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBt
X21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAg
ICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5yZXNldCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI2LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3
aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1f
cGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJl
YW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1
cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51
YWxTdHJlYW1EYXRhLmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAg
LTEyNDMsOSArMTI0MCw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFt
KCkKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0
YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1E
YXRhKQorICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7Cisg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAg
ICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxl
bWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxs
cHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVh
bVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIz
Li43MzI3NDFkOTVlZTZhMmI2NTZmM2Q4YzA4YzhhZmZiYTdlMmZhZjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5WaWV3QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1l
ci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTI1Miw3
ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21h
bnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxT
dHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0
cmVhbURhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX21hbnVhbFN0cmVh
bURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZl
Y3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1
YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4Nzdm
NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAg
Kzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAg
ICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVz
cG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Piht
X3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEp
KQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7Cisg
ICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDgg
KzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10o
c3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAg
IGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNd
KGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZl
RGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAg
ICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcx
YjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRm
ZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyAr
ODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9h
ZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJl
ZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2Vi
Q29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVz
cG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4
ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uMjNkMDExNGIwZTk0MGVlMTM0M2UyNDc5NmYzZmM5
N2FhZTMyZTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
CkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQ1
LDcgKzQ0LDYgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBm
aWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9
Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogewogfQogCkBAIC02
OSwxMyArNjcsMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2Ut
PmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdl
dCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFrZSgpLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1
ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4
Ny4uOWU2ZjUwZjFiMzI1YTEzMzNmMmM5NGMxNzQ3NGMwYTdmNTM0ZTVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNv
bnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMx
OWI1Li42ZGM0YTQ4NTJhMTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFt
ZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVU
eXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVh
bSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwg
X0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBT
VEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxB
R19OT05BTUUpKSkgewpAQCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9h
ZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJT
VFIKICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3Vs
ZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAg
ICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYg
KFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9O
Rz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZm
ZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlw
ZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRC
dWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDZhNGVhNzA5MWYwYzhhZTI3ZmQ3MWEyZjIyNDdlMjdiYjcwNGIy
NjAuLjY5NWQ2OTE4ODRkMTM4MmEzZTk3NjRkOWUyMDQ0OWY2ZTdkZmUwYzAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQ
SSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmls
aXR5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwCmluZGV4IGJhYWUyN2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZiZDRmMDUyMmMyMDAuLmFk
ZDI0OGIwZGUyZDJmMTFjNWExZjUyY2E3ZThlZmE5NDkyNzRjMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCkBAIC03NCwyNCArNzQsMTYgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1
ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVY
UEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7Ci19Ci0KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoY29u
dGlndW91c0J1ZmZlcik7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
b250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJh
IiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1Rf
RVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWls
ZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChz
dHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RS
VUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTksMTAg
KzkxLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikK
ICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0g
IldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIGF1dG8gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERh
dGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERh
dGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERh
dGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVz
dERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEy
LCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBl
Y3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VR
KHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlC
dWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExNCwx
MCArMTA2LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
ckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicp
OwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0g
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2
ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIu
Z2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAw
eDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBv
c2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0x
NTQsMTcgKzE0Niw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0
dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywg
YWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1
Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyBy
aWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0
aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
MSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIx
LmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250
YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgp
LgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAg
YXV0byBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGgg
KiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNs
b25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAg
ICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBF
WFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10g
PSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBi
dWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8v
IFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgp
LCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVp
bGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWls
ZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tC
dWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBj
aGFyKiBleHBlY3RlZCkKQEAgLTE4MiwxOSArMjEwLDIxIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAn
ZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wn
IH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIp
KTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7Ci0gICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVE
YXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBp
amtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRT
b21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdo
aWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNk
LnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgp
LCAiZ2giKTsKQEAgLTIwMyw2ICsyMzMsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwog
ICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlq
a2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAg
ICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CiAg
ICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwogICAgIGNoZWNrQnVmZmVyKGdo
MS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVm
ZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAgLTIxMSwxNiArMjQyLDE4IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8
dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAg
ICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1
ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2En
LCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOwor
ICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdj
JywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKICAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKICAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7
CkBAIC0yMzAsMTEgKzI2MywxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRv
KQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1
aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
dDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1
bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUx
MiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVm
ZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmco
KSwgIiIpOwogfQogCkBAIC0yNTUsMTYgKzI5MCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNp
bXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsK
IAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVu
KHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9F
UShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0
KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
Mik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4
dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihz
aW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxF
KE1IVE1MKQpAQCAtMzE5LDE1ICszNTUsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsK
ICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0K
LSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNjQs
MTYgKzQwMiwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0
YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hl
Y2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4o
c2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRl
eHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAg
ICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVm
ZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVD
VF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJl
YWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQxMiwxNyArNDUxLDE5IEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkK
ICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2lt
cGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwot
ICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXpl
KCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0g
ICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBj
aGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcyOTAzNDViNDJmMTBjOWIyZjIz
ODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3YjZkOTkz
Mjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3IEBAIHN0YXRpYyB2b2lkIGV4
cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8
TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVy
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJo
ZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBo
ZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAg
ICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxl
bmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjksMzIgKzcwLDMy
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNE
YXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07
Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhl
bGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxk
RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAg
YnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAg
TlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAg
ICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRh
Lmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAg
IGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBz
ZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVu
dC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdt
ZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2Vn
bWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAg
c2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRp
b24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21l
RGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9u
KSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdl
dFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRh
bERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENv
dW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgp
OwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21l
bnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
ZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgp
LT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xh
c3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0
Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446526</attachid>
            <date>2021-12-09 05:30:54 -0800</date>
            <delta_ts>2021-12-09 06:03:33 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211210003052.patch</filename>
            <type>text/plain</type>
            <size>517753</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRmMDIyNzUwMTQ3ZDYx
Y2FmNGI4NGQ4OGVhZmY4NTRmNzBlYzRhZS4uMGNiYmY3OTI3NDUyNzFhOWI1NzhhOTc0OTliYzFk
MmNiYzgwYjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBBIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBs
YWNlbWVudCB0byBSZWZQdHI8U2hhcmVkQnVmZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbnVsbCBhbmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxv
d2luZyBhIGNhbGwgdG8gcmVzZXQoKSwgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAg
ICAgICAgd2lsbCByZXR1cm4gdHJ1ZSBhcyBvcHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBj
cmVhdGUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6
ZSBvZiAwLgorICAgICAgICBBIG51bGwgU2hhcmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhh
dCBhcHBlbmQgd2FzIG5ldmVyIGNhbGxlZCBvbiBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVt
cHR5IFNoYXJlZEJ1ZmZlcikuCisgICAgICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sg
aWYgdGhlIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGlu
ZyBjb3B5KCkgb3IgdGFrZSgpIGFzIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0
ZWQgaWYKKyAgICAgICAgbm9uZSBleGlzdHMuCisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lv
bnMgd2VyZSBtYWRlIGR1ZSB0byBob3cgU2hhcmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAor
ICAgICAgICBhbmQgdG8gbWluaW1pc2UgdGhlIGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3
b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxk
IGFsd2F5cyBjcmVhdGUgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAg
ICAgIGl0cyBzaXplLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGlu
Y3Rpb24gYmV0d2VlbiBudWxsIGFuZCBwdHkgd291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4K
KworICAgICAgICBXaGlsZSB0aGUgYWltIHdhcyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1
ZmZlciBvbmNlIGJ1aWx0IHdhcyBpbW11dGFibGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3Qg
ZW50aXJlbHkgYWNoaWV2ZWQgYXMgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBS
ZWZQdHIKKyAgICAgICAgdG8gYSBTaGFyZWRCdWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0
byBpdCB0aHJvdWdoIGl0cyBTaGFyZWRCdWZmZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxs
IGltbXV0YWJpbGl0eSBjb3VsZCBiZSBmdWxseSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSBy
ZXR1cm4gYQorICAgICAgICBzaGFsbG93IGNvcHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFw
IG9wZXJhdGlvbi4KKworICAgICAgICBGbHktQnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZp
YSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0
byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291
cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
YXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJj
ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVy
QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdl
YkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlNDhiNGJmMGM5MzFmYmUxZmJkNTQxNzc3NGM1
YWNjNjJkNDBiMC4uYTYxYzQ2MGRkN2E0ZmI3MjI1ZTIzODgyZjFhYjFjOTExOWRkNDBlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2No
ZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFt
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1
MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29w
eSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgor
ICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6
OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcElu
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5j
b2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+Ojpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAg
ICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25z
dCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAg
ICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdobGln
aHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRG
aWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVU
YXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6
XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbik6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0
aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmls
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2Fj
aGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBj
b25zdCk6CisKIDIwMjEtMTItMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIENvcHkgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIgZXJyb3Igd2hl
biBmYWlsaW5nIGl0cyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggZDA4NDQ5YzE0OTI5MDRkZjhlMzRlOTJmYzE3NWVjOGI0YjVhZmNiOC4uODE3
OTUxMjExM2JjNjgzZjliYWU0OGExZWFlYTgyMjk5ZTYzYzRiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAz
MAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgt
W0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRh
U291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVu
dUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dl
YlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0
YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0w
OSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0
ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZp
bGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA1ODQwZGUxMTY3NzE5YTA2MzliOGEyMWJiZGFlOWQ4
NGVmN2Q4OTJhLi4zZDBmN2ZiN2Y3YjE2NTNhN2JjYzkxZDVmNDVkZmYwYmFhMTViYzNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMTItMDEgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAK
KyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpk
YXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6
Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDkg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVh
ZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxl
cyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEy
ZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFm
ZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZO
ZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmlu
ZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5
ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1l
VHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJ
bWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBO
R1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxv
Yjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21h
Yy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNh
NTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2UzOTA4OTI2ZThl
ZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJv
YXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImlt
YWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9j
XSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBh
dXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChh
dXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpu
aWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwog
ICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRp
b25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3
Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29t
cHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRf
dCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURh
dGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAg
ICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVs
bHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi40MmZl
OGZkZmQ0OWQxZTYwYThkY2YxMWMxMmYyZmIwM2UzNDY4OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9z
aXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0
LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25z
dW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVy
KSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25z
ZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdU
Rk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksMTUgKzI5OSwxNSBAQCB2b2lkIERPTUNh
Y2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3Bv
bnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAg
ICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9u
LCByZXNwb25zZSwgZGF0YS50YWtlQXNDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAg
fQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1
ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9u
c2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCld
KCkgbXV0YWJsZSB7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJl
c3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gK
IAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBi
dWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkg
PSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25z
ZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9t
aXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3Bv
bnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVu
aygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAg
ICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RG
TW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0
aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5r
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVy
KCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RG
TW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBA
IHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNl
PiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtl
QXNDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3
ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZl
MmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAg
LTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwg
RXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVu
dW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAg
IHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgz
YTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMy
NDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9u
c2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9
LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewot
ICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJl
dHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11
dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51
bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2lu
ZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25z
ZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7
Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VC
b2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2Uy
NmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJh
ZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5k
TG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29s
IHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVN
YXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29s
IGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMs
IGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlz
b2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQg
UmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQw
ZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lz
dHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUo
KSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwog
ICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1
dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVm
ZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lk
c0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJy
YXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9
IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRl
eCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZl
MTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXIm
IGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwog
ICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0
aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Yi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25z
dCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8
S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4g
TWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWly
ID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxC
dWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlC
dWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBjMDQ3MzEyODRmNjc2YWE1YzUw
Zjk0MGJlNGY2NjE3MjVkOGJmOGFjLi5kNjViMjdiZmU4YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3
MmQ2MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBA
IC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93
bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5
Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFC
b2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXIt
PmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29s
dmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRC
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwog
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1F
OiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBv
dGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9k
eTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAg
IHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAo
YXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6
OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3Jt
RGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAt
Mjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAg
ICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBA
QCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4g
Zm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChp
c1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
UEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5n
KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29k
ZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5i
eXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5
QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CmluZGV4IGJhZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMw
MDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRh
dGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAg
VGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+
JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIz
OTdhYzU1OTNiNDRiNTM5ZDNlNjcxZTQzY2U2ZGIuLmRkNzdlM2JlYjMzNDIwOWRkYjZlOTY0NDZj
Njg5YjM4NmE0NDJmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNo
Qm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVm
ZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVBy
b21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFj
aygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2
ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAg
ICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5r
ID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90
eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2lu
ayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90
eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJl
dHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29s
dmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChj
aHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBj
b250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURh
dGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0
byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAp
KQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBj
b250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwy
NiArMzI2LDI1IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFw
cGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsK
LSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKLVJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAoIW1f
YnVmZmVyKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAw
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsK
K30KIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOwor
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCk7CiB9CiAK
IFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1Miw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAg
IGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVj
dG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBl
KSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIp
OwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxv
YkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJl
dHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgp
LCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNU
ZXh0KCkKQEAgLTM2Miw4ICszNjEsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAot
ICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZl
ci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgYXV0byB0
ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzgyLDgg
QEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2Up
CiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7
Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZm
ZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVy
KCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4
Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5Yjcz
NjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAg
LTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1
ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAg
ICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJy
ZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRv
U2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1f
c291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKaW5kZXggNGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBkM2Y4NDhmNjRmMi4uYjkzNDM5
MmE5MDNkNGE1ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURh
dGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5r
IHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1
bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9k
eVNpemVXaXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAg
ICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAot
ICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhp
c10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlm
IChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAg
ICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2Mz
ZjZlMmZkYjY2NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTkyNzI5MzBiYmMyZDE2NjZjNmFl
YjU0N2ExYjVlZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkg
ZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0
YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAg
ICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3Bv
bnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFh
N2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2
NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewog
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0g
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdo
bGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwog
CiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYx
ZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIz
NGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDgg
QEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4
MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRS
YW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0
byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAg
ICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgw
NWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFh
MmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0
cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29k
ZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2Rl
S2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0K
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJL
ZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRh
dGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3Qg
dWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2
N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlE
YXRhJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0
YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
MGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNm
YzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlv
bi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJp
YWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0g
c2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxv
YikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0
byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyAr
MTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBh
IG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3Ig
bmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBm
b3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNh
Y3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtl
eVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBp
bmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRl
eEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkp
OwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAg
LTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29y
ZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRl
eEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwor
ICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsK
ICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYx
LDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0lu
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0
c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRh
KTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAg
ICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAt
MTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVS
ZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJl
bW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQg
ZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5
IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9y
ZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBv
YmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5Lmlz
TnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7Cisg
ICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAo
IWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBs
b3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1
cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQog
ICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1
cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJL
ZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJf
cyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAg
IEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBl
OjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7Cisg
ICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBs
b29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5k
ZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxv
d2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9Owog
ICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElE
QktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAg
YXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlm
ICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAK
aW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQz
YTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAK
QEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAg
IGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVy
KSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1
cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUlu
ZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
IChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpi
dWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5k
IGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3
Yjk0YzllN2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3MzA1NjU3ZDBhOTcwNTY2MWU0
YmI0OWNlMGI4NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9T
ZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNz
YWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEo
bV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgp
LCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0
YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNl
MTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1
NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2Vz
KSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0
YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsm
XShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0
YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5jcHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODll
MC4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291
cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBt
X2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRl
ID0gZmFsc2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBtX2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgp
OwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1f
cmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEs
IGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAK
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFp
bGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1f
ZGF0YS5yZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0
ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9k
ZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0
YS50YWtlQXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNl
LnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJi
YjFhZjJjODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3Vy
Y2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVz
b3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRl
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
aW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQy
NTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0Qu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3Vy
Y2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJN
b2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0g
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5
NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGlj
IEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9h
ZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4
Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5v
dCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBb
Jl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1
YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0
YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1f
Y29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAg
bV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1
b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAg
bV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAg
IG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMo
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCpt
X2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAg
ICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygp
OwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1
ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRh
YmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJp
bmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAppbmRleCBhZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBjM2E4YzY5YTljMzFkLi4zYzVl
YTliODlhOWM5ZTkwMzcwYjk4ZGY1Mjg1NjMwNjQ5OTAwN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRG
YWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NF
UlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZH
Rm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2
Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAg
ICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRP
VEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250
LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygp
KTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5E
b2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NG
b250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBp
ZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRl
U291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRp
YXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgo
KSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFw
cGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIz
YjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRT
ZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBA
QCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENh
cGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZh
Y2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdl
YWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250
cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRl
ciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Z2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1f
aW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0
Li5mYTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwot
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjEx
YzIyOGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291
cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFz
cyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRp
dENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxv
bmVJbWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5
cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmlu
Zz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0
RGF0YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5I
VE1MRm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQoRWxlbWVudCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlz
aWJsZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Cisg
ICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYK
ICAgICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRy
aWJ1dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAw
NmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4
OWU5OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRp
ZmllcjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
aW5kZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAw
YzY1NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6
OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICgh
YXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRh
V2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVT
IGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRl
ZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAog
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAg
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRh
Rm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMs
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVj
dG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lk
IEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBk
YXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAg
ICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAg
IG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEy
ICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJE
YXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRX
ZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewog
ICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
bV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRh
UmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAK
IC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2Zl
ciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZp
c2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVT
dHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZE
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYg
KCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRG
REZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9
XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJU
RkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAg
ICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgw
OGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5
YjViMTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRB
dHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAg
ICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkg
ewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAg
ICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIp
IHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVu
dExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAg
IGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJl
c291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2Zp
bGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxl
bmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsK
QEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmls
ZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYg
KENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAg
ICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiBy
ZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJi
OTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjcz
MDk4MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9p
ZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAg
ICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9
OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+
dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
bmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RF
bGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0g
ImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RG
TW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUt
PmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcg
KzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RN
YXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5
cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1
cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1h
cmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFp
blJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9Owog
fQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3Vw
QW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3
ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJl
cGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpm
cm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZy
YW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1l
TWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1
bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01J
TUVUeXBlQXNIVE1MKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdz
KCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnBy
ZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYg
KCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJv
b2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJm
MDliNzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0
ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50
JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVu
Y3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUg
c2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2Vk
IGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1Mg
WCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2
ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBT
dHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVz
aXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50
cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhG
VFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGlj
IGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShj
b25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1w
bGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCkt
PnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1
bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
c3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQg
cGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVu
dCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBn
ZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3
MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uYjk5NzZhZjJlNGRkNDA5YTg5YzNhNDI0NDEzOWEz
ZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02
Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhhc0Rh
dGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9
IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwor
ICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZm
ZXIucmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiAr
ODAsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZp
Y3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZm
ZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5z
aXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBw
ZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBB
U1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1f
ZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAg
IGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7Cisg
ICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci50
YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUo
KTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFs
c2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
QnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAg
ICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBl
ZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4wNGIzNTUwNzMzN2M4Yjg2
MWIzODNkODgxM2RjMDNmMmEzODkxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgog
ICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxs
VGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9v
bCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAg
ICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90
IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0
YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5n
IG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAg
ICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFmODUyYzIzNjJiMzk5NDli
ZGQuLmU1OGJjYzJhYTdmODE0ZDk3N2ZmN2Q4ZjI2MjNjMzdlY2JhN2MxZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkK
ICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVz
b3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVz
b3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2
NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJl
c3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggOWI1Y2FkOTU5YThlNmYyYzJiZjcwZTFhZWUxNDI4NzQ1
OWQwNjYxMi4uYTNjNjBjM2I2OTZhODNkODMxZDg5N2Y4MTY3YTMyYmUyMzczNzFiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1h
aW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rp
bmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVy
Q29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewot
ICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9
CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2Qy
MWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQg
Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChy
ZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3Vy
Y2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNl
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkp
OwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4
IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTcz
ZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcg
QEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRS
ZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9h
ZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVy
cm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxv
YWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0
aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggY2Y2Y2NmMmJkMDg5MjUwYzYwM2ZkMDRiNzRj
M2VjOGMwZTQ5YzRmMS4uZmRmZDBlYWFmM2E1MDE4ZDkwMGJhMWE2ZDdhNDhhZTU3MzJmMzRjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA1LDExICsx
NjA1LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAg
YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZl
LT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+
bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2Uu
ZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1h
a2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1p
bWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1p
dERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6
ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJl
c291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0x
NjQ5LDcgKzE2NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJj
ZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAK
LVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QK
K0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBA
IC0yMjUzLDcgKzIyNTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRp
bmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2Uo
KTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNl
RGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkp
OwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZjdmM2YzODQ0ZjE4NDQ3YmU4ZGQ3Yjgy
ZDNhNDQzNTAwMjIxNjc2Mi4uYTAwZTE0YTczYjBlOTQ2YTBhMzc1N2I5MzE3Y2IwZjQyZDRkOWYx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcg
QEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291
cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7
CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hp
dmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJj
aGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZy
YW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJj
ZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAz
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElW
RSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0
ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUx
ZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAg
Ly8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3Vw
cG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJl
c291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBh
dXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggZDY4OGQ4MGE5YmQ4ODhkMjlhYjkwNmU2NDY3MDYwMTdjZmI2
OGE0Zi4uMTFmNjcwMmQxZjY4ZmRlYmFlNGFlYTM1MjY2ZTAyZjg0MTdkZTJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7
IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5h
bCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRl
V2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFhZThiODRkYjkyMGI2NmVi
ZjIxNGYyNmVjOWFkNi4uZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2ViNTU0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRl
bnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRl
ck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291
cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kg
Y2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBT
dHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlciht
X2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdv
aW5nUmVmZXJyZXIoKSk7CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRh
dGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQ
b2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwg
YnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBw
bGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVx
dWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVl
c3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihv
cHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0
aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5h
dGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5k
ZXggZWRlY2UxMmNkN2E5NmZlYjkzNWMzMzQ2NmM0NmNhZTAyMGUyZjNhYy4uOWMzZjc0YzQyZGI4
ZTdiYWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2Fj
aGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpA
QCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVO
QUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNo
aXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQ
b2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJj
ZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
KyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRj
aE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3Rk
OjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9t
KCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2
NDY2OGU0OTUxNzZhYzIzNS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1
MCw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRp
ZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291
cmNlRGF0YS5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
KCk7CiB9CiAKQEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRh
QnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAg
ICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVy
aW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAg
ICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNl
dCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVz
b3VyY2UoKQpAQCAtMzM0LDI0ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAg
ICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3Vy
Y2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsK
LSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVy
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisg
ICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQotICAgICAgICBt
X3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5h
cHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5k
KGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5n
dGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURh
dGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewogICAgIGlmICht
X3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgICAg
IG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uMzdkNjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IApAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNv
dXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEo
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpA
QCAtMjI3LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJl
ZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0
YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
RGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBk
YXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBk
YXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAy
Y2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBj
YTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Uo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRh
KTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZl
cmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxv
YWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9h
ZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0K
IAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyAr
NTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJj
ZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBh
NzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0
VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCht
X21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21h
bmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAg
ICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5J
RkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBm
YWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENh
Y2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNI
RSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIz
ZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2
MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJs
eSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVy
biByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7
CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VG
cm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQog
ewogICAgIC8vIElmIG5vcm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJl
c291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRh
bCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9y
IGlmIHRoZXJlIHdlcmUgbmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2Vs
ZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSBy
ZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVx
dWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNw
b25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVl
ZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUg
Y2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1v
ZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAg
ICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2
MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRl
cjsKIGNsYXNzIEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7
CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNl
KFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25v
dXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFs
bGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
LCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAK
ICAgICBib29sIGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcx
MDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikK
IHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGgu
aXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJl
c3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsK
IH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlw
ZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUx
Nzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3Yjhi
NTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJl
c291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5j
NzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1
dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElO
VE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAg
IGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAg
U3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBA
IC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJl
c291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJs
b2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5k
QmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3
MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFl
eGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNv
dXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2Un
cyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2Yg
bWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+
ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3Vy
Y2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMs
NyArMTExMiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0
dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25l
ZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2
NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3Rh
dGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAg
ICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7
CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIy
MTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIz
YzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3Qg
YmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3Qu
Z2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRh
KCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwg
TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51
bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAg
ICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJl
c291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNv
dXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291
cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291
cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNl
S2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0
dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNy
ZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25h
cnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAg
ICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNw
b25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhB
cmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlz
IG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRh
KHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQog
CkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBm
cm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2
ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEg
PSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0
YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBl
cnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBw
bGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlz
dENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxl
LCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3
NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJl
bGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAg
ICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgp
KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHBy
b3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGlu
dmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
CisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6
ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGlu
dmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAor
CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFy
Y2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAg
ICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2Ug
aW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMz
LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZh
bGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2Ug
PSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1
YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0z
NTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBh
Ym9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJm
cmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUt
PmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hp
dmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExl
Z2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAg
ICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3Vi
ZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcs
IEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwot
ICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBh
IFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3Bv
bnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkK
IAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hp
dmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4g
aWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQg
KHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0
cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lk
dGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVc
IiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCku
dXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAy
MmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJi
YWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAv
LyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxh
Y2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVy
cyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJ
KCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAg
ICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEu
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAg
Zm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVy
LmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFy
Y2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29k
aW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxy
XG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCks
IGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTog
aWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBo
YXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0
YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNp
emUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFi
bGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5j
b2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNT
RVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdl
IGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1
dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3
ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1M
RGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0g
ZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNp
emVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4
aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29k
ZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAg
ICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCAr
PSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtl
U3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1o
dG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1
ZS4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4YTcyNDE1MjMwZDEwOWIxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAt
MTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVu
ZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0
eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFy
eSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFj
aGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2Rpbmco
KSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVx
dWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29u
dGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBh
cmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAg
ICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEw
ICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51
dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0
ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNv
bnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAg
ICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0g
TUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxp
bmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250
ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBD
Ui1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgi
XHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVI
ZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Cisg
ICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZUFzQ29udGlndW91cygpOwog
ICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAg
Y2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJh
c2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJp
bnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAg
ZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAg
ZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBk
YXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJM
IGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUg
aXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZl
IGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAg
IC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRl
IFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNGYyMjhlOGQwMzg5YjhiOGNiN2Y0MTQ4NmZk
Yjc4MWM5YmY2NWJkMi4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
LSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAg
ICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThk
OWFlNWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1
Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBj
b25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjlkMmRj
NzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlw
ZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNo
ZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJh
dGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKQEAgLTk3LDEzICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQ
YXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRh
dGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3Vu
ZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRT
aGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRo
ZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29k
ZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsK
ICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0
IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMg
Y2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQy
NTc5YjhkOWE3YTEuLmQzN2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4
MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNl
ODI1MDY2NmEzMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZv
bnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0g
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2Rh
dGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250Ojpj
YWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21l
bnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYg
KCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2Fk
aW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5
IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdy
YXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVm
ZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1
LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3
YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4
Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2Zm
MmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21G
b250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJv
b2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0
aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9t
UGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0
ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRS
ZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHZvaWQgZGlk
QWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92
ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uN2Mw
MWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5l
IHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291
bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFy
ZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9k
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+
c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29s
IENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNl
Y29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVk
KFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkp
Ci0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lU
X0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1
bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEo
KSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERG
RG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0
aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90
IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFn
ZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBA
IC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURh
dGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVy
dGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2
M2ZlYjg1YmEwNTUyMDNmNC4uZDUxM2UxNmNiYTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDgg
KzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBi
b29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1f
aW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUs
NyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lk
IGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdl
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYp
OwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9p
ZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJi
MDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODQyYmY1ZjIwZTA2ZmQ4M2E3
MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJp
Z2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZm
ZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkK
QEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0g
JmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBw
cmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkg
PiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7
CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVm
ZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpA
QCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVm
ZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAg
ICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNo
dW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwot
ICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEt
PmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlm
IChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
aW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwog
ICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1
NTY1OTk1M2UyOGJhNjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVk
KCkgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGly
ZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBz
dHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZp
bmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKaW5kZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3MmEzZTJhMDEwZTc4MTA4
OC4uNTU2OTY0M2NkNWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBt
ZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZm
ZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJl
c291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVj
a05vdGlmeShtZXRyaWNzKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
OjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRh
KQogICAgICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlm
ICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5j
bGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVm
IHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXgg
Mzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uMjE4ZDc0ZjI3NzZhOTY1
ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAg
ICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3Ig
PSBlcnJvcjsgfQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJM
b2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25n
IC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNo
YXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpA
QCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRS
ZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VS
ZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
IAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAv
LyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3
MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYw
YTBiOWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2FjaGVkU1ZH
RG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGlu
ZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVz
ZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAg
ICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdz
LCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAg
ICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVm
MzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMz
NjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4u
OWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBi
b29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxl
QXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5h
bFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3Vt
ZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3Ig
PSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9v
bCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJz
dEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAg
IG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBj
Ni4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHBy
aXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9u
dEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVs
ZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVu
dD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA1
NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li4xZGY1YzRiMTdlZWViY2I0
ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVuc2lnbmVkIENhY2hlZFNj
cmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAotdm9pZCBD
YWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjc1
YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBm
MzIwODZiNWRlYjYxLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApA
QCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRh
ID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIo
bV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0
ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBk
YXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEp
OwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4
dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwog
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIw
NjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNm
NGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRl
eCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5iOWE2NTg3NTNjZTlm
N2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYgQEAg
U3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4g
bV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRh
dGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlm
IChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnko
bWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEw
Y2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMz
NGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJM
UmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRv
ckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNl
c3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNr
Q2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2Vk
KFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2Eu
bW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2
Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyAr
NDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNl
Y29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQg
YmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0Nh
Y2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hl
TW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3Bv
bnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJl
ZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2Fj
aGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRN
ZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZv
aWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBE
aXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1l
RmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291
cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lk
IERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVt
b3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVz
dCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIw
YmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmZmNDBjNDE2Y2M2MTZlOTJiMTMwN2JhYmI3ZTM0M2Iz
N2U1NDYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNyw3ICsz
OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2
YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcwLDcgQEAgcHJp
dmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBS
ZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX29yaWdpbmFs
RGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAg
IGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZj
OGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li41ZWRiNGQ2ZmFiOTFlYjkwNmEzZGRjMzkxODRk
NTQ1ZjVlMWJlZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFw
cGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBtX29y
aWdpbmFsRGF0YS0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1
ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwogICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlk
U3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+
Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0
ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07
CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQ
YXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29y
aWdpbmFsRGF0YS5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdh
Y3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJl
dmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJl
dmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQg
eyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2Nv
bnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmVt
cHR5KCkpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91
bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCku
c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYy
NWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50
OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0
ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCAyY2QxOWExMTBiMmI4NjkyM2Y0NjMxMjk5ZGEzNTUwNjNjOGJiNTEx
Li45YzkwMGJlOGY0YzUyMTE0NzU2NjMwMTkxMWJiOTNiMGNlMzdhNmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTE5NTUsNyArMTk1NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxl
U2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5p
c2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhl
IGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdo
ZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8g
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxl
U2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKaW5kZXggMTY1YWE4MDU4YTAzOTBiNDUxNTc5YTE0NzYxYmQ4Njc5
NDkzNjQzMy4uMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2Rl
cygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJ
bmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5z
dWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5j
b2RlKHRleHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBt
X3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVS
THMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcg
KzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBu
b25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0RW5j
b2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQo
dGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVy
bCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
IH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50
b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAg
ICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBA
QCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBp
bWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBX
VEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jl
c291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5o
CmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4
ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJj
ZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZl
Y3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2
Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3
MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBA
QCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxl
TmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmlu
ZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUz
NGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hh
cmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNl
cHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsK
LSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEs
MTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBs
b2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVu
ZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAg
ICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxl
LmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdU
Rk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmICht
X2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNp
emUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlm
IChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5k
bGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1
MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0
MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
S2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5o
CkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNv
ZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwg
ZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1
NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5
NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50Owog
Y2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVj
dCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRX
ZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFy
dENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3Rv
cjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50
T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
bldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5k
aWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAj
aWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0
cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGll
bnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVu
dERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUg
aW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
YWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJl
c3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJp
bmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVh
ZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNo
ZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4
OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJy
ZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBA
QCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2Ft
ZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNv
ZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNv
ZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3
IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lz
dGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFz
dGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVy
LmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAz
Li5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBA
IC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0
b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYm
KTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcy
NmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRl
ODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3Rl
Ym9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rp
b25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5h
bWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZv
ckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyBy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0
ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9y
PFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUy
Y2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRl
ckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJv
b2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1h
dDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3Jt
YXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4
Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00
NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5m
bzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGlj
OgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBh
c3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3Ry
aW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25z
dDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3Jp
dGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3Ry
aW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRj
YjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRiZGRmMDdjZjYxNjZh
NTg2MGJhYzA3NDYyNmQyOTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJQcmV2aWV3
Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBAQCBjb25zdCBSZXNv
dXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25z
dCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0Rh
dGEuZ2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNl
KCkKQEAgLTIyMSw4ICsyMjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xp
ZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQobV9zdGF0ZSA+
PSBTdGF0ZTo6Q29udmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoKnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkg
JiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlk
UmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlmICghbV9wcmV2
aWV3RGF0YS5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAgIGNsaWVudC5w
cmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLmdldCgp
KTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQo
Y2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBAIHZvaWQgUHJldmll
d0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50
KQogICAgIH0KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hlZENvbnZlcnRp
bmcpOwotICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQo
IW1fcHJldmlld0RhdGEuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3RXJyb3IuaXNO
dWxsKCkpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygq
dGhpcyk7CiB9CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxl
Z2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBpZiAoZGF0
YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlld0RhdGEtPmFwcGVu
ZChkYXRhKTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAogICAgIGl0ZXJhdGVD
bGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0
Y2Y4Y2UyYi4uZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRhOWY3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgpAQCAtNDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFz
cyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owog
c3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcHJl
dmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJj
ZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNl
ZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMy
Yi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBz
dHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJp
bmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFk
ZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIy
OWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uMjM4YmJlOTk1Mjc5YzM5YmMyN2JlYTg5YjQ3YmI4
ZTg3NGI2NTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC0zNywzMSArMzcsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBlbmQoZGF0YSwgc2l6
ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKIH0KIAotU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Cit9CisKK1Jl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpID0g
ZGVmYXVsdDsKKwogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxl
RGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIu
c2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXBw
ZW5kKFdURk1vdmUoZGF0YSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAj
aWYgVVNFKEdTVFJFQU1FUikKQEAgLTczLDI2ICs5NSwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1
ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIp
IH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1h
cHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmls
ZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRG
aWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rv
cjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMwICsxMDksMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6
Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRy
dWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFu
Y2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxs
IE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAg
ICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29u
c3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAg
ICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1f
c2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHsw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NF
UlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0
ZW50KCkpOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAot
ewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWRE
YXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29u
c3QKQEAgLTIwMiwxMCArMTk0LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29t
YmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1f
c2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21l
bnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21l
bnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1l
bnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBl
bmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6
ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDE5ICsyMDUsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSAr
PSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29u
dGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsK
KyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogfQpAQCAtMjQzLDE3ICsyMzUsMTIgQEAgUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9z
aXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdt
ZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMp
Ci0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdp
blBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5t
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVu
dC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1
cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1
ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdt
ZW50czsKQEAgLTM1MywxMiArMzQwLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9
CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKLXsKLSAgICBh
dXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQo
KTsKLX0KLQogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSBjb25zdAogewpAQCAtMzcyLDQxICszNTMsMTIgQEAgYm9vbCBTaGFyZWRC
dWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRh
KCkgY29uc3QKLXsKLSAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAg
ICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIGRhdGEuZGF0YSgpOyB9LAotI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0YWlu
UHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdl
dEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR0xJQikKLSAgICAgICAg
W10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShj
b25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCi0jZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCi0gICAgICAgIFtd
KGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJv
dmlkZXIuZGF0YSgpOyB9Ci0gICAgKTsKLSAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBt
X2ltbXV0YWJsZURhdGEpOwotfQotCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAotewotICAgIHJldHVybiBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwot
fQotCiAjaWYgIVVTRShDRikKIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVk
U29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBT
aGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiB7eyByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07Ci19Ci0KIGJvb2wgU2hh
cmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQpAQCAtNDU2LDcgKzQwOCwxMTggQEAgYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNp
emUoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkK
K3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisK
K0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3VzQnVm
ZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAg
ICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3VvdXNC
dWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBj
b250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOworICAg
IG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
IDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1
ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBp
bmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgs
IG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3Vj
Y2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5z
ZWdtZW50LT5kYXRhKCk7Cit9CisKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyBkYXRhKCks
IHNpemUoKSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKKyNp
ZiBVU0UoQ0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCitSZWY8RGF0
YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9
CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdt
ZW50OjpjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2Vu
ZGlmCisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50
OjpjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitjb25zdCB1aW50OF90KiBE
YXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtl
VmlzaXRvcigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyNpZiBVU0UoQ0YpCisgICAgICAg
IFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7
IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAorI2VuZGlmCisjaWYgVVNF
KEdMSUIpCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3Qg
dWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0
X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1F
UikKKyAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorI2VuZGlmCisgICAg
ICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkp
OyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAgICk7CisgICAgcmV0dXJuIHN0ZDo6
dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30KKworYm9vbCBEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7
Cit9CisKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNp
dG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTM4
LDM3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAg
ICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5
KCkKK3sKKyAgICByZXNldCgpOworICAgIGVuc3VyZUJ1ZmZlcigpOworfQorCitSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKCkKK3sKKyAgICBlbnN1cmVCdWZmZXIo
KTsKKyAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKworUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0NvbnRpZ3Vv
dXMoKQoreworICAgIHJldHVybiB0YWtlQXNDb250aWd1b3VzKCk7Cit9CisKK1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAg
IGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51
bGxwdHIsIDApOworICAgIHJldHVybiB0YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cit9
CisKK3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKK3sKKyAgICBpZiAo
IW1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cit9
CisKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAg
ICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAs
IG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGlu
U2VnbWVudCkKQEAgLTQ4OSwyNiArNTgyLDE2IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiB7
CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6
OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
LSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2Vn
bWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9
IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgp
IHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsg
cmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsg
fQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVu
b3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzYxNyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVy
LnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi42NWUwYjg1
YmU2NmViNzEzMTBjNjY0OTU0NTdmZDdkMGZkNWRjNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTI1IEBAIGNsYXNzIERlY29k
ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7
CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJl
Y2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlm
eSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNz
IERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBt
YXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0Owog
Ci0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0g
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNl
RmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCi0jaWYgVVNFKEZPVU5EQVRJT04p
Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWlu
UHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICop
OwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNG
RGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRh
UmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNl
bmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8
R0J5dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxs
IHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkg
YXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2lu
KCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVz
IG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3Nz
aWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciog
ZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAg
ICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5k
IHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1
ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsK
LQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1
ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdp
bmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5k
KFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICB2b2lk
IGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3Qg
dWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAg
fTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92
aWRlciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBi
ZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3Rz
LgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBE
YXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAg
ICAgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgp
IGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBw
cm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsg
fQogCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25z
dCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFBy
b3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9v
bCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1
aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRh
dGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShH
TElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQ
dHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdt
ZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cisg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9p
bW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5k
IGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CisK
K2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRC
dWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBj
cmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYK
ICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAj
ZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7
CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFw
cGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11
dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lk
cyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUg
KFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4
dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMg
dGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIg
d2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICBib29sIGlz
Q29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQogCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hT
ZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYp
IGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBw
cmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRh
dGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsxODksMTYy
IEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2Vn
bWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRh
U2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdt
ZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0K
IAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2co
TikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBv
c2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBn
ZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3Ry
aW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29u
c3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRv
cj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0g
ZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVf
dCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisK
K3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKwor
ICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMg
eyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFw
cGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShk
YXRhKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lm
IFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lm
IFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1
ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAg
IHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Citwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5l
cyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3Ig
YWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFr
ZURhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAvLyBDb21i
aW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0
b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVu
dHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0g
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0
YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQK
LSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9Owog
CisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxv
d3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxh
dGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJl
ZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
c3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAg
ICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0
YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25z
dDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJl
ZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVT
RShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0
ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYg
VVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRl
cygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
KSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJl
bmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFz
T25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKKyAgICAgICAgICAgIG1fYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
QnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBTaGFyZWRCdWZm
ZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShidWZmZXIpIH0pCisgICAg
eworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDog
MDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbXB0eSgpOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRh
a2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGVuc3VyZUJ1ZmZlcigpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
fTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkK
IHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjYsMjMgKzM1MiwyNCBAQCBpbmxpbmUgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogICAgIHJldHVybiBjb3B5
RGF0YSgpOwogfQogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7
CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxs
b3B0KTsKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmll
dyYsIHNpemVfdCBuZXdTaXplKTsKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmll
dyYsIHNpemVfdCBuZXdTaXplKTsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21l
bnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3QgY2hhciog
ZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0
ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50Owor
ICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3
ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFi
OTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpA
QCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQ
bGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9F
bGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5
aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewot
ICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0
YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
QXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQo
KSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6
Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNl
Y2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2
b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxh
c3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVu
Y29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6
ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxp
c3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCks
IGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTVi
ZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAy
ZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29k
ZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsK
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNv
ZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYx
Y2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi40N2MxMGY5ODAyMzRjOWFiYzYwODRlYzIxMDQ1NmY2YjE1
NDgxOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwCkBAIC0zNSwyMyArMzUsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgYXBwZW5kKGRhdGEpOwogfQogCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93
cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0
aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNp
ZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUo
KSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byog
ZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5z
ZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAg
IH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRy
LCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAg
ICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdt
ZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRv
cHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgog
CkBAIC03Miw3ICs2OSw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVk
U29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBp
ZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJk
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYw
MzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEg
QEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5n
cygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29u
dmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVm
ZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxv
Y10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERh
dGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0
bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0
dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBl
V2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVy
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JU
eXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMw
YjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uOTgwNTQ3YjhjYzRjNGE4OGNhMTU1
Y2JiMTc4MjBhZjg1ZTJkYzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZl
ckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlv
bjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRh
dGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIp
c2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsK
LSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2Rh
dGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFT
ZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7
CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJ
bnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVu
dCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAg
LTk1LDI3ICs5NSwyNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShO
U0RhdGEgKmRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQog
eworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9j
YXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZE
YXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwog
ICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0
YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
PmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNv
dXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI1LDcgQEAgUmV0YWluUHRyPE5TQXJy
YXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwogfQog
Ci1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0Rh
dGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBh
bGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2Uy
MmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09O
T2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5n
IHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAg
ICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2Jm
ZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJhZGRlZTdlZThiNGVlYjgzNWZhNzBj
MjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEz
OCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFj
dEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5p
c0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+
ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMTk2
LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXRE
YXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpAQCAtMjA0
LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21D
ZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgLy8gQ2hlY2sgaWYg
aW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlmICgha2V5SWRDb3VudCB8
fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMu
dGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byog
ZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJh
eTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsK
ICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0g
ICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNv
bkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAK
ICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAg
aWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7
CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRo
ZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVy
czoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1l
bnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNl
cXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVz
aFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRh
LnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRv
U3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgp
KSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkp
OwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsK
LSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsK
LSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENETUZh
Y3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRi
NGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0x
MzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAg
bV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rl
ci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5
MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2Iy
NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0
cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4
N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRB
cnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsK
ICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRC
dWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxk
ZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdf
dmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0
ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Z19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0
ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Z19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5o
CmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2
YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1Ymxp
YzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAK
ICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVm
ZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUy
OC4uNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwx
NiArMzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVz
KiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsK
IH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QK
K0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBj
b25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1Jl
ZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIg
ZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYo
KTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0
YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9
LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVy
biBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcAppbmRleCA0ZTk0OWRmYWI5NzY1YTJhMDdjNDg3OGFiZWUxMDNmYmFmMjFmNTcw
Li4xMjU4NjJlNzJhOWY5ZDg2OTZjZTE2Y2FjZmY2YmY3MjA3YjQ1Y2U0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjMsNyArNjMsNyBAQCBSZWY8Rm9u
dD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3Jp
Z2luIG9yaWdpbiwgSW50ZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1E
YXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFj
aywgaWRlbnRpZmllcikpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKK1JlZjxGb250PiBG
b250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYykKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3Vz
dG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURh
dGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCmluZGV4IDc0NDIwMDRmMDBiNWRiYTI3ZjNjMzJlNjY3YjM2YmNjZjc4NTE0Y2QuLjRj
NWM4YTM5NjMzYTA2NDc4OThiNTJhMzk0NTI1ZmIxYWZiMTJlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVu
dW0gY2xhc3MgVmlzaWJpbGl0eSA6IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBl
bnVtIGNsYXNzIE9yaWVudGF0aW9uRmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6
Ok5vLCBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFj
ayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4
NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIz
ZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3Jp
dGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBp
bW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAo
aW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQs
MTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBk
ZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rp
b247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBt
X2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2Vm
NjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRl
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8
U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9k
ZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBV
UkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdU
Rk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZi
NTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCAr
MzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7
CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9t
aW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
ICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBl
eHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwp
OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJs
OwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9k
ZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBl
bmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVs
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAg
ICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFi
Y2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25h
dHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAg
ICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChi
dWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZz
ZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wg
cmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90
JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9B
Ukcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXpl
KCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9v
bCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAK
IHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dP
RkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAw
OwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgog
fTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwg
VmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJU
X0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNv
bnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
K2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50
OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBj
b252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAg
IGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYw
N2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
aApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3
aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZm
ZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJu
cyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUg
Y29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0
IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBw
YXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3
b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJ
ZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9y
bSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRv
IHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElm
IGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIu
Ci1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0
ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUw
N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkx
LDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1h
dDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZl
ci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1
ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFi
ZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTMyNCw3ICsz
MjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQ
YXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmpl
Y3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0
dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03MDksMTIgKzcwOSwxMiBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxp
emF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0
RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXRE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0
RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAg
ICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpp
bml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJF
QU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERh
dGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNl
NjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRp
YWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpA
eyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQ
cmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBAIC03NzAsNyArNzcwLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMg
PSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0YSkgewogICAg
ICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAgICBhdXRvIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3Zl
UGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFw
cElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3Rv
cmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBAIC04ODgsNyArODg4LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRW
ZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9h
ZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVz
cG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNw
b25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29u
dGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250
ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9h
ZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5
MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5p
dERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVudFJlcXVlc3Qu
dmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmly
c3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTog
c3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ug
c3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNl
bnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0
dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lv
bkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGly
ZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3Rv
cmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7
CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNl
c3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAg
ICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSog
ZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygp
IHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlm
aWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3
ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5j
ZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0g
a2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpA
QCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0g
a2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNv
bnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29u
dGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50
aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRs
ZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3Ig
PSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29u
dGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhW
ZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAg
aWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkK
LSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENh
bGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxs
YmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9y
PFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAg
ICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnkt
PnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBr
ZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlE
LT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNl
NjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0
aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkp
OwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRh
aQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5y
ZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJl
cXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBX
VEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDph
cHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdl
dCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQp
LCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAg
ICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFn
Z3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSBy
ZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEw
ICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFu
Y2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBr
ZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5m
aXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAg
ICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDph
cHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdl
dCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUx
NmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRmM2RiYWRmOTA0ZjQ1NDg0
YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6
OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNl
TG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVj
b21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0Io
KSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0
LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRp
c3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwg
MCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRy
YWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0g
KCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQog
CiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkg
ewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IDFhNDNjN2Rl
ZDI3NmUyYzNlNWY2ZjQzYTM4ZjA1MTEyNzIwNmQwYTMuLmFiZDgxZTVmM2MxZWE1MGU0MjJlMmZh
M2MyYmExZDE4Y2ZlMzFhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFn
cykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigp
OwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBh
dXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFn
czo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNE
YXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGlu
dWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZk
NTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAt
NjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2
YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgx
YWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNv
dXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMSArMjEzLDgg
QEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAKIHZv
aWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAg
ICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9h
ZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7
CkBAIC0yMjgsNyArMjI1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM1LDcgQEAgRGF0
YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNv
ZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmlu
Z0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFV
UkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lk
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRh
U3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVl
c3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2VlODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNi
Mi4uNDZiMDdmZTcxMmU3OWU2MTMxN2MwZDExNmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9G
YWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250
RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJk
MDRiZWQzZDUwYzA2Li4yMDM1Yzk5YTdmNjhiNTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50
U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0
aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3Vu
dCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJl
ZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZl
ciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXpl
X3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+
PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFn
ZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGlu
dDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENG
KENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291
cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCku
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAg
ICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsK
QEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5T
RGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8g
d2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFy
ZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFy
b3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2lu
ZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0
aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2Vp
dmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCks
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNl
aXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEg
PSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7
CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRo
YW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRv
ZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1
YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVu
dCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3Zp
ZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRC
dWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRh
aW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3Mp
KTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEu
c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0
YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIy
YjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJm
MWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9p
ZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZE
b2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0
YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRl
V2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRy
PENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVy
Q3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdp
dGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0
YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIu
Ljg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxh
dGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAg
ICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewog
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApp
bmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzll
M2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lk
IEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAg
ICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQqPihyZWZjb24pOworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0
PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2
Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0
MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29y
ZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250
UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4g
b2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0
YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NU
Rm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVl
Yy4uY2NkYWRiMGRhMTFiNTk4NWEzNDM4NjE5ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyAr
MTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5
JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBs
aWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShs
aWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5k
ZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWVi
Yzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1E
YXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9D
aGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJv
RnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAg
RlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2
OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNp
emUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBV
U0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKaW5kZXggY2RlZDRhNjBiNTBiYmJhZWE1Yjg0NWJkZWZiYjY4NmZlMjUyNTkzMy4u
Yjc0OWZjMTU4ZGZhYmVmZDNiZDhjNDU0OThiYTBhNWIyOTNiZjQwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKQEAgLTQyNCw5ICs0MjQsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFw
cGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6
ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVh
dGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93
bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3Qg
Y2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBkODJjZDNlMThlY2UwNDc2
MWQ2YWQ0ZWMyZDUyZTJhZDlkYzM4NDY4Li4yYjYwNTkyMzliYjdmMGQ4ZmJlNDU2MDI2ZTU4MmEz
ZmM2ZjA5YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RD
aGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAg
LTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAg
ICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBk
NGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li4yOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZl
YTQzYTM1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAt
NDI4LDggKzQyOCw5IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJ
bWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUg
PSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRh
KCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6
ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpH
cmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IGNiYjQ5ZDE3MzYyZjcxMmQyNWRmZTgyNGRmYzFjMzgxYTVkYTAyOTMuLjNhMjAx
NTc4MDE0ODgxMGFjZTU0ZGY3YjA4ZTRkZjdmZDUyMzdkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNjY5LDcgKzM2NjksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBp
bml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXRE
YXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGlu
aXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0
YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCkt
PmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURV
TVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0
YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5w
YXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3
NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2
ZTE4MDFmMWViYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01h
cmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxz
ZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1l
bnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3Qg
Z2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpA
QCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRl
eHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0
YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBz
c2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9
CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNl
Q29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJr
dXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRl
eHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5
bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBh
cnNlZFBheWxvYWQpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2Fk
ID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9h
ZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2Yx
ZDM0MmE0NjQ3ZDJmMS4uMzMwYmUyMTNjN2ZlZmVkYjJmNzg4YjVjMWVjNDQxYWY3MTk0OWQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01MCwxMyAr
NTAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21l
ZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9F
UlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQu
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXRE
YXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxv
YWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZm
ZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQo
c3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92
ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAg
aWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFr
ZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQ
YXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBh
cHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAg
ICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9h
ZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5k
KCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsg
fQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlk
OyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04
NiwxMSArOTAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiBw
cml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNs
YXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUxZTc1
NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICBy
ZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9y
aWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9k
ZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQog
ewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZE
YXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3
ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2
YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAsNyBAQCBw
dWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsK
IH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNl
NmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdj
YmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcg
KzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNy
ZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZE
b2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNl
KCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3Vy
cmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4Y2Q3NzY4OThj
MDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1
MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUs
NyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3Bl
blR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJl
IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAg
aW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBH
bHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3Vu
dCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltj
b3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0
aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9m
ZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNv
bnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8o
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0YWxpY3ND
b3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZz
ZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0
KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsK
ICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0
QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBl
TWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBn
ZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQz
LDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFy
aWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFu
dFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQgZ2V0U2l6
ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEds
eXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZh
cmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZh
cmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlw
aENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1h
dGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lk
IGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVu
VHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZv
aWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNl
dDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRl
T2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBA
QCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBl
OjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
R2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENv
dW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQg
dmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3Ry
dWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBo
Q29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQp
ICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRF
bmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0
LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhW
YXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENvbnN0YW50
cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0
OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBj
b25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkK
QEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRo
VmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0
aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRz
T2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4
IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2ZDMxMTgyZTVj
NGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAg
LTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNp
ZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhC
dWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsK
ICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZv
bnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIxYWUzNzYzMDkz
ZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZk
MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2
IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gx
LCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90
KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShj
aDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRh
YmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEp
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29u
c3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9
IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBj
b3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGJv
b2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9z
aXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgaWYg
KHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZl
ci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAg
ewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihw
b3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRbMV0pKQpA
QCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7CiAgICAg
fQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0
cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShPUEVOVFlQ
RV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHByb3RlY3Rl
ZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNv
dmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2Us
IEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgMTog
eyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4
IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNjYTcyN2FhZmJkMmNh
ZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0
KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5k
IHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1
cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25z
dCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8
dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0
b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5hbERh
dGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpAQCAt
MjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnRE
YXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAKIC8vIFJlbmFtZSB0
aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJl
ZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFy
ZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQorUmVmUHRyPEZvbnRN
ZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rv
cjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERh
dGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi4yMmJlMjMw
YTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJp
Z0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9U
UHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpA
QCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90LCA1MTI+IG1fYnVm
ZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVu
YW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwor
Ym9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThl
MmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vi
c3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vi
c3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKIAotICAgIGNv
bnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVy
YWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KIH07CiAKIHN0cnVj
dCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7CkBA
IC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6VUlu
dDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUgbGVu
Z3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAotICAgIGJvb2wgZ2V0
U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5
cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0gc3ViVGFibGVDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tjb3Vu
dFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1cExpc3QgOiBUYWJs
ZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1
cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBz
dHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxv
b2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdEluZGV4WzFdOwogCi0g
ICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3Vwcywg
SGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxv
b2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxv
b2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwTGlzdElu
ZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFi
bGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zmc2V0OwogICAgIH0g
ZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3Qg
aW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5U
eXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAg
aWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2NvdW50
XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5k
RmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRh
ZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsgKytpKSB7CiAgICAg
ICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVyZXNb
aV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RydWN0IExhbmdTeXNU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBjb25zdCBGZWF0dXJl
VGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlz
dCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhbY291bnRdKSkKQEAg
LTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jkc1sx
XTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFu
Z1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0yOTgsNyArMjk4LDcg
QEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zm
c2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBjb25zdCBTY3JpcHRU
YWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFn
LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRF
bmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVjdCBT
Y3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
Y29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8fCAhaXNWYWxpZEVu
ZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RydWN0IFNj
cmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2Ny
aXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwogICAgIH0KIAotICAg
IGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBj
b25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7CiAg
ICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3QgR1NV
QlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0T2Zm
c2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsKIAotICAgIGNvbnN0
IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9m
ZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0
PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxv
b2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KKyAgICBj
b25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVy
LCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlz
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQor
ICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0Pihi
dWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0
cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4LDcg
KzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4g
c2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3Bl
blR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUqIGxhbmdTeXMgPSBk
ZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVy
ZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBHU1VC
VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVyZTsKICAgICB9CiAKLSAg
ICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBo
PiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBj
b25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVhdHVyZShPcGVuVHlw
ZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVydGljYWxGZWF0dXJl
VGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7
CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBo
aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVy
KTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQs
NyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAg
IC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhh
dCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1
dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcp
OwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRh
dGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAog
dm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25z
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShP
cGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9
IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAg
ICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25z
KCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQu
LjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVG
b250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250
KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3
MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVjNzg4YjliZTk5OGY1
ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwx
MiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRD
cmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5
UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNp
ZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRp
bmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdz
OwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAK
aW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3YTdm
NGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVV
bmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9u
dE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChi
dWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXgg
MzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2JjMDEx
OGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dp
bi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlz
RXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1f
dXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkzYmRi
ZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYw
MWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBA
IEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250
LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0
T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRj
LCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0g
R0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAg
ICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5k
YXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNp
emUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggY2YyYjUxZjZm
MDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4YTUy
YTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblNtYXJ0
UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNhblNt
YXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAg
ICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEu
Z2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3Rv
bURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiAh
IW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkgeyBtX2N1c3RvbURh
dGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9v
bCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2N1c3Rv
bURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4zYzZh
M2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hhcmVk
QnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2UgdGhl
cmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5z
ZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRh
dGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdt
ZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2Rl
ZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXpl
RnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVj
ZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZm
MDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uMWM4NzFmNGQ1NjQ5MWJmNzc1ZTg1MDBjMTZk
MGJiODk0ZDU0ZTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAs
OSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRy
IG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0
cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElD
Q1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZm
ZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2Vy
X2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJ
Q0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYs
MTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVj
b21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRl
clNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAg
ICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXIt
PmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1
ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtl
QXNDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBF
R0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2Zp
bGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMw
M2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsg
bV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZv
aWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBz
ZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgog
CiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRk
NjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmlu
Zz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEg
PSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBA
IC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50
VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5j
bGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50
VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNv
bnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50LmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNv
bnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyAr
NDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAg
aWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAo
TlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVy
IHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1
dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQorICAgICAgICBpZiAo
TlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVy
IHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1
dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxw
dHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50
aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgUGFzdGVib2FyZEN1c3Rv
bURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRl
bnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9t
RGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJk
KHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9
CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBh
c3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0
YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOworICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYg
KHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJ
KHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1F
VHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGltYWdl
RGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAg
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1l
XTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogI2VuZGlmIC8v
IFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEKIAog
ICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRh
Rm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkg
ewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwor
ICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdl
dCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAg
IGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRl
bVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGlu
ZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9y
aWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVm
ZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAv
LyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1E
YXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAg
ICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2Fk
ZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAg
ICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0
byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjczLDcg
KzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9CiAK
ICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUp
OwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVd
OwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CkBAIC03
NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJp
bmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKChOU0ludGVnZXIpaW5k
ZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1z
XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRdKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3Rl
Ym9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBT
dHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5
Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNjMzE5OTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNG
aWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJk
SW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxl
bmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdl
LnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwog
fQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVk
SXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJu
IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwog
fQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRl
eCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25z
dCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9h
cmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAg
ICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwg
dHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCks
IGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1
dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgx
MzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAg
LTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
ICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJp
bmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnRE
YXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVU
SSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEko
d2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJD
b250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6
Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
b2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3Vz
dG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4g
cGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZm
YTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJp
bmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRh
ICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwog
fQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIx
OCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0
PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRD
dXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRD
dXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJp
YWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBv
cmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVz
KCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2
NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAg
ICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5
cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9
IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGlu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAg
ICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3Rv
bURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVk
Q3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBz
ZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlw
ZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJk
IHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRl
RGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00
NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0
ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9Owog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0
ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRl
bSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0
YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQo
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRh
LmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVt
KGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAg
ICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0
Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpn
ZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5
NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMw
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3Nl
dFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2Nr
KTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRv
dWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhj
MWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAz
ZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAg
ICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3
ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBz
YWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYg
KG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAg
ICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0
YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsK
KyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBs
b2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwot
ICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDBjOTA4MTdjNGU5YjQxZjM0OWE0MWFlNjRi
NzE5MDZiOTUxZWI4OWEuLjYyMzY0ZDcxM2M5NWE5Zjg0M2M3ZDI5YzAxZjBkZWI5YWU2ZDE3NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00
MTIsMTMgKzQxMiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0
CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0
ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVu
KCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZTlkMzQ0M2Y4YjVjNjgyNDQ2NjU2
YzE4ODA1NjU3Y2MyOWQyZDgzNy4uMTA4MjgxMTMxZjgzZTk5MzcwZmM1MDk3ODMzY2M1MGVlOGFk
YmRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBs
OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7
CiAgICAgc3RydWN0IEVuY29kZWRGaWxlRGF0YTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBj
b25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
CiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsg
fQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlz
U3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThj
NmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4
N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291
cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZv
aWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwg
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmlu
ZGV4IGY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5MjUzNjk0YWEuLjg4ZGVkZmE0NWMz
ZjRjNDNhMzgxNTI4MGRhNWE0MWUyNjk3NWI3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAg
ICAgICAgIAogICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoaGFu
ZGxlPSVwKSAoJXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2Vp
dmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2lu
YWxMZW5ndGgpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhh
bmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5h
bExlbmd0aCk7CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2Rh
ZjY5NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAg
IDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNw
b25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAg
ICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVU
b0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRl
IDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lv
bkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6
Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWlu
UHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0
YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9u
c2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsg
Tm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlz
aGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNv
dXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2
ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0
UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
LCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
YXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXIt
PnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFr
ZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBh
Y2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRo
ZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250
ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRh
LmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsK
ICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICgh
dGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFz
ayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7
ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0
byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZm
ZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3Jl
TlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRv
JiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAg
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5z
aXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdl
dFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgp
IHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRh
dGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlz
aGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAg
ICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAg
ICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAg
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFz
a3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIy
N2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYQogewogICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3Vy
Y2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYg
PSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1
dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1Nl
bGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBp
ZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Np
b25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAg
ICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNz
aW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmlu
ZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLmQ2MzVmNzljZDFl
YzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
QEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28g
aWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50
KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6
ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAg
Ly8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5n
LgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1
ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApA
QCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29u
dGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxh
c3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAg
ICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRo
ZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwg
bGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBs
YXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hl
Y2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1
ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZl
ci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJv
dW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0
YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0
ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3ZDE0MDMyOTI2Yjkz
MTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3
cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwor
ICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQg
Q3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAx
MGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5IEBAIHZvaWQgQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZl
RGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGll
bnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVy
LT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0
YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3Vv
dXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmlj
cyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9T
aGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFy
ZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggMGZiNDUwMDcyZmExMDQyMmY2YTlmZTQzMmMzODFkM2Qx
OTYxM2U2MC4uM2NhMjA4MjJjMDMxOGE1NDkxMTE4Njc1ZDI3Yjg3OGRkMTgzZmU5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNw
cApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKHRvdGFs
Qnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCmluZGV4IDJiMzEyODU4NzAzMDNkMDliMDI0NTM2NWQ2MWFiODkxMTEx
ZGFhYjUuLmFhY2MzN2NkMjg3MjgwZjFiZTAwODc5NzM1MWE5OGJmOGJjMWJlYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk3OCw4ICs5
NzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEt
PmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5
KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzAsOCArMTAzMCw4IEBA
IHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwg
U3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRo
aXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBX
cml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAg
ICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+
c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBG
aWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwg
JndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAg
ICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5
Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYx
OTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAw
KTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyArNTMs
NyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAo
UmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1Jl
YWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1
bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBj
b250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWko
KS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThj
ZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCAr
MjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCks
IHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGln
dW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCBy
ZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0
cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAg
aWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RN
SW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3Rl
bUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxi
YWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRl
LT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNh
dGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShj
ZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0K
QEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmco
cmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJl
c3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEu
LjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIg
U2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNj
cmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9t
VVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2lu
Z2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBt
X2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5j
b250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVy
LmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21l
bnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFw
cGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3Ry
aW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwog
fQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRC
dWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMx
MzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMw
Y2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
QEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHko
KSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0
cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgp
OyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVU
Ri04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8v
IENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA0MzNkOWUx
YTQ1YzI5ODg1NDJiMDVlNzRiNDcxN2E3NzA1NzI4YmI2Li5hM2NhZjRhMjZmNmYxMzk3MjFkYWQ0
M2FlNjUzYjBhMTZiYWZhYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiRm9udFNl
bGVjdGlvbkFsZ29yaXRobS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJXT0ZGRmlsZUZvcm1hdC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgsOSArNzcsMTMgQEAg
dm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtl
ckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkg
ewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmlu
ZygpKTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNE
YXRhOworICAgICAgICBpZiAobV9kYXRhKQorICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBt
X2RhdGEudGFrZUFzQ29udGlndW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7Cisg
ICAgICAgICAgICBtX2RhdGEuYXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpj
b250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAg
ICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAg
ICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcsMTAgKzEyMCw3IEBA
IHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKLQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwor
ICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgV29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4
IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLmRhYjczZmM3YjFhOTNl
ZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
Rm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAt
MzYsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNv
bnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOwpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVu
dCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2Qy
OTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3
NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0
YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8
UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVC
b2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1v
dmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
KyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xp
ZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIu
LjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpy
ZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0K
IAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1v
cmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8K
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVN
YXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMg
OiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRl
LCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1Njcmlw
dFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lz
dHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGUwY2Rj
NzIzNGM1NGExM2RmNzBhNjgwNWMyODFiOTQ4MDU0NWFlMjYuLjliMTEyYjlkYjJjZDg0ZDAzMmY1
OWRhZmE4ZThlMzhlMDcwZTUzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdHJpbmdBZGFwdG9ycy5o
IgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyLmgiCkBAIC0yMDgsNyArMjA3LDcgQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0Ojpj
cmVhdGVSZXNwb25zZUJsb2IoKQogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBk
YXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlz
IGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgICAgICBkYXRhID0g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmlu
ZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVz
cG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBk
ZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3Jt
YWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDkgKzIxNyw3IEBAIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFT
U0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBB
U1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCh1bnNpZ25lZCB0aW1lb3V0
KQpAQCAtNzQxLDcgKzczOCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VC
dWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0
ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0g
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwog
fQogCkBAIC0xMDY1LDkgKzEwNjIsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVp
bGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVu
ZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5hcHBlbmQoZGF0
YSwgbGVuKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgKaW5kZXggMDQ4NDYyNmIyZTVkZmRkYTdjYjE2YzRmNTUyMmRlZjg0YzRhYzE4
Ni4uMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJkODAzNzc1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJFeGNlcHRp
b25Pci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KQEAgLTQ1LDcgKzQ2LDYgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9h
ZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1f
cmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5h
MzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0
aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwog
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQg
PSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNv
dXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7
CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThl
NDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJj
MzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0
aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2Jh
bERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUz
MGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEw
Nyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJl
Y29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVu
Y2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0
Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShh
dXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50
ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIg
PSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRh
dGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29k
ZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZj
YWE5ZDU2OWM1NGIwOWQ3Mi4uMGI5ZjQ5ZDM2NGMyNTk1ZTIyM2IzMTE0ZGVhZmNlZTkyYTQwMGZl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAg
IGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29y
a0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMzA2LDEwICszMDYsMTAgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25z
KCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11
bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwog
CiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFy
YW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzM0LDE2ICs3MzQsMTYgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAm
JiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVU
eXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwog
ICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJh
dGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVs
dGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxl
ZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5k
bGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0
KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGEucmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
bikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjksMTAgKzg2OSwx
MCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVh
bWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAg
ICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5
KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJl
c2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAgICAg
dW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49
IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CiAKICAgICBp
ZiAobV9idWZmZXJlZERhdGEpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyLmdldCgpKTsK
ICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxl
bmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTkwOSwxMSArOTA5LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5k
aWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgp
LCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVx
dWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKS5nZXQoKSwg
bmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZm
ZXJlZERhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwg
dmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAg
ICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZm
ZXIoKm1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3Jr
TG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU5LDEyICsxMjU5LDEyIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBBU1NFUlQobV9idWZm
ZXJlZERhdGEpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAotICAgIGlmIChtX2J1ZmZl
cmVkRGF0YS0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWRE
YXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5j
b2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjg5LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jv
c3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewog
ICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3Rv
cmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJl
ZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCks
IFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwor
ICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQt
PmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50
cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFi
bGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCks
IG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpLCBbbG9hZGVyID0gUmVm
IHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFi
NWJlZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li5jNDIzNDY1MWJhOTI4Yjk1ZDhjNmY1
N2JlMjVjNWYyMTE4OTg5ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMjI1LDcg
KzIyNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3Bv
bnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25l
ZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25v
dXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0MSw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0
cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5
MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3Y2Jk
YTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
CiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdU
Rk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9k
eUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcx
ZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+Owog
ICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcg
Qm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9y
Qm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRj
MTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVh
MmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAg
ICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAg
ICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4
N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0
MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBA
QCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYg
cmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNo
T24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAg
IH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
fSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9Owog
ICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3
Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6
OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNl
Qm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCks
IHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3Rv
cmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYz
NTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAt
MTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJl
Y29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAg
ICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlm
IChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsK
KyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwg
eyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRm
NDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZDQzYzA4OWQ2MTg1M2M1MTllMzYy
ZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNw
b25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFy
dCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3Vj
Y2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBN
b2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAg
LTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGlu
IGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsx
MzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShh
dXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5z
dG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEg
c3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1f
Y2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1h
a2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtl
RW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFm
OGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9k
aWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGU2N2UwNWJh
ODQ3OGE1ODE4MzBlMzk3MDY4YjMyZmIwOGQ5MWI3ZWQuLmU2NWIyZWE4MzhiMDgxODNjOTZiODMx
MjBiMWZlZjE1NmJiOGMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25h
bDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJl
c291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBy
ZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAgIGF1dG8gYnl0ZXMgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3Jl
YXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1
dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNi
MzNlZjcxLi4yOWY3MWQ3ZTZkYzc1MGVmMTlmMzI4NjJjODliNzE4NWUwM2JmODk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTEs
OSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4
IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmU5Y2Q4NzJmOGQ0NGYx
NWUwZWUzN2M3MzQ5MmIyZDgwMmFjOTA3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTM5LDE4ICszOSwxOSBAQCBjbGFzcyBTaGFyZWRC
dWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0Owog
Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
IHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7
IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KKyAg
ICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hh
cmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAg
ICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAg
ICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZl
cihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQog
CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9i
dWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzYxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzEx
ZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2
MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAg
LTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9y
eTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsK
ICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFi
MmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjky
ZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0
LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcg
KzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4g
Ynl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsK
KyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzcz
NTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZl
ODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
UmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hp
dmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxB
UEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEo
KTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5j
ZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENG
UmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcy
ZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4
NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0
aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBp
dCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRh
KCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9u
dEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRl
Y29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIx
ZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1
LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXll
clRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5j
b2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4g
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNv
bnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
CmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5
ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYg
aGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
UHJvdmlkZXIgeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsg
cmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgp
IHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJl
YWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwog
ICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oCmluZGV4IGRhMWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQw
ODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikg
Y29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBD
OjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25z
dDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJj
ZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFi
bGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1
ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFw
SW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5MDM0
MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMg
dm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+
IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA
QCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVT
aGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAs
NyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0g
ZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAg
c3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBk
YXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAg
IEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBp
ID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVl
OwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2Rl
ciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3Jk
LnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJv
ZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0
Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNv
ZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3Qg
UmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlv
bmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhh
c1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4
Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVl
LnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZN
b3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdU
Rk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEs
NyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
eworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitz
dGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hh
cmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYx
YTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsx
MTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0Owog
Y2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERl
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5
YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAg
c3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3Rv
bURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21E
YXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwor
ICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1
MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcg
KzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxS
ZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6
Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVz
Q3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRG
YWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5
MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBA
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdl
RGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5n
JikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcm
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApp
bmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5
N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0Zp
bGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApA
QCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShi
b29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3Np
bmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cAppbmRleCAzNmE2ZjRmYjA3ZjBhYjlkZGM3YTQ2MThmZWQ0MjJlYzM4OTc0MDM1Li4yZjQ0OGE3
NjM5MjdlMDJlY2MxNTk3NTYwMmM5MDFiNzE5YTFhNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE1
MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHko
ZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4p
PiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3Qg
dWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5
YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1
Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6
OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3Jh
cHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5m
aWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBj
b25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRh
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNl
cmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IGE3MmQwZDJjOTJkN2RlZDQ1ZTBlNDEwYjQxZGNiOGZiNGRhNWFlODUuLjZiZGFl
NTE1NTJjZTA0NjhiZTkzYjU4YjNhZjVmMGExY2FmOWI2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAg
LSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYp
aGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxp
Z2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dL
QXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3
a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGln
aGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5l
d0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2Vi
VmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6
aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRH
dGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMu
Y3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2
YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjEx
LDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwg
R3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAg
ICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93
aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAg
ICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAg
ICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZi
MWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
QEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFu
YXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
KSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZp
ZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29h
Lm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcyNzc0ZTI2OTY1YjJkYmIyYTczNWUuLmJlMTQz
NzBkZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRhNWY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDIs
MTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVn
aXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBvbmVudEZldGNoU2Vy
dmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3Ry
YXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
d2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVn
aXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CisgICAgICAgICAg
ICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9u
cyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9KTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJh
NWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmll
d0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2Fy
ZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVh
bFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAg
W3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJ
bmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMg
b2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZl
ciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2Jq
ZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSog
aW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwg
ZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlm
IChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JU
eXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwg
TlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9w
cm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0
ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1h
Z2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0
KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkg
KldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5T
VVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmICht
X3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgp
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJv
bWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmls
XSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFz
dGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhh
bmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNw
b25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJv
YXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9
PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJl
bnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBs
ZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMz
ZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFk
NDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0
NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQ
b2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRl
Y3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0
dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5YTgxNmZkYjMxODNhMTliNjc5
ZTg3NzAzYTBmNDQwZTVhYjkwOTAzLi43MjNjZmU1YjcyNzYxNWY2ZWQxOGI1ZjI1ZDFlODBkYjcz
MzFmOTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE4MSw3
ICsxMTgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZy
b21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwog
ICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9s
b2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4
MGMxNmJkMS4uZWQ4Y2I2NTNlY2ZkZDEzNDczZWUxZDJhZjUwYmFhN2E2ZjdhMTAxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTE4NywxMCAr
MTg3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsK
IAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAg
ICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNE
YXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNSwxNCArMjEyLDExIEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlv
blR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OldhaXRpbmdGb3JSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwotICAgIAotICAgIGlm
IChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYg
KG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1f
c3luY0RhdGEtPnNpemUoKSB9OwogCisgICAgaWYgKGlzU3luYygpKSB7CisgICAgICAgIHNpemVf
dCBzaXplID0gbV9zeW5jRGF0YS5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
ID0geyBtX3N5bmNEYXRhLnRha2VBc0NvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAg
ICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92
ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRl
KG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVy
cm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmRk
NmI3MjQxMGFkZDRlZjYzMWQyODA2OWUxNGEzZjJhMDBjNWNjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3MgRnJh
bWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMTE1LDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBs
ZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fc3lu
Y0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJD
YWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2
ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAt
MTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBv
dmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRp
b25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4u
NjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1
Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2Uo
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0
aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6
OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0
YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9T
YXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IDc1Y2I3NTEyY2NhNjc0NzRhNTU0MjRhZDNhMjhjZjZjN2VlMGFjZDUuLjRj
ODYyNzNjM2ZhY2FhMGE2NDJlOWY3NWM0ZDZiZGY0MWE1M2EyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtMzg0Miw3ICszODQyLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzoo
U0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxD
dXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpA
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0Omlu
ZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJk
RGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3Jp
Z2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZ
RVM7CiAgICAgICAgIH0KQEAgLTY2MjUsNyArNjYyNSw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3Rl
Ym9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29u
c3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlm
aWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTk2LDcgKzc1OTYsNyBAQCAtICh2
b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0
YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRV
Ukwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1h
Z2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFn
ZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBm
aWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2Vu
dGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwg
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNl
bnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRh
IGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2Vi
Vmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0OWRhNDY3Yjk0MjAz
NWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgy
ZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGVhZjdl
MDc5YWU0MWY3YWRlM2ZjOGNhZjVkODgxZjJjYTFiYTIzNzQuLjFiM2ZlODY4OWYxNzk1NzUwNjY3
MzA0MWIxZTZkMWI3MzY2ZDEzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJv
eHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRk
ZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkw
MzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwog
fQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6
V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0
OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNp
bXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZj
N2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3Nl
dEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4p
ZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFu
ZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2
b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVs
ZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29u
dHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFw
cGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9y
IChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVi
b2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5h
cHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwor
ICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMz
OTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2Fy
ZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3Rl
Ym9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
K3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVu
dC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMg
PSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAg
ICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAg
ICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRh
PigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0
ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkp
OwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4
ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25z
dCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJm
b3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25z
dCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmEzNGUyMTJkMDdh
ZjJmZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNo
YXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAg
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVy
ZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0
YSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3
aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2Us
IGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRC
dWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQ
STo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJl
ZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZl
ciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYo
KTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFy
ZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50
LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEko
ZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5p
bXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJi
NzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsx
MDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxl
KFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5
NTVmZDQ0MzAuLjk4YTZlMmU3YjU3ZTUyMzE4ZjQyYzhjZDE3ZTRmMGRlMDUwOTQwOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZl
cigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwog
ICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBT
aGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVy
bCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEz
YjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdv
cmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhl
IHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlz
SW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIu
ZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0
aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwg
ZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCBkYzU2ZDJjNjZlZDg2Yjk2Mjk1MGEzNDgyMDgzZTM0NThi
MzJiNTJjLi4wOGNmYmI1NTBlZGNiNTZjNTk5N2EwNDM2YzI5NjUzZWYwZTgwM2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDAz
LDEwICs0MDMsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxp
emVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVh
bVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVh
bURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotCi0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5n
dGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MzcsNyArNDM0LDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBp
ZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0g
ZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YS5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
MjksOCArOTI2LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmICht
X21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOwor
ICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6Rmlu
aXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLmdldCgpOwogCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDMsOSArMTI0MCw5IEBAIHZvaWQg
UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKIAogICAgIC8vIERlbGl2ZXIgdGhl
IGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwot
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4
ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi43MzI3NDFkOTVlZTZhMmI2NTZmM2Q4
YzA4YzhhZmZiYTdlMmZhZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5WaWV3QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlciBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNu
YXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1
biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFu
c2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRj
NDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAg
IG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hh
cmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25z
ZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAg
IHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAg
ICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0
aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRh
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAg
ICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwg
W3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYw
MC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAg
IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4s
IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Pj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVS
ZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9k
aWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUz
NzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0
MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcg
KzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7
CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBh
c3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2Ni
NGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJi
NDJkYjUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29y
ZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6
VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRi
ZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFi
MWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNo
ZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0g
bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0
YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUo
KSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFp
blJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkg
OiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNw
b25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY0MWE3MGVmNWJiNmMwZWNl
OGJkODYyNzQxMTYwMWNmNzMwZTYyYTEuLjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2
Njc4YTE5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIg
KzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlk
ZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0
ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92
ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdl
YlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRh
Rm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZl
cikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRl
QnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5n
IHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8
U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkg
ZGF0YTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5m
bz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJl
dHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwg
cGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6
UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXgg
ZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2ZmMzU1ODA4ZTFkNmVi
MmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlu
dCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAt
NzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVj
dG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJD
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYK
QEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwg
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi4yM2Qw
MTE0YjBlOTQwZWUxMzQzZTI0Nzk2ZjNmYzk3YWFlMzJlOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDUsNyArNDQsNiBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0K
ICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSB9CiB7CiB9CiAKQEAgLTY5LDEzICs2NywxMiBAQCB2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOwor
ICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5y
ZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNz
d29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5
Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li45ZTZmNTBmMWIzMjVhMTMzM2YyYzk0YzE3NDc0
YzBhN2Y1MzRlNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0
LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBj
b25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9w
YWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVl
MTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3
NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsx
NTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVf
dCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1v
cnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2
Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6
SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBp
ZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2
ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRh
ICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAg
aWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRj
ZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNh
N2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNv
dXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9
IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVu
Y29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0
YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJl
c291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5z
aXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KaW5kZXggNjBmODRhNDVjMzgwMzVmMmRjZTkyNWNiZWUyYzMxOTkyZTY0MDMyZi4uM2NiNTA2
MjRiZjBkN2E4MTEwMmY3Yzg1NDRiMzQxZGI5NjYyN2JkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5p
c05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5l
ZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAg
IGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZm
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1
NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4
LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQog
ICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZm
ZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1Zjdj
MWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4
NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVy
biBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNl
OWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAg
ICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
IHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYx
ZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5
YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIK
ICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcg
KzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5
cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1
MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMs
NyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVz
ZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3
NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2Uw
ZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAo
Qk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7
CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAot
ICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRh
U291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1
dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExv
YWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hp
dmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1
OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5
NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3Jl
YXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBp
ZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAg
ICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0
aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXIt
PnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQo
KV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KaW5kZXggYjA4YzFkMjFjZjlmMDRlNjExYjU5NWVkZTNjYjY1YTE3YzQ5OTc5ZS4uZDNiNTE2
YzQxYTkwZTdmYTU3ZGFkOTg5MWQ0OWEzMzkxNDhhMzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQp
ZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNl
ID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEg
PSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBu
aWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAq
ZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAg
IAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2Ut
PnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAg
ICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1l
TmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJj
ZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtl
bmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVL
ZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJl
c291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRh
ICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRl
TlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilf
c3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGlu
ZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJl
c291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAg
cmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3Jl
RGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+
c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNl
YWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1
YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVt
b3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlT
dHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVt
b3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5
U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZN
b3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRl
eCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEz
ZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDog
cHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVh
bT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
c3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9D
T01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVh
bShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJl
YW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBz
aXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFi
ZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5
OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyAr
MTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVh
bSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihj
ZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihj
ZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1
cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZU
byhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYz
NjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMz
M2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIz
ZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2Jj
MDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVj
dGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50
cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRl
eCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQy
MGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJj
ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xv
YWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlS
ZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1f
bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhz
dHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01f
T3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYy
MGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQg
V2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRf
IElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGlu
Z05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwog
CiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwg
U1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJh
bWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwg
X0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29w
eSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAg
ICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAg
ICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50Pihk
YXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQo
ZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwg
bWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEo
c2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVs
bHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5
Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNl
Ojp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3Vy
Y2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVt
b3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdU
Rk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBi
NmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3
Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJs
aWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYThlODcxYjBhZjFhMzRiMDU3MjAwMWIzY2Ez
NzlkNjBiOTEwNWUyOS4uM2YyZGFkY2FjMzE1YzUxOTUzODgxYTYxODVmYmU2NjJjMzVkNzM4MiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8v
ODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wOSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20g
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMx
ZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uYWRkMjQ4YjBkZTJkMmYxMWM1YTFm
NTJjYTdlOGVmYTk0OTI3NGMwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAg
LTQzLDUyICs0Myw0NyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5n
KCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwot
ICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBT
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUo
U3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVt
cHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5p
c0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHko
KTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKKyAgICBhdXRvIGNv
cHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsK
ICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFy
KCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSgh
YnVmZmVyLT5kYXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCks
IGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
KyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
KSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIu
Z2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNU
X0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCArOTEsMTAgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEw
W10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIg
dGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEw
KSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGEx
KSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEy
KSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIo
dGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERh
dGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBz
dHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9
IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3Rl
ZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0
cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZm
ZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMSwxMCAr
MTA2LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxh
cmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
dmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9F
USgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7
ICsraSkgewpAQCAtMTUxLDE3ICsxNDYsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNv
cHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1
dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0
dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3Nl
LCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRl
c3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1
aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwog
ICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNp
emUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQs
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9
IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+
c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0
aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNp
emUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0
eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7
Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVz
dERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVz
dERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRv
IGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtl
KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5w
dHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShj
b3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGlj
YWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7
CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAg
IEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
KyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZv
aWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3Ro
LCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCArMjA2LDcwIEBAIHN0YXRpYyB2b2lk
IGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwg
Y29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewot
ICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rv
cjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9
OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAg
IGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYp
OwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRv
IGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0g
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRh
KDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVm
ZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihn
aC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwg
Z2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAi
aCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsK
ICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tC
dWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAg
IGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVm
ZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1Rf
RVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwg
Z2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRh
KCksIGwuc2l6ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVh
bFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+
PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3Ig
KGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRh
a2UoKTsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywg
J2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYics
ICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0
KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdj
JywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgp
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0p
KTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2In
LCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNU
X0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCks
IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQx
ID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAg
IGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZl
ci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAg
YnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWls
ZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9
CiAKQEAgLTI0OSwxNiArMjkwLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4
dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIu
c2l6ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIp
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBF
WFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBA
IC0zMTMsMTUgKzM1NSwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBp
bmNsdWRlU2VwYXJhdG9yKQogICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihkYXRhLCAyNTYpOworICAgIGNo
ZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyAr
K2kpIHsKICAgICAgICAgY2hhciBjID0gaTsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
JmMsIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAgICAgfQotICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKQEAgLTM1OCwxNiArNDAyLDE3
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVy
LnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0
KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7
Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxk
ZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5r
c0luTXVsdGlTZWdtZW50KQpAQCAtNDA2LDE3ICs0NTEsMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogICAgIH07CiAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBs
ZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCAxKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDEpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXpl
KCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWls
ZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2Uo
KSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRl
cmF0b3IpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4
ODVkNGViMTEwLi44YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4K
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAg
ICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5n
dGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0
ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1
aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0
YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwot
ICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0g
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBi
dWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGRE
YXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRh
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0g
XSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5T
RGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVd
OwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBo
ZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhl
bGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3Js
ZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAg
IGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAg
IE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAg
ICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0
YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAg
ICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYg
c2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21l
bnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2Vn
bWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNl
Z21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAg
IHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0
aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlv
bikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5n
ZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50
YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRD
b3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUo
KTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdt
ZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRh
KGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQo
KS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFts
YXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29k
aW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFz
dEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="471955"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446527</attachid>
            <date>2021-12-09 05:31:58 -0800</date>
            <delta_ts>2021-12-09 06:01:18 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-233442-20211210003156.patch</filename>
            <type>text/plain</type>
            <size>135804</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiYWZmMWUyYmEwODQ5
MDdmYjcyNmUzOTkwYzk4N2E0MTFmYzJlMC4uMGNiYmY3OTI3NDUyNzFhOWI1NzhhOTc0OTliYzFk
MmNiYzgwYjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBBIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBs
YWNlbWVudCB0byBSZWZQdHI8U2hhcmVkQnVmZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbnVsbCBhbmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxv
d2luZyBhIGNhbGwgdG8gcmVzZXQoKSwgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAg
ICAgICAgd2lsbCByZXR1cm4gdHJ1ZSBhcyBvcHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBj
cmVhdGUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6
ZSBvZiAwLgorICAgICAgICBBIG51bGwgU2hhcmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhh
dCBhcHBlbmQgd2FzIG5ldmVyIGNhbGxlZCBvbiBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVt
cHR5IFNoYXJlZEJ1ZmZlcikuCisgICAgICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sg
aWYgdGhlIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGlu
ZyBjb3B5KCkgb3IgdGFrZSgpIGFzIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0
ZWQgaWYKKyAgICAgICAgbm9uZSBleGlzdHMuCisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lv
bnMgd2VyZSBtYWRlIGR1ZSB0byBob3cgU2hhcmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAor
ICAgICAgICBhbmQgdG8gbWluaW1pc2UgdGhlIGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3
b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxk
IGFsd2F5cyBjcmVhdGUgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAg
ICAgIGl0cyBzaXplLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGlu
Y3Rpb24gYmV0d2VlbiBudWxsIGFuZCBwdHkgd291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4K
KworICAgICAgICBXaGlsZSB0aGUgYWltIHdhcyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1
ZmZlciBvbmNlIGJ1aWx0IHdhcyBpbW11dGFibGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3Qg
ZW50aXJlbHkgYWNoaWV2ZWQgYXMgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBS
ZWZQdHIKKyAgICAgICAgdG8gYSBTaGFyZWRCdWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0
byBpdCB0aHJvdWdoIGl0cyBTaGFyZWRCdWZmZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxs
IGltbXV0YWJpbGl0eSBjb3VsZCBiZSBmdWxseSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSBy
ZXR1cm4gYQorICAgICAgICBzaGFsbG93IGNvcHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFw
IG9wZXJhdGlvbi4KKworICAgICAgICBGbHktQnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZp
YSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0
byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291
cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
YXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJj
ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVy
QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OGNkMzQzYjVkNGQzYzg2MzhhMGFl
NTVhYzk1ZTg2YjAyZTVhNjFmLi5hNjFjNDYwZGQ3YTRmYjcyMjVlMjM4ODJmMWFiMWM5MTE5ZGQ0
MGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6Oldl
YlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNl
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVh
bFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWls
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCmluZGV4IDU5Y2Q0ODdhYWRjMTgwYTAwOGQ2YWQ3YzcxNTI1YTgzN2Vl
MmE5NGQuLjNkMGY3ZmI3ZjdiMTY1M2E3YmNjOTFkNWY0NWRmZjBiYWExNWJjM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJGcmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3
NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uNDJmZThmZGZkNDlkMWU2MGE4ZGNmMTFjMTJm
MmZiMDNlMzQ2ODkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFk
ZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxw
dHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAo
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVj
b3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVm
IHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVz
dEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCBy
ZXNwb25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRh
c2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRh
LnRha2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyArMzc1
LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVz
cG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5
UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25z
ZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlS
ZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJl
c3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
c3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0z
ODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVm
PEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25z
ZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25z
ZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAzN2I4Mzg2YTc4YWU4NzVk
YzI1NjNlYmNiMmE3ODg4NWQzMGJhYzQ0Li5kZDc3ZTNiZWIzMzQyMDlkZGI2ZTk2NDQ2YzY4OWIz
ODZhNDQyZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlD
b25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNl
KCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsK
QEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYg
KHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJl
YWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwg
Y29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBS
ZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwg
Y29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5W
YWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZUFzQ29udGlndW91
cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9t
aXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpz
dHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMjYgKzMyNiwyNSBAQCB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkK
ICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBz
aXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAg
ICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAg
bV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9i
dWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOwogfQogCi1SZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgcmV0dXJu
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7Cit9CiAKLSAgICBhdXRvIGFycmF5QnVm
ZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBu
dWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKK1JlZlB0cjxKU0M6OkFycmF5QnVmZmVy
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIHJldHVybiBt
X2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1
MSw5ICszNTIsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpu
b3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZm
ZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZN
b3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAK
IFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzYxLDgg
QEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1
dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4Miw4IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewog
ICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAg
ICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQor
ICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpKTsK
IH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRp
b24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQy
ZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZkOGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4
ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVy
OyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7
IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXRE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFr
ZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIo
KTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0
cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJv
bWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJl
ZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCA3NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNi
ODQyMGE2NmZhLi4yN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsK
IAotICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRh
Q29tcGxldGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5
LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNl
LnZhbHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsx
ODAsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0
LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNl
LmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxl
QW5kVXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBO
ZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9k
ZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91
cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRha2VBc0NvbnRpZ3VvdXMoKS5nZXQoKSwgcmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291
cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNk
YWEzZTE0ODc3YTBhZTQ2NWI2MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAy
N2IwNjMyYmQxZTZlODU4MDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAg
cHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1v
ZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNl
OwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggZDcwYmE5ZWZmMWM5
MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0Yy4uYjk5NzZhZjJlNGRkNDA5YTg5YzNhNDI0NDEz
OWEzZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBA
IC02Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhh
c0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3Vs
dCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRy
OworICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFC
dWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwz
NiArODAsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAg
IHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFC
dWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZl
ci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAg
IG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWdu
ZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVu
dCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5n
dGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZl
ci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNp
emUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0g
ZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAg
ICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVl
OwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAg
ICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVu
dC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZi
MTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4wNGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEz
ODkxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSBy
ZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0K
ICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVz
cG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJl
ZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25z
dDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAt
MTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFt
ZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFs
PENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291
cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmYyZTgyYzJiMTdmM2M5NGRlYmYwYTZhNDE4ZjQ0MzNl
NGFhYmQ2YS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsg
fTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS5y
ZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAK
QEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5n
UG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVz
ZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDE5ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCi0gICAgICAgIG1f
cmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAKKyAgICBpZiAoZGF0
YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNv
dXJjZURhdGEucmVzZXQoKTsKKwogICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5hcHBlbmQoKmJ1ZmZlcik7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVm
ZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisK
K2NvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VE
YXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEuZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxv
YWRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRm
ZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjM3ZDY2N2Q4Mzc2ZDAwZGE3
ODk0NjJkY2NlMWFkYjMzNjg4OWZkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBT
aGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRh
LmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMjgsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRi
NTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcw
ZjIzMjA0OWUwY2EyYWQ0ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
UmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZl
ciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZm
ZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0p
OyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBt
X2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEu
ZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEt
PmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5j
b3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJs
LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
QEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0
N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3
ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2Fj
MGZlNzkuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVk
CiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJf
cyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1w
dHkoKSkKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAg
CiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdy
aXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0
aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50
CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAg
ICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwog
CiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2Mu
Ljk5M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQg
b2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9u
bHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcg
PSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmlu
Zy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNl
cykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBA
QCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2Uq
IHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zl
ci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIs
IHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJp
bmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEt
PmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAg
ICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNv
bnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAg
ICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29u
dGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29k
ZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5z
aXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAg
ICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5z
aXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBi
YXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMg
PSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1M
IHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAg
ICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5j
b2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAg
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVu
Z3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAg
ICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgs
IGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAy
KTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAg
ICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0
YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAg
IHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNzMzNmIzN2RlM2Jk
ZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZi4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4YTcy
NDE1MjMwZDEwOWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBl
bmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50Owog
ICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5
KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFk
ZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAg
LTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFy
c2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9H
X0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChX
VEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAg
ICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRD
aGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMg
YXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4u
KSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRh
KCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4
KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNv
bnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1
dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVk
UHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAg
ICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkBAIC0xOTMsMTAgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LnRha2VBc0NvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVu
dFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0g
ICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJh
c2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90
ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1
b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3Vz
Q29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpT
ZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBl
bmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAg
ZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQt
PnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApp
bmRleCA4NGFhNzJkZjE5NjAzYTE5ZmFjOGYyZDBkNzQyOWNmYjhkNTdlNzczLi45N2NkNGRmZmQx
ODhjMjgxMTFmZDY5YWMwZGJhMzM4YTY3MzMzNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEw
NzljNTY0ZWVmZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0
NjY1Yzc1OTE2ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9j
ZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3Vt
ZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291
cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNjZkM2VhYzViNWRjYzYwMWQ4
ZTAxNjcyNzI3NjdlNTNmYTJmOGM1MC4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2Ey
NDQzMDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAg
ICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7
CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1
M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1
NjE2MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCBmNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjLi5mOWFkNzcxM2M2
MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmlu
ZGV4IDBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQuLjE1NGRiOGNiYWJm
M2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCA3MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllLi43YzAxYzhjYzIz
MTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBD
YWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDcgKzUyMyw3IEBA
IGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGlt
ZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hl
ZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRh
KTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5
ZjQyMmE0OGFiODczYjEyODM0MmY1Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZh
NDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAt
NjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQog
ICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2Ug
JiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAg
LTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBA
IC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYy4uODQy
YmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRh
KHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVw
ZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRo
ZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAg
ICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBp
ZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBk
ODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYy
NmVjNGNiYWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBT
dGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVk
aXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkZmJhNzYxY2IwNTg2NGY1NDI0
NTIzYmEzN2NkNTVjNjAwNWRlZWMwLi41NTY5NjQzY2Q1ZTY4OTdhM2M1OGZiNDYyMzQ1NDZmMDZk
YTBhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDYsNyAr
MzQ2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4
NWMxMWQ0YzE3Mjk2ZmZlNzU3Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkw
ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApA
QCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rl
ciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3Io
Q2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBkZTU3
ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllLi5iMGY3NmE1MDk2MTBmNjcxMDU3
YmVlYmYwYTBiOWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hl
ZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5j
b2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChk
YXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJl
Y2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5k
ZXggZThjMTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRm
NzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29k
ZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCmluZGV4IGI4YjMwYjdlMDgyY2NjMThlYzUzYjE2MGE3OGQ2ZjlhMjgw
MWYyYzguLjFkZjVjNGIxN2VlZWJjYjRlNGJiZmU0YWY4ODkxYWRlY2I2YWI5NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3
IEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2Ny
aXB0SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJj
ZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCBhYjE3MTE0NDQ3N2Q2NDVl
NDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkx
M2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRU
cmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewog
fQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5t
YWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CkBAIC01
MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hl
ZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIy
Yzc3MTM4YjkxNTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBA
IC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVw
bGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMC4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdj
YzllYTM5ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5
bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5n
KCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRh
dGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4
NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNh
MjU4OTEwYjllZmFmNDEyNTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9z
aGVldDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1
NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5mZjQwYzQxNmNjNjE2ZTkyYjEz
MDdiYWJiN2UzNDNiMzdlNTQ2MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiUHJl
dmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgpAQCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVy
IGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3
ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252
ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJj
ZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXgg
ZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNWVkYjRkNmZhYjkxZWI5
MDZhM2RkYzM5MTg0ZDU0NWY1ZTFiZWZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjksNyArNjksNyBAQCBib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJl
dmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUo
KSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmFwcGVuZChidWZmZXIpOworICAgIG1fb3JpZ2luYWxE
YXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2Uo
KTsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmll
d0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgICAg
IHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSk7Ci0gICAgbV9v
cmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEuZW1wdHkoKTsKICAgICBy
ZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZN
b3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3
UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
IGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIobV9vcmlnaW5hbERhdGEuZ2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3
TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUs
NyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVs
dDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2Nv
bnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAg
ICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3Rmls
ZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERh
dGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hh
cmVkQnVmZmVyOjplbXB0eSgpKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0K
ICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgp
LT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2
aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNw
cAppbmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li45ZWI0YmRk
ZjA3Y2Y2MTY2YTU4NjBiYWMwNzQ2MjZkMjk1YWNiMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVk
ZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKQEAgLTY1LDcgKzY0LDcgQEAg
Y29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29u
c3QKIAogY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICpt
X3ByZXZpZXdEYXRhLmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSgpCkBAIC0yMjEsOCArMjIwLDggQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpy
ZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgQVNTRVJU
KG1fc3RhdGUgPj0gU3RhdGU6OkNvbnZlcnRpbmcpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVy
dGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAotICAgIGlmICghbV9wcmV2aWV3RGF0YS0+
aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0Nv
bnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICBp
ZiAoIW1fcHJldmlld0RhdGEuaXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQorICAgICAg
ICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3
RGF0YS5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAh
aGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNCw3ICsyMzMsNyBAQCB2
b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGll
bnQmIGNsaWVudCkKICAgICB9CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNo
ZWRDb252ZXJ0aW5nKTsKLSAgICBBU1NFUlQoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRhLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcHJldmll
d0Vycm9yLmlzTnVsbCgpKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENv
bnZlcnRpbmcoKnRoaXMpOwogfQpAQCAtMjU2LDcgKzI1NSw3IEBAIHZvaWQgUHJldmlld0NvbnZl
cnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAg
ICAgaWYgKGRhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByZXZpZXdE
YXRhLT5hcHBlbmQoZGF0YSk7CisgICAgbV9wcmV2aWV3RGF0YS5hcHBlbmQoZGF0YSk7CiAKICAg
ICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7CiAgICAgICAgIGNsaWVudC5wcmV2
aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2Ux
NDBkMTkwYmE2NGNmOGNlMmIuLmYxNGRlMWQ5MTRhNGNiY2ExNWE3NWQ2ZDVlNWUwZGNiNGM0YTlm
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KQEAgLTQxLDggKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRl
ckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsx
MTcsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0
ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKaW5kZXggZWFjODQxODNjYTNkOWE0NjQ4NzhjNmM0OGZjZTAyMjBhZGQ0NzlhZS4uMjM4
YmJlOTk1Mjc5YzM5YmMyN2JlYTg5YjQ3YmI4ZTg3NGI2NTM1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MzgsNiArNTM4LDM2IEBAIHNpemVfdCBEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSgpCit7
CisgICAgcmVzZXQoKTsKKyAgICBlbnN1cmVCdWZmZXIoKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSgpCit7CisgICAgZW5zdXJlQnVmZmVyKCk7Cisg
ICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNDb250aWd1b3VzKCkK
K3sKKyAgICByZXR1cm4gdGFrZUFzQ29udGlndW91cygpOworfQorCitSZWZQdHI8QXJyYXlCdWZm
ZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK3sKKyAgICBpZiAo
IW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRy
LCAwKTsKKyAgICByZXR1cm4gdGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworfQorCit2
b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1
ZmZlcikKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCiBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDdkODdkMzk3YTMyZGExMWNhMDYyMmMwNDU5
NzA2ZTk5ODk3YjgzYzIuLjY1ZTBiODViZTY2ZWI3MTMxMGM2NjQ5NTQ1N2ZkN2QwZmQ1ZGM2ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAw
OS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTczLDE5
ICsxNzMsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNp
emUoKTsgfQogICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1
b3VzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsg
fQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLSNp
ZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEg
Kik7Ci0jZW5kaWYKLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Q0ZEYXRhUmVmKTsKLSNlbmRpZgotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwot
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CkBAIC0yNDEsNiArMjI4
LDIwIEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCiBwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNl
Z21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJp
bmcgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4g
dGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50
Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwpAQCAtMjY3LDExICsyNjgsNiBA
QCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2Fu
J3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgotICAg
IC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikg
PSBkZWxldGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKQEAgLTI5OCw2ICsyOTQsNTcgQEAgcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIH07CiAKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAg
ICB7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAv
LyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIg
YXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2Ug
Y3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXND
b250aWd1b3VzKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsK
KyAgICB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKKyAgICAgICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHsgV1RGTW92ZShidWZmZXIpIH0pCisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdz
KQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZm
ZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZl
cjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZm
ZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgp
IHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbXB0eSgp
OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsK
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUJ1ZmZlcigpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXgg
NjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1OTI1NC4uNDdjMTBmOTgwMjM0Yzlh
YmM2MDg0ZWMyMTA0NTZmNmIxNTQ4MTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogeworICAg
IEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhcHBlbmQoZGF0YSk7CiB9CiAKQEAgLTY4LDcg
KzY5LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29u
c3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50
cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBt
X3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IuLjJhZGRl
ZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlk
c01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAog
CiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAg
IGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAg
ICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEg
PSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3Vz
SW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJh
eSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0Zjgo
KTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgp
LCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRz
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlk
czsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4K
ICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAg
ICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVh
dGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogCiAgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRz
LT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJu
IGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVu
Z3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJL
ZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4
N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIy
OTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFp
blB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXgg
MzJjNWE2NjhhMTZhZTQ4ZWVlOGM5ZDM4ZGJmZjEzMzA1ZmRhYzBiMS4uYjZlMjM3YjVkZjVkZGY2
YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0
cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAK
IFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
CkBAIC0yMTMsMTAgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjps
b2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0gICAgbV9w
YXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZm
ZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyPiB7CkBAIC0zODcsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZm
ZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVz
b3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFS
ZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggN2JiMjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1
MWYzMmM1MC4uMzMwYmUyMTNjN2ZlZmVkYjJmNzg4YjVjMWVjNDQxYWY3MTk0OWQ0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01MCwxMyArNTAsMTcg
QEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2Nv
bW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwg
bnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQot
ICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5j
cmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBl
eHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkp
CisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVt
SWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBh
eWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8g
cGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3Vv
dXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJl
bGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5p
dERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lz
dGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5k
KCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0
YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBw
YXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNv
bnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAg
U3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC05MCw3ICs5NCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Bh
eWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmVi
NmM3ZDQ0NDQuLjFjODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBi
b29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAKIHN0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXBy
ZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3Nh
dmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2Vy
ID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3Ry
dWN0KiBpbmYKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVk
IG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAg
ICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2Vy
LT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZmZXIuYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hl
YWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5pc0VtcHR5
KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gYnVmZmVy
LnRha2VBc0NvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTll
N2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZi
MmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2Rh
dGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5Q
dHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmlu
ZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMx
ZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigp
CiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2lu
dGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3Vs
ZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAg
ICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3Nl
XTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAo
IW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBz
aXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExv
Y2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2Rh
dGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQw
Ni4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNw
b25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJl
c291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZm
ZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhf
dCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENv
bXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRo
ZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tE
YXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAg
ZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9
IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAg
LTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFz
ayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJh
bmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBE
YXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZm
ZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsK
IAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdl
IHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3Vj
aCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhh
cyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0
aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5z
aXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJu
OwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRv
KiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNr
ID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0
YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0
ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0
YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0
YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAg
ICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5k
ZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisg
ICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRh
KGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJ
bmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEo
Y29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0
dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBl
eHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byog
ZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAo
IWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmlu
aXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEu
LjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIg
U2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNj
cmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9t
VVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2lu
Z2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBt
X2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5j
b250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVy
LmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21l
bnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFw
cGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3Ry
aW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwog
fQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRC
dWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMx
MzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMw
Y2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
QEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHko
KSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0
cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgp
OyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVU
Ri04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8v
IENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCBlOGJjMzk3
OWY5M2Y0M2RkNGZmZWQzYmUwNWU2MTc2ZGQ3YTM3ZDdlLi5hM2NhZjRhMjZmNmYxMzk3MjFkYWQ0
M2FlNjUzYjBhMTZiYWZhYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiRm9udFNl
bGVjdGlvbkFsZ29yaXRobS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJXT0ZGRmlsZUZvcm1hdC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgsMTUgKzc3LDE1IEBA
IHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21G
b250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBp
ZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKLSAgICAgICAgICAg
IG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOwotICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRh
KSB7Ci0gICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRp
ZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhKQotICAgICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwot
ICAgICAgICAgICAgfQorICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29u
dGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250aWd1b3Vz
RGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0Rh
dGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAg
ICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmlu
ZygpKTsKKyAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAg
ICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTEyMSwxMCArMTIwLDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9y
T2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBt
X2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgbV9kYXRhLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNj
Ny4uZGFiNzNmYzdiMWE5M2VkNGUzZmViMzFkNjcwOThkOTliNTE3NmEzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRlck9wdGlvbnMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CkBAIC0zNiw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgRm9u
dExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsK
IAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0
YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggZTBjZGM3MjM0YzU0YTEzZGY3MGE2ODA1YzI4MWI5NDgwNTQ1YWUyNi4uOWIxMTJiOWRi
MmNkODRkMDMyZjU5ZGFmYThlOGUzOGUwNzBlNTNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmlu
Z0FkYXB0b3JzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUg
IlRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTIwOCw3ICsyMDcsNyBAQCBSZWY8QmxvYj4gWE1MSHR0
cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVj
ZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJh
Y2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAg
aWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5n
ZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAg
ICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlKCktPmV4dHJhY3REYXRhKCk7
CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250
ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25z
ZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAg
ICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUo
ZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOSArMjE3LDcgQEAgUmVm
UHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZl
cigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZm
ZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0
ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0g
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2VBc0FycmF5QnVmZmVyKCk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRUaW1lb3V0KHVuc2ln
bmVkIHRpbWVvdXQpCkBAIC03NDEsNyArNzM4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xl
YXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwog
ICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0g
bnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIucmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlk
ID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOSArMTA2Miw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1f
cmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAwNDg0NjI2YjJlNWRmZGRhN2NiMTZjNGY1NTIy
ZGVmODRjNGFjMTg2Li4yZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDUsNyArNDYsNiBAQCBjbGFzcyBCbG9iOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRo
cmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM3LDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50Owog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmlu
Z0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1NzdkNjU2ZTY3
ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxLi4wYjlmNDlkMzY0YzI1OTVlMjIzYjMxMTRk
ZWFmY2VlOTJhNDAwZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMDYsMTAgKzMwNiwxMCBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsK
IAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVm
ZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAKICAg
ICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzQsMTYgKzczNCwxNiBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlz
RmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUo
bV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAgICAg
ICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5
OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBh
cnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11
bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5n
LgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkK
LSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0
YS5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7
CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2OSwxMCArODY5LDEwIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUp
IHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5n
IGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAgICAgICAgIGNv
bnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAv
IDg7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXIt
PnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1
cm47CkBAIC04ODAsNyArODgwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICB1bnNp
Z25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAogICAgIGlmICht
X2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3Ro
OwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtOTA5LDExICs5MDksMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgog
CiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5l
dHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLmdldCgpLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEg
JiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVk
RGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1
ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBz
ZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigq
bV9idWZmZXJlZERhdGEuZ2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2Fk
TWV0cmljcykpOwogICAgIH0KQEAgLTEyNTksMTIgKzEyNTksMTIgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogICAgIEFTU0VSVChtX2J1ZmZlcmVk
RGF0YSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCi0gICAgaWYgKG1fYnVmZmVyZWRE
YXRhLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZURhdGEoeyAqbV9idWZmZXJlZERhdGEuZ2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyODksMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09y
aWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAg
ICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5n
IGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRj
aENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RG
TW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAg
ICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS50YWtlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
TE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBp
biBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5j
dXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7
CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9y
ZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAq
dGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVl
YTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLmM0MjM0NjUxYmE5MjhiOTVkOGM2ZjU3YmUy
NWM1ZjIxMTg5ODlmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC0yMjUsNyArMjI2
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1f
cmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xv
YWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQxLDcgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5l
dHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlk
YXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2Fj
aGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlk
NjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBS
ZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9u
c2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxw
dHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wg
dmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7
IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2Nh
Y2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQog
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVt
b3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXpl
X3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAK
QEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29t
cGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3Jl
KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNv
cHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAg
IC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAg
ICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0
KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkg
PSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1v
dmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3
Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsK
KyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsK
ICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZjk0ZGU5MzNmZDBjZDQzZTQ4YmJh
ZWU3N2YzMGFiYjY4ZjBkYWI4OC4uZWQ4Y2I2NTNlY2ZkZDEzNDczZWUxZDJhZjUwYmFhN2E2Zjdh
MTAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAK
QEAgLTE4NywxMCArMTg3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFT
ZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0
YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAg
ICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNSwxNCArMjEyLDExIEBAIGF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
IC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OldhaXRpbmdG
b3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwot
ICAgIAotICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
LSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCisgICAg
aWYgKGlzU3luYygpKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS5zaXplKCk7
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLnRha2VBc0NvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVy
KG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0Rh
dGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRp
ZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTky
NDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmRkNmI3MjQxMGFkZDRlZjYzMWQyODA2OWUxNGEz
ZjJhMDBjNWNjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNCw3IEBA
IHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRp
b25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGlu
Z0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBk
YzU2ZDJjNjZlZDg2Yjk2Mjk1MGEzNDgyMDgzZTM0NThiMzJiNTJjLi4wOGNmYmI1NTBlZGNiNTZj
NTk5N2EwNDM2YzI5NjUzZWYwZTgwM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDAzLDEwICs0MDMsNyBAQCB2b2lkIFBsdWdp
blZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVCht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3Bv
bnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgICAgIG1fbWFu
dWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0
cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MzcsNyArNDM0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewog
ICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
OwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5yZXNldCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI2LDggQEAgdm9pZCBQbHVn
aW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2lu
Vmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6
ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9t
YW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAg
ICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJl
YW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1
cm4gbV9tYW51YWxTdHJlYW1EYXRhLmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KQEAgLTEyNDMsOSArMTI0MCw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFu
dWFsU3RyZWFtKCkKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFs
U3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51
YWxTdHJlYW1EYXRhKQorICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50
YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkK
ICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRh
dGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURh
dGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1h
bnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZj
ZDY4MDIzZjIzLi43MzI3NDFkOTVlZTZhMmI2NTZmM2Q4YzA4YzhhZmZiYTdlMmZhZjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5WaWV3QmFzZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNw
b25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UaW1lci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
QEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
bV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X21hbnVhbFN0cmVhbURhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX21h
bnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQg
c2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAg
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhk
NTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIw
Y2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApA
QCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVy
LT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAg
ICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNw
b25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWls
ZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VE
YXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRh
LCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAg
ICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
fSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBk
aWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQog
ICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2Nh
ZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0
MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4g
bV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4s
IFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAg
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJv
cj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3
ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uMjNkMDExNGIwZTk0MGVlMTM0M2Uy
NDc5NmYzZmM5N2FhZTMyZTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KQEAgLTQ1LDcgKzQ0LDYgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xv
YWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmls
ZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7
IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogewog
fQogCkBAIC02OSwxMyArNjcsMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRG
aW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1f
YnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFrZSgp
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsK
LSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9p
ZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZj
MDdjYjUzZGE4Ny4uOWU2ZjUwZjFiMzI1YTEzMzNmMmM5NGMxNzQ3NGMwYTdmNTM0ZTVhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDYgKzI5LDggQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1Niw3IEBAIHByaXZh
dGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRp
OwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVj
NjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJhMTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9p
ZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBC
U1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29w
dF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29k
aW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7
CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0
LCBTVEFURkxBR19OT05BTUUpKSkgewpAQCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJG
cmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBl
LCBfSW5fIEJTVFIKICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBj
b3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIK
ICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAg
ICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNf
Y2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+
KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVu
ZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkp
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIp
LCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0
YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBu
dWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMyMDNiMTExYjRhODljYTI0ZGZkNzI3Y2NhZWEx
ZThhZGQ3MDdmMDUuLjNmMmRhZGNhYzMxNWM1MTk1Mzg4MWE2MTg1ZmJlNjYyYzM1ZDczODIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1
NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yNSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRp
Z3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUg
aW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IGJhYWUyN2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZiZDRmMDUy
MmMyMDAuLmFkZDI0OGIwZGUyZDJmMTFjNWExZjUyY2E3ZThlZmE5NDkyNzRjMDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC03NCwyNCArNzQsMTYgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17
Ci0gICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkp
OwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7Ci19Ci0KIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9U
X05VTEwoY29udGlndW91c0J1ZmZlcik7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSgh
bWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAg
ICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6
ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAg
RVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpA
QCAtOTksMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3RE
YXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJs
ZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJs
ZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJs
ZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5h
cHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
dGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAg
Y2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAg
QVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlv
biwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsK
QEAgLTExNCwxMCArMTA2LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0
MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAot
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9
IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4
NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAg
ICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytp
KSB7CkBAIC0xNTQsMTcgKzE0Niw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkK
ICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBT
YWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywi
CiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJp
ZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERh
dGEpOwotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERh
dGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAg
IGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIg
bXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hl
Y2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUo
KSk7Ci0gICAgYXV0byBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9F
UShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNs
b25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0
aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNp
emUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0
eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7
Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVz
dERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVz
dERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRv
IGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtl
KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5w
dHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShj
b3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGlj
YWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7
CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAg
IEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
KyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZv
aWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3Ro
LCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE4MiwxOSArMjEwLDIxIEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdl
JywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaics
ICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7Ci0gICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1
dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBnaDEgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAg
ICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAg
ICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1
dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0
YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBn
aDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMyw2ICsyMzMsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCks
ICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJh
YmNkZWZnaGlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAi
Z2giKTsKKyAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hp
amtsIik7CiAgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwogICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAg
IGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAgLTIxMSwxNiArMjQyLDE4
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3Rv
cjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEu
Z2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50
OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgp
LCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSku
Z2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEp
KTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAn
ZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKICAgICBF
WFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsK
ICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9
KS5nZXQoKSk7CkBAIC0yMzAsMTEgKzI2MywxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
aXNFcXVhbFRvKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAg
IFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQx
KSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0
cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3Vs
dCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7
CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9I
ZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNTUsMTYgKzI5MCwxNyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAg
IEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihz
aW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxl
VGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCks
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAj
aWYgRU5BQkxFKE1IVE1MKQpAQCAtMzE5LDE1ICszNTUsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2
XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ld
ID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIo
ZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEp
OwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEp
CkBAIC0zNjQsMTYgKzQwMiwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0
LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2Uo
KSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEo
c2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwor
ICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBj
aGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRl
clRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQxMiwxNyArNDUxLDE5IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRp
U2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVp
bGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VR
KHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcyOTAzNDViNDJm
MTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdk
NmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3IEBAIHN0YXRp
YyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQs
IE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRh
QXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5p
bCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
d29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9E
YXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVp
bGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxs
b0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjks
MzIgKzcwLDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsK
ICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAg
ICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBs
ZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEu
Ynl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0Rh
dGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsK
LSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAK
ICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEg
XTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsg
d29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7
Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9y
IChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJV
RShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVk
RGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5j
b3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsK
ICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgp
ID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+
IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIu
Z2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtp
bmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFb
c2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERh
dGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291
bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWls
ZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEo
MUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446532</attachid>
            <date>2021-12-09 06:01:28 -0800</date>
            <delta_ts>2021-12-09 06:41:19 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211210010125.patch</filename>
            <type>text/plain</type>
            <size>518375</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRmMDIyNzUwMTQ3ZDYx
Y2FmNGI4NGQ4OGVhZmY4NTRmNzBlYzRhZS4uMGNiYmY3OTI3NDUyNzFhOWI1NzhhOTc0OTliYzFk
MmNiYzgwYjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBBIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBs
YWNlbWVudCB0byBSZWZQdHI8U2hhcmVkQnVmZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbnVsbCBhbmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxv
d2luZyBhIGNhbGwgdG8gcmVzZXQoKSwgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAg
ICAgICAgd2lsbCByZXR1cm4gdHJ1ZSBhcyBvcHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBj
cmVhdGUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6
ZSBvZiAwLgorICAgICAgICBBIG51bGwgU2hhcmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhh
dCBhcHBlbmQgd2FzIG5ldmVyIGNhbGxlZCBvbiBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVt
cHR5IFNoYXJlZEJ1ZmZlcikuCisgICAgICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sg
aWYgdGhlIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGlu
ZyBjb3B5KCkgb3IgdGFrZSgpIGFzIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0
ZWQgaWYKKyAgICAgICAgbm9uZSBleGlzdHMuCisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lv
bnMgd2VyZSBtYWRlIGR1ZSB0byBob3cgU2hhcmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAor
ICAgICAgICBhbmQgdG8gbWluaW1pc2UgdGhlIGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3
b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxk
IGFsd2F5cyBjcmVhdGUgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAg
ICAgIGl0cyBzaXplLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGlu
Y3Rpb24gYmV0d2VlbiBudWxsIGFuZCBwdHkgd291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4K
KworICAgICAgICBXaGlsZSB0aGUgYWltIHdhcyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1
ZmZlciBvbmNlIGJ1aWx0IHdhcyBpbW11dGFibGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3Qg
ZW50aXJlbHkgYWNoaWV2ZWQgYXMgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBS
ZWZQdHIKKyAgICAgICAgdG8gYSBTaGFyZWRCdWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0
byBpdCB0aHJvdWdoIGl0cyBTaGFyZWRCdWZmZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxs
IGltbXV0YWJpbGl0eSBjb3VsZCBiZSBmdWxseSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSBy
ZXR1cm4gYQorICAgICAgICBzaGFsbG93IGNvcHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFw
IG9wZXJhdGlvbi4KKworICAgICAgICBGbHktQnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZp
YSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0
byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291
cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
YXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJj
ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVy
QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRC
dWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAg
IGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4g
dW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBt
YWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhh
dCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQg
YXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
QXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmds
ZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVl
biBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hl
biB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5n
ZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBh
IGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5v
LW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAg
ICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9m
IGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAg
ICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVy
c2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRh
bmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhl
IFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBh
bmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAg
ICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3Bl
cmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBj
aGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5
IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUg
Y2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMg
aXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1
bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJl
IG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4g
TmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjph
ZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVL
ZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3Rh
dGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFu
ZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1No
YXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRU
SUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRo
RGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRB
c3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENv
bnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxp
ZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRo
Q292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJs
ZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRh
YmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpz
Y3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6
OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWRE
YXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GdW5jKToKKwogMjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdl
YkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlNDhiNGJmMGM5MzFmYmUxZmJkNTQxNzc3NGM1
YWNjNjJkNDBiMC4uYTYxYzQ2MGRkN2E0ZmI3MjI1ZTIzODgyZjFhYjFjOTExOWRkNDBlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2No
ZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFt
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1
MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29w
eSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgor
ICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6
OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcElu
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5j
b2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+Ojpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAg
ICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25z
dCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAg
ICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdobGln
aHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRG
aWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVU
YXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6
XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbik6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0
aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmls
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2Fj
aGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBj
b25zdCk6CisKIDIwMjEtMTItMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIENvcHkgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIgZXJyb3Igd2hl
biBmYWlsaW5nIGl0cyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggZDA4NDQ5YzE0OTI5MDRkZjhlMzRlOTJmYzE3NWVjOGI0YjVhZmNiOC4uODE3
OTUxMjExM2JjNjgzZjliYWU0OGExZWFlYTgyMjk5ZTYzYzRiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAz
MAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgt
W0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRh
U291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVu
dUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dl
YlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0
YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0w
OSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0
ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZp
bGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA1ODQwZGUxMTY3NzE5YTA2MzliOGEyMWJiZGFlOWQ4
NGVmN2Q4OTJhLi4zZDBmN2ZiN2Y3YjE2NTNhN2JjYzkxZDVmNDVkZmYwYmFhMTViYzNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMTItMDEgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAK
KyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpk
YXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6
Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDkg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVh
ZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxl
cyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEy
ZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFm
ZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZO
ZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmlu
ZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5
ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1l
VHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJ
bWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBO
R1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxv
Yjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21h
Yy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNh
NTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2UzOTA4OTI2ZThl
ZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJv
YXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImlt
YWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9j
XSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBh
dXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChh
dXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpu
aWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwog
ICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRp
b25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3
Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29t
cHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRf
dCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURh
dGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAg
ICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVs
bHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi40MmZl
OGZkZmQ0OWQxZTYwYThkY2YxMWMxMmYyZmIwM2UzNDY4OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9z
aXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0
LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25z
dW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVy
KSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25z
ZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdU
Rk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksMTUgKzI5OSwxNSBAQCB2b2lkIERPTUNh
Y2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3Bv
bnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAg
ICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9u
LCByZXNwb25zZSwgZGF0YS50YWtlQXNDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAg
fQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1
ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9u
c2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCld
KCkgbXV0YWJsZSB7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJl
c3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gK
IAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBi
dWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkg
PSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25z
ZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9t
aXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3Bv
bnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVu
aygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAg
ICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RG
TW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0
aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5r
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVy
KCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RG
TW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBA
IHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNl
PiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtl
QXNDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3
ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZl
MmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAg
LTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwg
RXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVu
dW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAg
IHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgz
YTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMy
NDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9u
c2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9
LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewot
ICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJl
dHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11
dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51
bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2lu
ZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25z
ZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7
Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VC
b2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2Uy
NmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJh
ZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5k
TG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29s
IHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVN
YXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29s
IGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMs
IGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlz
b2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQg
UmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQw
ZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lz
dHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUo
KSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwog
ICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1
dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVm
ZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lk
c0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJy
YXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9
IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRl
eCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZl
MTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXIm
IGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwog
ICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0
aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Yi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25z
dCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8
S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4g
TWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWly
ID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxC
dWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlC
dWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBjMDQ3MzEyODRmNjc2YWE1YzUw
Zjk0MGJlNGY2NjE3MjVkOGJmOGFjLi5kNjViMjdiZmU4YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3
MmQ2MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBA
IC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93
bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5
Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFC
b2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXIt
PmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29s
dmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRC
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwog
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1F
OiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBv
dGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9k
eTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAg
IHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAo
YXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6
OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3Jt
RGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAt
Mjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAg
ICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBA
QCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4g
Zm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChp
c1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
UEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5n
KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29k
ZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5i
eXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5
QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CmluZGV4IGJhZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMw
MDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRh
dGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAg
VGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+
JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIz
OTdhYzU1OTNiNDRiNTM5ZDNlNjcxZTQzY2U2ZGIuLmRkNzdlM2JlYjMzNDIwOWRkYjZlOTY0NDZj
Njg5YjM4NmE0NDJmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNo
Qm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVm
ZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVBy
b21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFj
aygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2
ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAg
ICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5r
ID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90
eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2lu
ayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90
eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJl
dHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29s
dmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChj
aHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBj
b250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURh
dGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0
byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAp
KQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBj
b250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwy
NiArMzI2LDI1IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFw
cGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsK
LSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKLVJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAoIW1f
YnVmZmVyKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAw
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsK
K30KIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOwor
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCk7CiB9CiAK
IFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1Miw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAg
IGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVj
dG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBl
KSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIp
OwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxv
YkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJl
dHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgp
LCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNU
ZXh0KCkKQEAgLTM2Miw4ICszNjEsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAot
ICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZl
ci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgYXV0byB0
ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzgyLDgg
QEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2Up
CiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7
Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZm
ZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVy
KCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4
Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5Yjcz
NjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAg
LTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1
ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAg
ICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJy
ZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRv
U2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1f
c291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKaW5kZXggNGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBkM2Y4NDhmNjRmMi4uYjkzNDM5
MmE5MDNkNGE1ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURh
dGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5r
IHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1
bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9k
eVNpemVXaXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAg
ICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAot
ICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhp
c10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlm
IChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAg
ICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2Mz
ZjZlMmZkYjY2NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTkyNzI5MzBiYmMyZDE2NjZjNmFl
YjU0N2ExYjVlZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkg
ZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0
YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAg
ICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3Bv
bnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFh
N2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2
NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewog
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0g
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdo
bGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwog
CiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYx
ZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIz
NGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDgg
QEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4
MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRS
YW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0
byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAg
ICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgw
NWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFh
MmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0
cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29k
ZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2Rl
S2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0K
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJL
ZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRh
dGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3Qg
dWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2
N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlE
YXRhJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0
YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
MGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNm
YzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
RXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlv
bi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJp
YWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0g
c2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxv
YikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0
byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyAr
MTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBh
IG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3Ig
bmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBm
b3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNh
Y3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtl
eVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBp
bmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRl
eEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7
CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkp
OwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAg
LTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29y
ZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRl
eEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwor
ICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsK
ICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYx
LDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0lu
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0
c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRh
KTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAg
ICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAt
MTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVS
ZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJl
bW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQg
ZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5
IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9y
ZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBv
YmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5Lmlz
TnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7Cisg
ICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAo
IWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBs
b3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1
cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQog
ICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1
cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJL
ZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJf
cyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAg
IEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBl
OjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7Cisg
ICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBs
b29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5k
ZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxv
d2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9Owog
ICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElE
QktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAg
YXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlm
ICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAK
aW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQz
YTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAK
QEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAg
IGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVy
KSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1
cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUlu
ZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
IChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpi
dWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5k
IGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3
Yjk0YzllN2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3MzA1NjU3ZDBhOTcwNTY2MWU0
YmI0OWNlMGI4NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9T
ZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNz
YWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEo
bV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgp
LCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0
YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNl
MTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1
NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2Vz
KSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0
YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsm
XShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0
YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5jcHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODll
MC4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291
cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBt
X2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRl
ID0gZmFsc2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBtX2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgp
OwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1f
cmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEs
IGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAK
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFp
bGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1f
ZGF0YS5yZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0
ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9k
ZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0
YS50YWtlQXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNl
LnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJi
YjFhZjJjODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3Vy
Y2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVz
b3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRl
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
aW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQy
NTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0Qu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3Vy
Y2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJN
b2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0g
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5
NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGlj
IEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9h
ZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4
Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5v
dCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBb
Jl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1
YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0
YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1f
Y29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAg
bV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1
b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAg
bV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAg
IG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMo
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCpt
X2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAg
ICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygp
OwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1
ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRh
YmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJp
bmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAppbmRleCBhZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBjM2E4YzY5YTljMzFkLi4zYzVl
YTliODlhOWM5ZTkwMzcwYjk4ZGY1Mjg1NjMwNjQ5OTAwN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRG
YWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NF
UlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZH
Rm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2
Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAg
ICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRP
VEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250
LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygp
KTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5E
b2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NG
b250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBp
ZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRl
U291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRp
YXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgo
KSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFw
cGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIz
YjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRT
ZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBA
QCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENh
cGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZh
Y2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdl
YWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250
cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRS
ZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRl
ciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Z2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1f
aW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0
Li5mYTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwot
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjEx
YzIyOGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291
cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFz
cyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRp
dENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxv
bmVJbWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5
cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmlu
Zz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0
RGF0YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5I
VE1MRm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVG
b3JtYXQoRWxlbWVudCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlz
aWJsZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Cisg
ICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYK
ICAgICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRy
aWJ1dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAw
NmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4
OWU5OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRp
ZmllcjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
aW5kZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAw
YzY1NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6
OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICgh
YXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRh
V2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVT
IGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRl
ZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAog
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAg
U3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRh
Rm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMs
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVj
dG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lk
IEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYg
ZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBk
YXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAg
ICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAg
IG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEy
ICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJE
YXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRX
ZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewog
ICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
bV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRh
UmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAK
IC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2Zl
ciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZp
c2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVT
dHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZE
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYg
KCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRG
REZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9
XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJU
RkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAg
ICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgw
OGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5
YjViMTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRB
dHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAg
ICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkg
ewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAg
ICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIp
IHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVu
dExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAg
IGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJl
c291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2Zp
bGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxl
bmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsK
QEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmls
ZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYg
KENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAg
ICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiBy
ZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJi
OTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjcz
MDk4MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9p
ZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAg
ICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9
OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+
dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
bmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RF
bGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0g
ImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RG
TW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUt
PmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcg
KzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RN
YXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5
cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1
cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1h
cmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFp
blJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9Owog
fQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3Vw
QW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3
ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJl
cGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpm
cm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZy
YW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1l
TWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1
bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01J
TUVUeXBlQXNIVE1MKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdz
KCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZy
YW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnBy
ZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYg
KCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJv
b2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJm
MDliNzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0
ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50
JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVu
Y3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUg
c2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2Vk
IGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1Mg
WCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2
ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBT
dHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVz
aXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50
cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhG
VFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGlj
IGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShj
b25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1w
bGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCkt
PnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1
bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
c3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQg
cGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVu
dCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBn
ZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3
MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uYjk5NzZhZjJlNGRkNDA5YTg5YzNhNDI0NDEzOWEz
ZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02
Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhhc0Rh
dGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9
IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwor
ICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZm
ZXIucmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiAr
ODAsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZp
Y3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZm
ZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5z
aXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBw
ZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBB
U1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1f
ZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAg
IGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7Cisg
ICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci50
YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUo
KTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFs
c2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
QnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAg
ICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBl
ZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4wNGIzNTUwNzMzN2M4Yjg2
MWIzODNkODgxM2RjMDNmMmEzODkxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgog
ICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxs
VGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9v
bCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAg
ICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90
IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0
YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5n
IG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAg
ICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFmODUyYzIzNjJiMzk5NDli
ZGQuLmU1OGJjYzJhYTdmODE0ZDk3N2ZmN2Q4ZjI2MjNjMzdlY2JhN2MxZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkK
ICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVz
b3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVz
b3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2
NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJl
c3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggOWI1Y2FkOTU5YThlNmYyYzJiZjcwZTFhZWUxNDI4NzQ1
OWQwNjYxMi4uYTNjNjBjM2I2OTZhODNkODMxZDg5N2Y4MTY3YTMyYmUyMzczNzFiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1h
aW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rp
bmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVy
Q29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewot
ICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9
CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2Qy
MWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQg
Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChy
ZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3Vy
Y2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNl
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkp
OwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4
IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTcz
ZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcg
QEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRS
ZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9h
ZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVy
cm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxv
YWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0
aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggY2Y2Y2NmMmJkMDg5MjUwYzYwM2ZkMDRiNzRj
M2VjOGMwZTQ5YzRmMS4uZmRmZDBlYWFmM2E1MDE4ZDkwMGJhMWE2ZDdhNDhhZTU3MzJmMzRjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA1LDExICsx
NjA1LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAg
YWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZl
LT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+
bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2Uu
ZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1h
a2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1p
bWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1p
dERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6
ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJl
c291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0x
NjQ5LDcgKzE2NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJj
ZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAK
LVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QK
K0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBA
IC0yMjUzLDcgKzIyNTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRp
bmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2Uo
KTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNl
RGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkp
OwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZjdmM2YzODQ0ZjE4NDQ3YmU4ZGQ3Yjgy
ZDNhNDQzNTAwMjIxNjc2Mi4uYTAwZTE0YTczYjBlOTQ2YTBhMzc1N2I5MzE3Y2IwZjQyZDRkOWYx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcg
QEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291
cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7
CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hp
dmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJj
aGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZy
YW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJj
ZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAz
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElW
RSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0
ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUx
ZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAg
Ly8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3Vw
cG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJl
c291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBh
dXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggZDY4OGQ4MGE5YmQ4ODhkMjlhYjkwNmU2NDY3MDYwMTdjZmI2
OGE0Zi4uMTFmNjcwMmQxZjY4ZmRlYmFlNGFlYTM1MjY2ZTAyZjg0MTdkZTJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7
IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5h
bCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRl
V2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFhZThiODRkYjkyMGI2NmVi
ZjIxNGYyNmVjOWFkNi4uZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2ViNTU0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRl
bnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRl
ck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291
cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kg
Y2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBT
dHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlciht
X2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdv
aW5nUmVmZXJyZXIoKSk7CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRh
dGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQ
b2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwg
YnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBw
bGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVx
dWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVl
c3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihv
cHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0
aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5h
dGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5k
ZXggZWRlY2UxMmNkN2E5NmZlYjkzNWMzMzQ2NmM0NmNhZTAyMGUyZjNhYy4uOWMzZjc0YzQyZGI4
ZTdiYWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2Fj
aGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpA
QCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVO
QUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNo
aXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQ
b2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJj
ZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
KyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRj
aE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3Rk
OjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9t
KCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2
NDY2OGU0OTUxNzZhYzIzNS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1
MCw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRp
ZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291
cmNlRGF0YS5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
KCk7CiB9CiAKQEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRh
QnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAg
ICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVy
aW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAg
ICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNl
dCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVz
b3VyY2UoKQpAQCAtMzM0LDI0ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAg
ICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3Vy
Y2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsK
LSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVy
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisg
ICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQotICAgICAgICBt
X3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5h
cHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5k
KGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5n
dGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURh
dGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewogICAgIGlmICht
X3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgICAg
IG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uMzdkNjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IApAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNv
dXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEo
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpA
QCAtMjI3LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJl
ZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0
YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
RGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBk
YXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBk
YXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAy
Y2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBj
YTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Uo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRh
KTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZl
cmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxv
YWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9h
ZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0K
IAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyAr
NTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJj
ZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBh
NzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0
VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCht
X21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21h
bmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAg
ICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5J
RkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBm
YWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENh
Y2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNI
RSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIz
ZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2
MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJs
eSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVy
biByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7
CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VG
cm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQog
ewogICAgIC8vIElmIG5vcm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJl
c291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRh
bCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9y
IGlmIHRoZXJlIHdlcmUgbmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2Vs
ZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSBy
ZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVx
dWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNw
b25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVl
ZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUg
Y2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1v
ZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAg
ICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2
MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRl
cjsKIGNsYXNzIEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7
CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNl
KFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25v
dXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFs
bGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
LCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAK
ICAgICBib29sIGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcx
MDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikK
IHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGgu
aXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJl
c3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsK
IH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlw
ZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUx
Nzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3Yjhi
NTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJl
c291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5j
NzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1
dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElO
VE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAg
IGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAg
U3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBA
IC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJl
c291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJs
b2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5k
QmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3
MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFl
eGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNv
dXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2Un
cyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2Yg
bWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+
ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3Vy
Y2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMs
NyArMTExMiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0
dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25l
ZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2
NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3Rh
dGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAg
ICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7
CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIy
MTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIz
YzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3Qg
YmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3Qu
Z2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRh
KCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwg
TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51
bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAg
ICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJl
c291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNv
dXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291
cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291
cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNl
S2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0
dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNy
ZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25h
cnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAg
ICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNw
b25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhB
cmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlz
IG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRh
KHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQog
CkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBm
cm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2
ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEg
PSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0
YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBl
cnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBw
bGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlz
dENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxl
LCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3
NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJl
bGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAg
ICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgp
KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHBy
b3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGlu
dmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
CisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6
ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGlu
dmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAor
CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFy
Y2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAg
ICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2Ug
aW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMz
LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZh
bGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2Ug
PSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1
YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0z
NTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBh
Ym9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJm
cmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUt
PmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hp
dmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExl
Z2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAg
ICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3Vi
ZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcs
IEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwot
ICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBh
IFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3Bv
bnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkK
IAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hp
dmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4g
aWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQg
KHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0
cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lk
dGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVc
IiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCku
dXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAy
MmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJi
YWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAv
LyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxh
Y2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVy
cyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJ
KCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAg
ICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEu
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAg
Zm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVy
LmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFy
Y2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29k
aW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxy
XG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCks
IGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTog
aWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBo
YXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0
YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNp
emUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFi
bGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5j
b2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNT
RVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdl
IGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1
dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3
ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1M
RGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0g
ZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNp
emVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4
aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29k
ZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAg
ICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCAr
PSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtl
U3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1o
dG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1
ZS4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4YTcyNDE1MjMwZDEwOWIxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAt
MTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVu
ZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0
eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFy
eSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFj
aGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2Rpbmco
KSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVx
dWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29u
dGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBh
cmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAg
ICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEw
ICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51
dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0
ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNv
bnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAg
ICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0g
TUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxp
bmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250
ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBD
Ui1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgi
XHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVI
ZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Cisg
ICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZUFzQ29udGlndW91cygpOwog
ICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAg
Y2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJh
c2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJp
bnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAg
ZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAg
ZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBk
YXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJM
IGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUg
aXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZl
IGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAg
IC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRl
IFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNGYyMjhlOGQwMzg5YjhiOGNiN2Y0MTQ4NmZk
Yjc4MWM5YmY2NWJkMi4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
LSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAg
ICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThk
OWFlNWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1
Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBj
b25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjlkMmRj
NzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlw
ZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNo
ZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJh
dGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKQEAgLTk3LDEzICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQ
YXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRh
dGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3Vu
ZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRT
aGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRo
ZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29k
ZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsK
ICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0
IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMg
Y2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQy
NTc5YjhkOWE3YTEuLmQzN2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4
MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNl
ODI1MDY2NmEzMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZv
bnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0g
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2Rh
dGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250Ojpj
YWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21l
bnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYg
KCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2Fk
aW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5
IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdy
YXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVm
ZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1
LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3
YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4
Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2Zm
MmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21G
b250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJv
b2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0
aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9t
UGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0
ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRS
ZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHZvaWQgZGlk
QWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92
ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uN2Mw
MWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5l
IHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291
bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFy
ZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9k
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+
c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29s
IENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNl
Y29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVk
KFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkp
Ci0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lU
X0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1
bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEo
KSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERG
RG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0
aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90
IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFn
ZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBA
IC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURh
dGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVy
dGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2
M2ZlYjg1YmEwNTUyMDNmNC4uZDUxM2UxNmNiYTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDgg
KzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBi
b29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1f
aW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUs
NyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lk
IGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdl
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYp
OwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9p
ZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJi
MDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODQyYmY1ZjIwZTA2ZmQ4M2E3
MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJp
Z2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZm
ZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkK
QEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0g
JmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBw
cmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkg
PiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7
CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVm
ZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpA
QCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVm
ZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAg
ICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNo
dW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwot
ICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEt
PmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlm
IChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
aW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwog
ICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1
NTY1OTk1M2UyOGJhNjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVk
KCkgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGly
ZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBz
dHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZp
bmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKaW5kZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3MmEzZTJhMDEwZTc4MTA4
OC4uNTU2OTY0M2NkNWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBt
ZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZm
ZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJl
c291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVj
a05vdGlmeShtZXRyaWNzKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
OjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRh
KQogICAgICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlm
ICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5j
bGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVm
IHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXgg
Mzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uMjE4ZDc0ZjI3NzZhOTY1
ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAg
ICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3Ig
PSBlcnJvcjsgfQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJM
b2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25n
IC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNo
YXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpA
QCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRS
ZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VS
ZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
IAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAv
LyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3
MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYw
YTBiOWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2FjaGVkU1ZH
RG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGlu
ZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVz
ZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAg
ICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdz
LCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAg
ICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVm
MzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMz
NjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4u
OWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBi
b29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxl
QXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5h
bFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3Vt
ZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3Ig
PSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9v
bCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJz
dEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAg
IG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBj
Ni4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHBy
aXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9u
dEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVs
ZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVu
dD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA1
NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li4xZGY1YzRiMTdlZWViY2I0
ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVuc2lnbmVkIENhY2hlZFNj
cmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAotdm9pZCBD
YWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjc1
YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBm
MzIwODZiNWRlYjYxLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApA
QCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRh
ID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIo
bV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0
ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBk
YXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEp
OwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4
dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwog
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIw
NjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNm
NGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRl
eCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5iOWE2NTg3NTNjZTlm
N2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYgQEAg
U3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4g
bV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRh
dGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlm
IChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnko
bWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEw
Y2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMz
NGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJM
UmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRv
ckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNl
c3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNr
Q2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2Vk
KFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2Eu
bW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2
Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyAr
NDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNl
Y29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQg
YmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0Nh
Y2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hl
TW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3Bv
bnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJl
ZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2Fj
aGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRN
ZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZv
aWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBE
aXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1l
RmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291
cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lk
IERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVt
b3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVz
dCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIw
YmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmZmNDBjNDE2Y2M2MTZlOTJiMTMwN2JhYmI3ZTM0M2Iz
N2U1NDYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNyw3ICsz
OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2
YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcwLDcgQEAgcHJp
dmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBS
ZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX29yaWdpbmFs
RGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAg
IGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZj
OGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li5jMGRjZjgzMTRkNWE3ZmI0MmNjMmFjOThlOWQ3
MGE5ZDZjZmZmZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFw
cGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBtX29y
aWdpbmFsRGF0YS0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1
ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwogICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlk
U3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+
Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0
ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07
CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQ
YXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29y
aWdpbmFsRGF0YS5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdh
Y3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJl
dmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJl
dmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQg
eyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2Nv
bnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpKSB9CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hv
dWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygp
LnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRkNjRm
MjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQzMWQzNTA3MDY4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWlu
dDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggMmNkMTlhMTEwYjJiODY5MjNmNDYzMTI5OWRhMzU1MDYzYzhiYjUx
MS4uOWM5MDBiZThmNGM1MjExNDc1NjYzMDE5MTFiYjkzYjBjZTM3YTZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xOTU1LDcgKzE5NTUsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHls
ZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmlu
aXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRo
ZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3
aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHls
ZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDE2NWFhODA1OGEwMzkwYjQ1MTU3OWExNDc2MWJkODY3
OTQ5MzY0MzMuLjAxZTE2ZGQ5OGY0ZGYwY2ViMjFkZjkwOGQxZjQwYzYyNGFhZTRjMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9k
ZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVl
SW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+
c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVu
Y29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAg
bV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwg
UEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VV
UkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3
ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENT
U1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYg
bm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgUEFMOjpUZXh0RW5jb2RpbmcgdGV4dEVu
Y29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJU
KHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1
cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29k
ZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQu
dG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAg
ICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgyLDcg
QEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSog
aW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwg
V1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9y
ZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdi
OGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3Vy
Y2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihW
ZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMw
NmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUy
NzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcg
QEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmls
ZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURh
dGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApp
bmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1
MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNo
YXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7
Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcx
LDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQg
bG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3Bl
bmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwog
ICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmls
ZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChX
VEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAo
bV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5z
aXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBp
ZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFu
ZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIz
NTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1
NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVj
b2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXks
IGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFhMTZmMzQyYzE3
NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2ExM2Q3MzkzNGFhMDQzNmVlN2Y3
OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2MSw3
IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
IGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1
Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJk
V2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21h
cnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRh
dGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2Ugewog
ICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2Vu
ZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgog
I2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxT
dHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xp
ZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGll
bnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXpl
IGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiBy
ZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3Ry
aW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJl
YWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5
ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1c3Rv
bURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQgY3Vy
cmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5LDcg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8IHNh
bWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMo
KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5j
b2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVj
b2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQs
NyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBh
c3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZl
ci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMw
My4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2ICszNCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewpA
QCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYg
b3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIm
Jik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3
MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5hNzg4ZmI3MzBlZGMxYzNlZmFk
ZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0
ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0
aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFs
bFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFz
dGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1
MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0
ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3Jt
YXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJB
cmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9y
bWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8
U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUwMDI0M2JiNDZmZjU5
ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
NDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUlu
Zm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1Ymxp
YzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1Q
YXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5n
JiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0
cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29u
c3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3Jp
dGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0
Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li45ZWI0YmRkZjA3Y2Y2MTY2
YTU4NjBiYWMwNzQ2MjZkMjk1YWNiMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiUHJldmll
d0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKQEAgLTY1LDcgKzY0LDcgQEAgY29uc3QgUmVz
b3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKIAogY29u
c3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdE
YXRhLmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJj
ZSgpCkBAIC0yMjEsOCArMjIwLDggQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0Ns
aWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgQVNTRVJUKG1fc3RhdGUg
Pj0gU3RhdGU6OkNvbnZlcnRpbmcpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3Rh
cnRDb252ZXJ0aW5nKCp0aGlzKTsKIAotICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgp
ICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRp
ZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICBpZiAoIW1fcHJl
dmlld0RhdGEuaXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQorICAgICAgICBjbGllbnQu
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS5nZXQo
KSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50
KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNCw3ICsyMzMsNyBAQCB2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVu
dCkKICAgICB9CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWRDb252ZXJ0
aW5nKTsKLSAgICBBU1NFUlQoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSk7CisgICAgQVNTRVJU
KCFtX3ByZXZpZXdEYXRhLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcHJldmlld0Vycm9yLmlz
TnVsbCgpKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmco
KnRoaXMpOwogfQpAQCAtMjU2LDcgKzI1NSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVs
ZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgaWYgKGRh
dGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByZXZpZXdEYXRhLT5hcHBl
bmQoZGF0YSk7CisgICAgbV9wcmV2aWV3RGF0YS5hcHBlbmQoZGF0YSk7CiAKICAgICBpdGVyYXRl
Q2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7CiAgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2
NGNmOGNlMmIuLmYxNGRlMWQ5MTRhNGNiY2ExNWE3NWQ2ZDVlNWUwZGNiNGM0YTlmNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KQEAgLTQxLDggKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsK
IHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBw
cml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3By
ZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlz
ZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRh
Y2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMz
MmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcg
KzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50
SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAg
c3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3Ry
aW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBh
ZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZi
MjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLjE2NzIwOGNlOGRhYjcxNWRiNDVlYThkYTA5YTRi
ZDNhZDU0ZTY3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApA
QCAtMzcsMzEgKzM3LDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEsIHNp
emUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
ZGF0YSwgc2l6ZSkpOwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkp
OworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworfQorCitS
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZShwcm92aWRlcikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKSA9
IGRlZmF1bHQ7CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmls
ZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVy
LnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAog
I2lmIFVTRShHU1RSRUFNRVIpCkBAIC03MywyNiArOTUsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRC
dWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVy
KSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNl
RmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZp
bGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0
b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArMTA5LDE2IEBAIHN0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6
OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0
cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3Rh
bmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFs
bCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJp
bmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6
ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAg
ICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNv
bnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwog
ICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBt
X3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNT
RVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QK
LXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29u
c2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVk
RGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNv
bnN0CkBAIC0yMDIsMTAgKzE5NCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNv
bWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBt
X3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdt
ZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdt
ZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVt
ZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBw
ZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3Np
emUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywxOSArMjA1LDE5IEBAIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3Np
emUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUg
Kz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9p
ZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFT
U0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2Nv
bnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1f
c2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2Vn
bWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRz
KQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVn
aW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+
bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1l
bnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29u
c2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0
dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShE
YXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRC
dWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2Vn
bWVudHM7CkBAIC0zNTMsMTIgKzM0MCw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAg
fQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Ci17Ci0gICAg
YXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5k
KCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFs
bHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3Miw0MSArMzUzLDEyIEBAIGJvb2wgU2hhcmVk
QnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0
YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0IFJldGFp
blB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFH
ZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdMSUIpCi0gICAgICAg
IFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQo
KSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgW10o
Y29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAotICAgICAgICBb
XShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHBy
b3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwg
bV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsK
LX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
U2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4ge3sgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwotfQotCiBib29sIFNo
YXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAog
ewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAgLTQ1Niw3ICs0MDgsMTE4IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQp
Cit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQor
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1
ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7Cisg
ICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3Vz
QnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwg
Y29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAg
ICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRy
dWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBw
aW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBN
YXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Cisg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRo
LCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1
Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0
ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0u
c2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAoreworICAgIHJldHVybiB7IHsgZGF0YSgp
LCBzaXplKCkgfSB9OworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sKKyAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCisj
aWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHTElCKQorUmVmPERh
dGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwor
fQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNl
bmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworY29uc3QgdWludDhfdCog
RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAoreworICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFr
ZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisjaWYgVVNFKENGKQorICAgICAg
ICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCog
eyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKKyNlbmRpZgorI2lmIFVT
RShHTElCKQorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0
IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dl
dF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFN
RVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEp
IC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKKyNlbmRpZgorICAg
ICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3Qg
dWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgp
KTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KKyAgICApOworICAgIHJldHVybiBzdGQ6
OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK2Jvb2wgRGF0YVNlZ21lbnQ6
OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEp
OworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUz
OCwzNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0
eSgpCit7CisgICAgcmVzZXQoKTsKKyAgICBlbnN1cmVCdWZmZXIoKTsKK30KKworUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSgpCit7CisgICAgZW5zdXJlQnVmZmVy
KCk7CisgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1JlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNDb250aWd1b3Vz
KCkKK3sKKyAgICByZXR1cm4gdGFrZSgpLT5tYWtlQ29udGlndW91cygpOworfQorCitSZWZQdHI8
QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK3sK
KyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShudWxscHRyLCAwKTsKKyAgICByZXR1cm4gdGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
OworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCit7CisgICAg
aWYgKCFtX2J1ZmZlcikKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworfQorCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERh
dGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkp
CiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAg
ICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldp
dGhpblNlZ21lbnQpCkBAIC00ODksMjYgKzU4MiwxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6
U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBz
aQogewogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEo
KV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs2MTcsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1
ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uOTgw
ZDc1ZGVjMjZiYjE5ZjE5ZGI4NzAyYjc4Yzc3ZDRmYTFjY2UzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02MiwxNDYgKzYyLDEyNSBAQCBjbGFzcyBE
ZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZl
cj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJs
ZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBt
b2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitj
bGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVu
dD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25z
dDsKIAotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9
OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMpOwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAotI2lmIFVTRShGT1VOREFU
SU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJl
dGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0
YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVh
dGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENG
RGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJik7
CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVm
UHRyPEdCeXRlcz4mJik7CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFw
cGVkT3duZWRCdWZmZXI+JiYpOwogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2Vz
IGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0
aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBi
ZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBz
aXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYg
cG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNo
YXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7Ci0KLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5n
IGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFy
ZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRh
KCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFy
ZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBt
ZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFw
cGVuZChWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogCi0gICAg
dm9pZCBjbGVhcigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNv
bnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwor
ICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQg
Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UHJvdmlkZXImJik7CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91
bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2Jq
ZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBu
ZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgog
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7
Ci0gICAgICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0
YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAg
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVy
JiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIp
KSB7IH0KIAotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248
Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBz
aXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAg
IGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0
b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBV
U0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBH
UmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRh
U2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3Zp
ZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsg
fQorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+
IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworICAgIGZy
aWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCit9
OworCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKLSAgICAgICAgc3RkOjp2YXJpYW50
PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2Vu
ZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYp
OwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRl
cyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAg
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1f
aW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9
OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBh
dm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBz
YWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90
PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29w
aWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVm
ZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIu
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIGNvbnN0OworCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAgYm9v
bCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KIAotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JF
YWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
KT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3Jl
OjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNp
bmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVj
dG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMTg5
LDE2MiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0
YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAg
RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBi
b29sIGhhc09uZVNlZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAx
OyB9CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8o
bG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVf
dCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hl
eFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygp
IGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0g
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0KLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwogICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3Bl
cmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
KSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0
OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250aWd1
b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsgYXBwZW5kKFdURk1v
dmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsK
ICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYK
ICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3du
ZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0
TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAK
LSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogCi0gICAgLy8gQ29t
YmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVj
dG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+
IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCisgICAgLy8g
Q29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQg
dmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsK
IAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAg
IG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgog
fTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQg
YWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQg
cmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBT
aGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsK
KyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAg
ICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIq
IGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpOyB9CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkg
Y29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpT
aGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNp
ZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBj
cmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgor
I2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdt
ZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJl
ZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJl
IGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXIt
Pmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSB7CisgICAgICAgICAgICBt
X2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogU2hhcmVk
QnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoYnVmZmVyKSB9KQor
ICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBl
bmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUo
KSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW1wdHkoKTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVy
PiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbnN1cmVCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
K307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgp
CiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY2LDIzICszNTIsMjQgQEAgaW5saW5lIFZl
Y3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKICAgICByZXR1cm4gY29w
eURhdGEoKTsKIH0KIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcg
eworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVs
bG9wdCk7Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcmLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcmLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdt
ZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQogICAgIGNvbnN0IGNoYXIq
IGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZh
dGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsK
KyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3Qg
bV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJi
Nzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUx
YjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0K
QEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93
UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
RWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxh
eWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsK
LSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURh
dGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJ
bmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0
KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5n
OjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIz
ZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAg
dm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVM
YXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hF
bmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlM
aXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgp
LCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1
YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYw
MmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5j
b2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRm
MWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uNDdjMTBmOTgwMjM0YzlhYmM2MDg0ZWMyMTA0NTZmNmIx
NTQ4MTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVm
ZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcApAQCAtMzUsMjMgKzM1LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRp
Z3VvdXMpOwogICAgIGFwcGVuZChkYXRhKTsKIH0KIAogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxv
d3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5j
dGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAj
aWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0u
c2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAg
ICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0
ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAg
ICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2Vn
bWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYK
IApAQCAtNzIsNyArNjksNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAg
aWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2Fy
ZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBm
MDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDEx
IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGlu
Z3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNv
bnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1
ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhE
YXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJp
dG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJl
dHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZl
ciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9y
VHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBj
MGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjk4MDU0N2I4Y2M0YzRhODhjYTE1
NWNiYjE3ODIwYWY4NWUyZGM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZm
ZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRp
b246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50Jilk
YXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2Vy
KXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7
Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9k
YXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRh
U2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXpl
OwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNV
SW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21l
bnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBA
IC05NSwyNyArOTUsMjYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
TlNEYXRhICpkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkK
IHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2Vf
Y2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
TlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNG
RGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVD
RkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsK
ICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRh
dGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNp
emUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50
LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVz
b3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNSw3IEBAIFJldGFpblB0cjxOU0Fy
cmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0K
IAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNE
YXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEo
KSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEg
YWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdl
MjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNP
Tk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmlu
ZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAg
ICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdi
ZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcw
YzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0x
MzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEu
aXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEg
PSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0
YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEt
PmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAg
ICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5
Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zy
b21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0
RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIw
NCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlm
IGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQg
fHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRz
LnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBj
b250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8q
IGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJy
YXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7
CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwot
ICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwot
ICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpz
b25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwog
CiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAg
IGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAg
ICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgp
OwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBU
aGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJl
cnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVt
ZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBz
ZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0
YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUo
KSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkp
KTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7
Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7
Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwg
anNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1G
YWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0
YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAt
MTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAg
IG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFh
OTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdi
Mjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBT
dHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5
ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGEx
NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5k
QXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7
CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50
QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWls
ZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBn
X3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5
dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5
dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
aAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5
NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwog
CiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBi
b29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hh
cmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVl
MjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgs
MTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRl
cyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7
CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0
CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkg
Y29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdS
ZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVy
IGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVm
KCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBz
dGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAg
fSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1
cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3YzQ4NzhhYmVlMTAzZmJhZjIxZjU3
MC4uMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUmVmPEZv
bnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9y
aWdpbiBvcmlnaW4sIEludGUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3Jt
RGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJh
Y2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCitSZWY8Rm9udD4g
Rm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwg
Rm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1
c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VE
YXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaAppbmRleCA3NDQyMDA0ZjAwYjVkYmEyN2YzYzMyZTY2N2IzNmJjY2Y3ODUxNGNkLi40
YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwgSW52aXNpYmxlIH07CiAgICAg
ZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFs
OjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJh
Y2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9u
dDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4s
IGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGlj
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJm
ODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBi
M2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdy
aXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlv
bjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkg
aW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2Ug
KGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0
LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBs
YXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcg
ZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0
aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4g
bV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5j
cHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdl
ZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0
ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVS
TCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwg
V1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVm
PFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1v
ZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwg
VVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShX
VEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2
YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmEx
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAg
KzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgp
OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsg
fQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAg
ZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJM
KTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3Vy
bDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1v
ZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAg
ZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2Rl
bDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7Cisg
ICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBX
RUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2Mx
YmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWdu
YXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNl
dCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAg
ICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAo
YnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBA
IHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zm
c2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29s
IHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZf
dCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRf
QVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6
ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJv
b2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQog
CiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3
T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZG
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0g
MDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToK
IH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYs
IFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VS
VF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBj
b252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2Zu
dCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BB
UkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwg
Y29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAg
ICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2
MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMg
d2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVm
ZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVy
bnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJl
IGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91
dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQg
cGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYg
d29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8g
SWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZv
cm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0
byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJ
ZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRy
LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+
Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzEx
NGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1
MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5m
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3Jt
YXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZm
ZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAg
ICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNp
emUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24p
OwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMz
NWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUx
YmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyAr
MzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8g
UGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2Jq
ZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJl
dHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFs
aXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5p
dERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5p
dERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAg
ICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6
aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RS
RUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXRE
YXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7Cisg
ICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0
aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6
QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5n
UHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25z
ID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAg
ICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRv
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92
ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhB
cHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0
b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2Fk
VmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxv
YWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJl
c3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVz
cG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29u
dGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxv
YWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyAr
OTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGlu
aXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0
LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6
OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFp
clBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZp
cnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6
IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNl
IHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3Rh
dHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Np
b25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBp
cmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0
b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNv
bnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQi
OwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRT
ZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAg
ICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEq
IGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3Mo
KSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRp
Zmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYs
NyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFu
Y2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9
IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsK
QEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9
IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVu
dGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50
S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9y
ID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMo
VmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAg
IGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkp
Ci0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWly
PFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBD
YWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2Fs
bGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3Rv
cjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAg
ICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5
LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwg
a2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBi
YXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJ
RC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFz
ZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5n
dGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkp
KTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0
YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCku
cmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChy
ZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0g
V1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRl
bnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6
YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5n
ZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlE
KSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICpl
cnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAg
ICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBh
Z2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0g
cmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwx
MCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3Rh
bmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0g
a2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMu
Zmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAg
ICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6
YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5n
ZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICpl
cnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1
MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4
NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpD
OjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJj
ZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2Rl
Y29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdC
KCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3Nl
dC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQs
IDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0
cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1d
ICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkK
IAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xv
YWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQp
IHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCAxYTQzYzdk
ZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEzLi5hYmQ4MWU1ZjNjMWVhNTBlNDIyZTJm
YTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxh
Z3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIo
KTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
YXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxh
Z3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5z
RGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRp
bnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRm
ZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAg
LTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3Vy
Y2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4
NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4
MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVz
b3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4
IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2
b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlmICghbV9i
dWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFyZW50Lm5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4g
ewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
cGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNSw3IEBAIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVj
b2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZp
bmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRh
VVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9i
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1
ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBj
YjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRf
RmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9u
dERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcgKzU1LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9Owog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUy
ZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElu
dFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVm
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3Np
dGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291
bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFy
ZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZm
ZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6
ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24g
Pj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1h
Z2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhp
bnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRD
RihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNv
dXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAg
ICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7
CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBO
U0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRv
IHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hh
cmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBh
cm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tp
bmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25h
dGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNl
aXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgp
LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigp
OwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0
aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAgICAvLyBk
b2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBn
dWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1l
bnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92
aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVk
QnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0
YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVBy
b3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tz
KSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRh
LnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURh
dGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxs
RGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjli
MmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAy
ZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERG
RG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEo
KS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVX
aXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURh
dGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2Ji
Li44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBs
YXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAog
ICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
aW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5
ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAg
ICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2Fz
dDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIx
NjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThm
NDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9u
dFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJu
IG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRh
dGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtD
VEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFl
ZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTI5LDcg
KzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFy
eSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkg
bGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnko
bGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmlu
ZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFl
YmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3Jt
RGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3Rf
Q2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWly
b0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAg
IEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0y
NjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVT
aXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYg
VVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJiYWVhNWI4NDViZGVmYmI2ODZmZTI1MjU5MzMu
LmI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1h
cHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNp
emUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0
IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZDgyY2QzZTE4ZWNlMDQ3
NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5MjM5YmI3ZjBkOGZiZTQ1NjAyNmU1ODJh
M2ZjNmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0
Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBA
IC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQog
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgog
ICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2YjI3ZTYw
ZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2
ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAg
LTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIEltYWdlRGVj
b2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
OwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgi
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXpl
ID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIklt
YWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNp
emUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6
R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4MjRkZmMxYzM4MWE1ZGEwMjkzLi4zYTIw
MTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY2OSw3ICszNjY5LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcg
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0
RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBp
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRh
dGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgp
LT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1E
VU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERh
dGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEu
cGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQy
NzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1
NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdN
YXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3NoIHsgZmFs
c2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3RhcnRFbGVt
ZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUsIGNvbnN0
IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJyb3IqKikK
QEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFyc2VDb250
ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAodXNlckRh
dGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAgIGlmIChw
c3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAgICAgfQog
fQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJz
ZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFy
a3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBU
ZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBh
eWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5w
YXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9h
ZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxv
YWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNm
MWQzNDJhNDY0N2QyZjEuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1YzFlYzQ0MWFmNzE5NDlkNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTAsMTMg
KzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9t
ZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxf
RVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlk
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0
RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXls
b2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVt
SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlk
KHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1v
dmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1h
a2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2Vk
UGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQg
YXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzYsMTAgQEAgcHVibGljOgog
ICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQogICAg
ICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3BheWxv
YWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFwcGVu
ZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7
IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1J
ZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAt
ODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAog
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBj
bGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3
NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAg
cmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBv
cmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01v
ZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikK
IHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNG
RGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcw
Nzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3
NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7
CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgz
ZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3
Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3
ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERG
RG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5j
ZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1
cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4
YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4
NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFn
ZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9w
ZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFy
ZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAg
IGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
R2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291
bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25b
Y291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdp
dGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VP
ZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBj
b25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zm
c2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNl
dCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdl
dEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlw
ZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQg
Z2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZl
Y3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0
Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAg
ICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZh
cmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlh
bnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNp
emVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxH
bHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2
YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhW
YXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5
cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBt
YXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9p
ZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3Bl
blR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2
b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZz
ZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0
ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcg
QEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlw
ZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0
aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhD
b3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50
IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0
cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlw
aENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50
KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIw
NCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
VmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFu
dHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNl
dDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRh
YmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
Y29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQp
CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0
aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1h
dGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50
c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRl
eCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1
YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBA
IC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAg
IGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAj
aWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRo
QnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7
CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhG
b250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5
M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2
ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQx
NiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNo
MSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJf
dCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCko
Y2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVU
YWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAx
KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNv
bnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQg
PSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICog
Y291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBi
b29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBv
c2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlm
IChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZm
ZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAg
fQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0
cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAg
IHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4o
cG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkK
QEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAg
IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBz
dHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZ
UEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0
ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBj
b3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdl
LCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAg
ICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6
IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRl
eCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJj
YWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9y
dCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFu
ZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0
dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9y
PHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVj
dG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxE
YXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAg
LTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250
RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBSZW5hbWUg
dGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1S
ZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250
TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnRE
YXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIz
MGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBC
aWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEVP
VFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
QEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1
ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5h
bWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4
ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1
YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1
YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBj
b25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3Zl
cmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1
Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpA
QCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJ
bnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxl
bmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdl
dFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEds
eXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291
bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFi
bGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBl
OjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29r
dXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxp
ZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAg
c3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBs
b29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAot
ICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMs
IEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBs
b29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBs
b29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJ
bmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9
IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90
IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVu
VHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAg
IGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3Vu
dF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmlu
ZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0
YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAg
ICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVz
W2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lz
VGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50Owog
ICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBG
ZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50Owog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBA
IC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAg
ICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNb
MV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExh
bmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3
IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9m
ZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0
VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRh
ZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3Qg
U2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRF
bmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBT
Y3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNj
cmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
Y29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwog
ICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdT
VUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9m
ZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25z
dCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RP
ZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlz
dD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBs
b29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAg
Y29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZl
ciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxp
c3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2
YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0K
KyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4o
YnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBk
ZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlw
dHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3
ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVh
dHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9w
ZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0g
ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NV
QlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0g
ICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlw
aD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRW
ZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5
cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVy
ZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ug
ewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVU
YWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSog
aGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZl
cik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0
LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAg
ICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRo
YXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFn
KTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlk
YXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxE
YXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAK
IHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9u
cyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIg
PSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwog
ICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9u
cygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0
Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmluZyBjcmVh
dGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBm
NzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThm
NWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYs
MTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9y
eVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0
aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5n
czsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0
aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
CmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3
ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRl
VW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZv
bnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQo
YnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4
IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAx
MThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9X
aW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1J
c0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBt
X3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2Jk
YmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2
MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBA
QCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9u
dCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVj
dE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhk
YywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9
IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAg
ICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEu
ZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBz
aXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2
ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1
MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVj
dGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFy
dFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5T
bWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0g
ICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRh
LmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0
b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4g
ISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21E
YXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJv
b2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0
b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2
YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29k
ZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJl
ZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRo
ZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+
c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0
YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5k
YXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2Vn
bWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29k
ZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6
ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJl
Y2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZm
ZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjFjODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2
ZDBiYjg5NGQ1NGU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIw
LDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0
ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19z
dHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJ
Q0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVm
ZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtl
cl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlz
SUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2
LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2Rl
Y29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFk
ZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAg
ICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2Vy
LT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChi
dWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXIudGFr
ZUFzQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQ
RUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9m
aWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVy
OjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5j
MDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7
IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAgICB2
b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQg
c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYK
IAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRk
ZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJp
bmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRh
ID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApA
QCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVu
dFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQu
Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVu
dFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
b250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5k
YXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBj
b250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcg
KzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAg
IGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYg
KE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZl
ciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmli
dXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYg
KE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZl
ciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmli
dXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxs
cHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2Vu
dGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0
b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250
ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3Rv
bURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2Fy
ZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwog
fQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRh
dGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlm
IChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVU
SSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlN
RVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFn
ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFt
ZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAv
LyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAK
ICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0
YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0p
IHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsK
KyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5n
ZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAg
ICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAg
ICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0
ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJl
ZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxp
bmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5v
cmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1
ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAg
ICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAg
Ly8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFt
RGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAg
ICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9h
ZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAg
ICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQg
dG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3
ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQog
CiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVl
KTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBl
XTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAt
NzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdz
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWlu
ZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVt
c10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0
ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAog
U3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJm
OS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5T
RmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2Fy
ZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNl
RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmls
ZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsK
IH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJl
ZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVy
biBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsK
IH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5k
ZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29u
c3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJv
YXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAg
ICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgs
IHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJM
UmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmco
bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgp
LCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmli
dXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVu
dEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmli
dXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4
MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBA
IC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3Ry
aW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50
RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlV
VEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJ
KHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2Vi
Q29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRh
OmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJu
IHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFm
ZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2Fy
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJv
YXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Omdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3Ry
aW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0
YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsK
IH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0y
MTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNl
dDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVk
Q3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVk
Q3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0g
b3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBl
cygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0y
NjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAg
ICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JU
eXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcg
PSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURh
dGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0g
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0
b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXpl
ZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJp
bmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQg
c2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5
cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2Fy
ZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0
ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAt
NDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFz
dGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICpp
dGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQs
NyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0
ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRh
dGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0
KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0
YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRl
bShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAg
ICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxh
dGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6
Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5
OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2Rj
MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNz
ZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9j
ayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBk
b3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4
YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAw
M2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAg
ICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwg
d2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUg
c2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlm
IChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0g
ICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2Rh
dGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7
CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsK
LSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCAwYzkwODE3YzRlOWI0MWYzNDlhNDFhZTY0
YjcxOTA2Yjk1MWViODlhLi42MjM2NGQ3MTNjOTVhOWY4NDNjN2QyOWMwMWYwZGViOWFlNmQxNzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAt
NDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25z
dAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0
dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRl
bigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGU5ZDM0NDNmOGI1YzY4MjQ0NjY1
NmMxODgwNTY1N2NjMjlkMmQ4MzcuLjEwODI4MTEzMWY4M2U5OTM3MGZjNTA5NzgzM2NjNTBlZThh
ZGJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1w
bDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQg
ewogICAgIHN0cnVjdCBFbmNvZGVkRmlsZURhdGE7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkg
Y29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsK
IAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07
IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5
c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4
YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1
ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNv
dXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2
b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUs
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApp
bmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFhLi44OGRlZGZhNDVj
M2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAog
ICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhh
bmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNl
aXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdp
bmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlciho
YW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2lu
YWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNk
YWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAg
ICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVz
cG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAg
ICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVj
dCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRl
VG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0
ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Np
b25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRl
OjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0Rh
dGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3Bv
bnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7
IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVz
b3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVz
dFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0
aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1h
a2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3Qg
YWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0
aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29u
dGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29u
dGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0
YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7
CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAo
IXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rh
c2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIg
eyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1
dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0
byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAg
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+
c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUo
KSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0
aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChk
YXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7Cisg
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgog
ICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4
cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAg
ICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZm
ZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rh
c2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTky
MjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291
cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxm
ID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBh
dXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdT
ZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAg
aWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNz
aW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAg
ICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vz
c2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApp
bmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2Qx
ZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNv
IGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVu
dCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6
OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAg
IC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2lu
Zy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9i
dWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAK
QEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0Nv
bnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBs
YXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAg
ICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0
aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCks
IGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0
YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwg
bGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNo
ZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9i
dWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZm
ZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBi
b3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYz
NGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5
MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6
d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lk
IEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2Uw
MTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2
ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xp
ZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250
aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURh
dGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1
b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJp
Y3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgv
U2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hh
cmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJjMzgxZDNk
MTk2MTNlNjAuLjNjYTIwODIyYzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4M2ZlOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5j
cHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmICh0b3Rh
bEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAppbmRleCAyYjMxMjg1ODcwMzAzZDA5YjAyNDUzNjVkNjFhYjg5MTEx
MWRhYWI1Li5hYWNjMzdjZDI4NzI4MGYxYmUwMDg3OTczNTFhOThiZjhiYzFiZWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05NzgsOCAr
OTc4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFy
ZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRh
LT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9y
eShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDMwLDggKzEwMzAsOCBA
QCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmws
IFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0
aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1w
V3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAg
ICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEt
PnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1w
RmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCks
ICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAg
ICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4
OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVm
MTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwg
MCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUz
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYg
KFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNS
ZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVz
dWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQg
Y29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lp
KCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4
Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAg
KzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
IGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBT
dHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAg
IGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0
ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmlj
YXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0
aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9
CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5n
KHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChy
ZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAg
ICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJh
Li41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZm
ZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVy
IFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBT
Y3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJv
bVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0
QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1Np
bmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZl
ci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdt
ZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjph
cHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAg
ICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0
cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
IH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0
QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDlj
MTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdmOGM1MmI0NGVhMjQz
MGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5
KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBp
c29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUo
KTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHko
KTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRT
ZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBV
VEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAv
LyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNDMzZDll
MWE0NWMyOTg4NTQyYjA1ZTc0YjQ3MTdhNzcwNTcyOGJiNi4uYTNjYWY0YTI2ZjZmMTM5NzIxZGFk
NDNhZTY1M2IwYTE2YmFmYWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkZvbnRT
ZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTc4LDkgKzc3LDEzIEBA
IHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21G
b250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAgIGlmIChtX2RhdGEp
IHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJp
bmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3Vz
RGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0g
bV9kYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewor
ICAgICAgICAgICAgbV9kYXRhLmFwcGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAg
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgq
Y29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwog
ICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAg
ICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDEwICsxMjAsNyBA
QCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
KyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRl
eCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkz
ZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAg
LTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25D
b250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGll
bnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNk
Mjk5MGRlZDVkYjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUw
NzU4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBz
dGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVk
PFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1l
Qm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZN
b3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNs
aWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUy
Li4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6
cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9
CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBt
b3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlw
dFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxl
TWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVz
IDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0
ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlV
c2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3Jp
cHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlMGNk
YzcyMzRjNTRhMTNkZjcwYTY4MDVjMjgxYjk0ODA1NDVhZTI2Li45YjExMmI5ZGIyY2Q4NGQwMzJm
NTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMu
aCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJs
ZUxvYWRlci5oIgpAQCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUg
ZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBp
cyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICAgICAgZGF0YSA9
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJp
bmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJl
c3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUg
ZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9y
bWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsyMTcsNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBB
U1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAg
QVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQodW5zaWduZWQgdGltZW91
dCkKQEAgLTc0MSw3ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNl
QnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVh
dGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwot
ICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsK
IH0KIApAQCAtMTA2NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1
aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2Ugewog
ICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBl
bmQoZGF0YSwgbGVuKTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRh
dGEsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCmluZGV4IDA0ODQ2MjZiMmU1ZGZkZGE3Y2IxNmM0ZjU1MjJkZWY4NGM0YWMx
ODYuLjJkMTNiZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEyZDgwMzc3NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRl
IDx3dGYvVVJMLmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxv
YWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzcsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBt
X3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4u
YTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3Rh
dGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
IAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2Vk
ID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVz
b3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwp
OwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4
ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYy
YzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3Rh
dGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9i
YWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1
MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0x
MDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWls
YWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFS
ZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJl
bmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZl
dGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2lu
dGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVy
ID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1
ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpE
YXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNv
ZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2
Y2FhOWQ1NjljNTRiMDlkNzIuLjBiOWY0OWQzNjRjMjU5NWUyMjNiMzExNGRlYWZjZWU5MmE0MDBm
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xv
YWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVy
ICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5k
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAg
ICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdv
cmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTMwNiwxMCArMzA2LDEwIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9u
cygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGlt
dW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsK
IAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBh
cmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczNCwxNiArNzM0LDE2IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAg
JiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1F
VHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsK
ICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3Ry
YXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11
bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxs
ZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFu
ZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFy
dCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVy
ZWREYXRhLnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY5LDEwICs4Njks
MTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJl
YW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAg
ICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0
eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1
ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5k
KGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5y
ZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAg
IHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+
PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAg
aWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVm
ZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7
CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFM
ZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC05MDksMTEgKzkwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2Vu
ZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNo
cm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQo
KSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCkuZ2V0KCks
IG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVk
RGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFs
IHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAg
ICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVm
ZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29y
a0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1OSwxMiArMTI1OSwxMiBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNTRVJUKG1fYnVm
ZmVyZWREYXRhKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBpZiAobV9idWZm
ZXJlZERhdGEtPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVu
Y29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI4OSwxMiArMTI4OSwxMiBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Ny
b3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29u
bmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsK
ICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0
b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnBy
ZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgp
LCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsK
KyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2Fk
LT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVu
dHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFG
b3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRh
YmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xvYWRlciA9IFJl
ZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNl
SGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRh
YjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTkyOGI5NWQ4YzZm
NTdiZTI1YzVmMjExODk4OWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9s
YXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTIyNSw3
ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNw
b25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAg
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWdu
ZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9u
b3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDEsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQ
dHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2Fw
VmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RG
b3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJj
OTA2MDA1NTVmNTcyMTYxYzNjMmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2Ni
ZGE1ZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
cwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhX
VEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2Jv
ZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIu
aAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3
MWQ0ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBw
dWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsK
ICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5n
IEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZv
ckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0
YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJl
YTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAog
ICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9z
Y3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7Cisg
ICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4
ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQy
NDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcg
QEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24m
IHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRj
aE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAg
ICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2
NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdl
OjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25z
ZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgp
LCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0
b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZm
MzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAg
LTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VS
ZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rl
ci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAg
ICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBp
ZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07
CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHks
IHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlk
ZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2
MmZmMmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVz
cG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBh
cnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1
Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3Qg
TW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBA
IC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBp
biBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1
ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCAr
MTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10o
YXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+
c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBh
IHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFt
X2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5t
YWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFr
ZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJh
ZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1f
ZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjdlMDVi
YTg0NzhhNTgxODMwZTM5NzA2OGIzMmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4MTgzYzk2Yjgz
MTIwYjFmZWYxNTZiYjhjMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9u
YWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
cmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNy
ZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5w
dXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRj
YjMzZWY3MS4uMjlmNzFkN2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUx
LDkgKzUxLDkgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJD
b3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRl
eCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNkODcyZjhkNDRm
MTVlMGVlMzdjNzM0OTJiMmQ4MDJhYzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xhc3MgU2hhcmVk
QnVmZmVyQ29weSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsK
IAotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkg
eyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9Cisg
ICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
KyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNo
YXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAg
ICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0g
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZm
ZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0K
IAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMx
MWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODVi
NjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBA
IC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1v
cnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBT
aGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJh
YjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5
MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3
ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGlu
IGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7
CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3
MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2
ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNo
aXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8
QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRh
KCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFu
Y2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBD
RlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3
MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBh
ODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkg
dGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIg
aXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0
YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZv
bnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBk
ZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFi
MWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEw
NSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5
ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVu
Y29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJu
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
b250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFj
OWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUm
IGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0o
KSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFy
ZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsK
ICAgICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaAppbmRleCBkYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVk
MDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3Vy
Y2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVh
YmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRC
dWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3Jh
cEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9y
eTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAz
NDA1NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+
PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
U2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQw
LDcgKzI0MCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09
IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBA
IHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
ZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAg
ICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3Qg
aSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29k
ZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29y
ZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VC
b2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dp
dGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRp
b25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICho
YXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1
ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVl
OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1
ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFs
PFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxp
emVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RG
TW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMx
LDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxS
ZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5v
bk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
K3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKwor
c3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1No
YXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRm
MWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiAr
MTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsK
IGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsK
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShE
ZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVk
OWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBA
IHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRh
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0
b21EYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9t
RGF0YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsK
KyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5j
cHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRh
NTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3
ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8
UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6
OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRl
c0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250
RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5j
OTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBA
QCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFn
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5n
JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgK
aW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVj
OTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNG
aWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
QEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2Uo
Ym9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9z
aW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKaW5kZXggMzZhNmY0ZmIwN2YwYWI5ZGRjN2E0NjE4ZmVkNDIyZWMzODk3NDAzNS4uMmY0NDhh
NzYzOTI3ZTAyZWNjMTU5NzU2MDJjOTAxYjcxOWExYTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0x
NTEsNyArMTUxLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5
KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+
KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0
IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMx
OWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5
NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50
Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdy
YXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+
ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0
YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRh
Y2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCBhNzJkMGQyYzkyZDdkZWQ0NWUwZTQxMGI0MWRjYjhmYjRkYTVhZTg1Li4zZmJk
ZjE0NzFlZmY5YTUzNmRjOTkzM2FhNDRhMDk2Yjk0ZWQyYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBA
IC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQm
KWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hs
aWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19X
S0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdo
dC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8g
d2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhp
Z2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5O
ZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dl
YlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3Vw
OmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNd
OwpAQCAtMjIyMSw3ICsyMjIxLDcgQEAgLSAodm9pZClfcmVxdWVzdFJlc291cmNlOihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGEKIHsKICAgICBf
cGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCksIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG5pbCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApp
bmRleCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3
YjUxZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBA
IHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1Nl
bGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNv
bnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9s
ZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAg
ICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1
c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9z
ZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1
OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0x
MjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdh
dGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAg
IFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpp
bmRleCA4MDJmZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi5iZTE0MzcwZGUw
OWJkNTcwMmI5YzdkZGNkNmM3N2I4ZjZkYTVmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzAyLDEyICsz
MDIsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJh
dGlvbnMoKQogICAgICAgICBpZiAobm9FcnIgIT0gQXVkaW9Db21wb25lbnRGZXRjaFNlcnZlclJl
Z2lzdHJhdGlvbnMoJnJlZ2lzdHJhdGlvbnMpIHx8ICFyZWdpc3RyYXRpb25zKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMg
PSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9u
cyldICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJh
dGlvbnMpXSAoKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3
ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50
UmVnaXN0cmF0aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEgfSksIDApOworICAgICAgICAgICAgYXV0
byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBX
VEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNk
OWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2Fl
YWFmNGY0NGUwNTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBs
Ojp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5T
QXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpX
ZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBm
b3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6
aV0pOworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVj
dEF0SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBi
dWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0
SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdl
LCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVu
c2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJj
aGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZToo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3Ry
aW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlz
ZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0Rh
dGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bh
c3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZv
clR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJW
aWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAq
ZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9t
aXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEu
Z2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2Vk
VVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpA
QCAtNDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNj
ZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVE
T01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6
OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5n
ZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3Jp
Z2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFz
dGVib2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9u
KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2
MjY3MTY5ZDY5MmE4MjQwOTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYz
NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJy
YXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5
LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3Jz
VUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNE
dXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOWE4MTZmZGIzMTgzYTE5YjY3OWU4Nzcw
M2EwZjQ0MGU1YWI5MDkwMy4uNzIzY2ZlNWI3Mjc2MTVmNmVkMThiNWYyNWQxZTgwZGI3MzMxZjk2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExODEsNyArMTE4
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2
b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZi
ZDEuLmVkOGNiNjUzZWNmZGQxMzQ3M2VlMWQyYWY1MGJhYTdhNmY3YTEwMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xODcsMTAgKzE4Nyw3
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAg
ICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBt
X3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5v
bmU7CiAgICAgfQogCkBAIC0yMTUsMTQgKzIxMiwxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBl
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcjsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAoaXNT
eW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5
bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNE
YXRhLT5zaXplKCkgfTsKIAorICAgIGlmIChpc1N5bmMoKSkgeworICAgICAgICBzaXplX3Qgc2l6
ZSA9IG1fc3luY0RhdGEuc2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsg
bV9zeW5jRGF0YS50YWtlQXNDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBt
X3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0
YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3Vy
bFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciks
IG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5kZDZiNzI0
MTBhZGQ0ZWY2MzFkMjgwNjllMTRhM2YyYTAwYzVjY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNzIEZyYW1lSW5m
bzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTExNSw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9u
SGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fc3luY0RhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX3N5bmNEYXRh
OwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJh
Y2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2Yzhl
MmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3
ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9y
bWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5m
b3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0
Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZl
SW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBp
bWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQ
aG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCA3NWNiNzUxMmNjYTY3NDc0YTU1NDI0YWQzYTI4Y2Y2YzdlZTBhY2Q1Li40Yzg2Mjcz
YzNmYWNhYTBhNjQyZTlmNzVjNGQ2YmRmNDFhNTNhMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4
NDIsNyArMzg0Miw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClh
Y3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9t
UGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2Vz
XTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEp
IHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigp
ID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwog
ICAgICAgICB9CkBAIC02NjI1LDcgKzY2MjUsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJk
SXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAg
ICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikK
ICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU5Niw3ICs3NTk2LDcgQEAgLSAodm9pZClh
Y3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBz
aGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNo
YXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwg
IkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0
aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5h
bWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlv
bihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJl
Y3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXdd
IH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYw
NmU4OTliY2I2NGVkYmM2Yy4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlYWY3ZTA3OWFl
NDFmN2FkZTNmYzhjYWY1ZDg4MWYyY2ExYmEyMzc0Li4xYjNmZTg2ODlmMTc5NTc1MDY2NzMwNDFi
MWU2ZDFiNzM2NmQxMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5Ojpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4
ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDlj
MWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBh
Z2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2Vi
UGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVS
YW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjgu
LmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0
aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRp
bmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQo
KSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIg
d2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShy
YW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClf
c2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRl
PillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xs
ZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihX
ZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNT
dHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRU
eXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5k
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFl
YWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVs
bHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAg
ICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAg
Zm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkg
ewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5i
eXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMx
NTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1l
KSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3Ry
aW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVi
b2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
KSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQg
ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3
b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4
ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5hMzRlMjEyZDA3YWYyZmY1
NzNlMWE4YTM0MGVjMWQzZmNlYjQyYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwg
Y29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0
aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7
CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5k
ZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExv
YWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25z
dCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVy
KSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRh
dGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZm
ZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNo
YXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7Cisg
ICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVm
ZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxs
TG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEu
Z2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgp
KSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0
YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwv
bWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcg
QEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJD
b3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcAppbmRleCA5NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5YTk4OTU1ZmQ0
NDMwLi45OGE2ZTJlN2I1N2U1MjMxOGY0MmM4Y2QxN2U0ZjBkZTA1MDk0MDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBp
ZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVk
QnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMi
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4Yjdm
Zi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHBy
b2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNw
b25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVy
Y2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVy
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAg
IGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29k
ZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggZGM1NmQyYzY2ZWQ4NmI5NjI5NTBhMzQ4MjA4M2UzNDU4YjMyYjUy
Yy4uMDhjZmJiNTUwZWRjYjU2YzU5OTdhMDQzNmMyOTY1M2VmMGU4MDNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQwMywxMCAr
NDAzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkg
ewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0
ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRh
KQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLQotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsK
KyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDM3LDcgKzQzNCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6
bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFt
X2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0
cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9y
OwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVh
bFN0cmVhbURhdGEucmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDgg
KzkyNiw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAg
IGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51
YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6
OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAg
ICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
KQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS5nZXQoKTsKIAogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQzLDkgKzEyNDAsOSBAQCB2b2lkIFBsdWdp
blZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRh
LgogICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICAgICAgYXV0byBidWZmZXIgPSBt
X21hbnVhbFN0cmVhbURhdGEudGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1l
bnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEo
ZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51
YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1
OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uNzMyNzQxZDk1ZWU2YTJiNjU2ZjNkOGMwOGM4
YWZmYmE3ZTJmYWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luVmll
d0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hv
dCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMg
ZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50
UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAK
aW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZk
NWYyMDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jl
c3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRh
ID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJC
dWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0
Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBp
ZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZN
b3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBi
dWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAg
IGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlz
XShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4
YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0
Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9w
dGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5n
Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8
V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1f
cmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmlu
aXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMz
ZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYw
NTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUs
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQog
Ci12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJv
YXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRl
ZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1
MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jikg
ZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7
CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVu
ZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9T
dGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNj
ZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3
MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9h
ZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6
IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAw
KTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7
CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZp
bmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2Uo
KS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2
Mjc0MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGEx
OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIs
MTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlm
aWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2Fy
ZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlk
ZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0
ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92
ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZl
cikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUg
VUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVm
ZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7
CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4g
aW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3Rl
Ym9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5
KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5
OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgwOGUxZDZlYjJhZTMy
YjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAg
LTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0
TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcg
Kzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxT
dHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsK
ICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04
OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAK
aW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uMjNkMDExNGIw
ZTk0MGVlMTM0M2UyNDc5NmYzZmM5N2FhZTMyZTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViUGFn
ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KQEAgLTQ1LDcgKzQ0LDYgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6
V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIK
ICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAg
LCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkgfQogewogfQogCkBAIC02OSwxMyArNjcsMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3
ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1
ZmZlci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQo
KTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUz
ODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uOWU2ZjUwZjFiMzI1YTEzMzNmMmM5NGMxNzQ3NGMwYTdm
NTM0ZTVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5
LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1
Niw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3Qg
U3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2
NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFh
MmIxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcg
QEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
ID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBh
dXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1h
Z2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVm
ZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyAr
MTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRh
dGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRh
dGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICgh
YXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBj
YjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNh
YzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2Uo
KSBjb25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1
bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0
YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGlu
ZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNp
emUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDYwZjg0YTQ1YzM4MDM1ZjJkY2U5MjVjYmVlMmMzMTk5MmU2NDAzMmYuLjNjYjUwNjI0YmYw
ZDdhODExMDJmN2M4NTQ0YjM0MWRiOTY2MjdiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25l
KCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIGF1dG8gYnVmZmVyID0gZnJhbWUuZWRpdG9y
KCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRv
IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
CmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5
MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBA
IC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBh
dXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkg
OiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNh
NzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNm
Y2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
IGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIu
Ljc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8v
IE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAg
ICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFl
NTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBV
UkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4g
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
aW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZi
ZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAg
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDks
NyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFk
ZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAg
LSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5S
ZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0
aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0
YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlm
ZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wp
Y2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAg
IGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAg
ICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJj
ZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpw
YXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJd
LT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUy
NjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBA
IC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNo
YXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1
dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAg
ICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRh
OltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXpl
KCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwog
ICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3Vy
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmlu
ZGV4IGIwOGMxZDIxY2Y5ZjA0ZTYxMWI1OTVlZGUzY2I2NWExN2M0OTk3OWUuLmQzYjUxNmM0MWE5
MGU3ZmE1N2RhZDk4OTFkNDlhMzM5MTQ4YTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29k
ZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmls
OworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwog
ICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1l
TmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwog
ICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwo
KTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4
dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUg
PSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJl
c3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmpl
Y3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2Rl
ciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29k
ZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsK
ICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJj
ZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRh
dGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0
YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmlu
Z1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gUEFMOjpXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsK
ICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVy
biBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEg
PyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUo
KSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
bnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2Ix
ZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQy
M2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0
cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFt
Ojp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0
cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVh
bT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShi
dWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0
cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJh
N2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5
YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1Ymxp
YyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091
dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90
IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUx
YTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3
IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBz
dHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3Ry
ZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2My
ZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNm
MjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+
JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5
ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUx
MjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25D
aGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQw
NzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVm
NDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRh
dGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIp
CiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8o
c3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFt
KTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0
cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgy
MzE5YjUuLjZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZy
YW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWlt
ZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3Ry
ZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1l
LCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAg
IFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRG
TEFHX05PTkFNRSkpKSB7CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjps
b2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8g
QlNUUgogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdv
dWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAg
ICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBp
ZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVM
T05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1
ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFC
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVU
eXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJl
ZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIp
OwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZm
Y2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldl
YlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7
CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0
cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3Zl
KGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2
ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVl
NGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5o
CkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElX
ZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE4ZTg3MWIwYWYxYTM0YjA1NzIwMDFiM2NhMzc5ZDYw
YjkxMDVlMjkuLjNmMmRhZGNhYzMxNWM1MTk1Mzg4MWE2MTg1ZmJlNjYyYzM1ZDczODIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3Vv
dXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1t
dXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNv
cmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4
MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLmFkZDI0OGIwZGUyZDJmMTFjNWExZjUyY2E3
ZThlZmE5NDkyNzRjMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1
MiArNDMsNDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90
X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmlu
ZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZp
bGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0
eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVm
ZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0g
YnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7Ci19Ci0KLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwot
ICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZl
ci0+ZGF0YSgpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZm
ZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkp
OwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwot
ICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCks
IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgn
YScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTYsMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0g
IkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3RE
YXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwg
c3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVu
KHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25j
YXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4o
ZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5k
YXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNiwx
MCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNl
Z21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChX
VEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
YnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0
MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kp
IHsKQEAgLTE1MSwxNyArMTQ2LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQog
ICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNh
Z2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIK
ICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlk
aWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0
YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVy
MS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAv
LyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9
IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFy
ZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFy
ZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUo
KSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXIt
PmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVY
UEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0
LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7
CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkp
OworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5n
dGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisg
ICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQor
CitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRh
MFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRh
MCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5
ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkp
OyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5n
ZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAg
IGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5p
c0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAg
YnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNo
ZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29u
c3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xNzUsNjAgKzIwNiw3MCBAQCBzdGF0aWMgdm9pZCBjaGVj
a0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0
IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBW
ZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMg
PSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMz
KSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rv
cjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRv
IGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAg
ICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTAp
OwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlq
a2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
ICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihh
YmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0
YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5z
aXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsK
ICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAg
Y2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVy
KGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVj
a0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihn
aGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdo
MS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5z
aXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBs
LnNpemUoKSwgImwiKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykK
IHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBj
b250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRv
JiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7
CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywg
J2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycs
ICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsK
IAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdk
J30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3sn
YSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7Cisg
ICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
LCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUSht
YWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtl
QnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAn
YScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAn
YScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsw
eDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRv
SGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZl
ci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50
YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBA
IC0yNDksMTYgKzI5MCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxl
bihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBp
KyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAg
ICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUo
KSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNU
X0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAy
KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzEz
LDE1ICszNTUsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVk
ZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7
CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAx
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNTgsMTYgKzQwMiwxNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkr
KykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNp
emUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11
bHRpU2VnbWVudCkKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVy
LnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0
KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7
Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkp
OwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1w
bGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9y
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRl
YjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNF
cXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
LSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
ICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWws
IGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5T
RGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVd
OwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBo
ZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3Ro
KTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVy
LmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndv
cmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVy
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBd
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChA
WyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEg
KmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9E
YXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0Rh
dGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZm
ZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0Fy
cmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBO
U1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVu
Z3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9y
IChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNl
Z21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRD
b3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50
Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdt
ZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikg
ewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRh
KHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsK
KyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29t
ZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0
YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQr
K11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAg
ICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENv
dW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBl
Y3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdl
dFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5
dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpO
U0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRl
LnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446533</attachid>
            <date>2021-12-09 06:04:08 -0800</date>
            <delta_ts>2021-12-09 06:43:39 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-233442-20211210010406.patch</filename>
            <type>text/plain</type>
            <size>135805</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiYWZmMWUyYmEwODQ5
MDdmYjcyNmUzOTkwYzk4N2E0MTFmYzJlMC4uMGNiYmY3OTI3NDUyNzFhOWI1NzhhOTc0OTliYzFk
MmNiYzgwYjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBBIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBs
YWNlbWVudCB0byBSZWZQdHI8U2hhcmVkQnVmZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbnVsbCBhbmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxv
d2luZyBhIGNhbGwgdG8gcmVzZXQoKSwgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAg
ICAgICAgd2lsbCByZXR1cm4gdHJ1ZSBhcyBvcHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBj
cmVhdGUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6
ZSBvZiAwLgorICAgICAgICBBIG51bGwgU2hhcmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhh
dCBhcHBlbmQgd2FzIG5ldmVyIGNhbGxlZCBvbiBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVt
cHR5IFNoYXJlZEJ1ZmZlcikuCisgICAgICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sg
aWYgdGhlIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGlu
ZyBjb3B5KCkgb3IgdGFrZSgpIGFzIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0
ZWQgaWYKKyAgICAgICAgbm9uZSBleGlzdHMuCisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lv
bnMgd2VyZSBtYWRlIGR1ZSB0byBob3cgU2hhcmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAor
ICAgICAgICBhbmQgdG8gbWluaW1pc2UgdGhlIGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3
b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxk
IGFsd2F5cyBjcmVhdGUgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAg
ICAgIGl0cyBzaXplLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGlu
Y3Rpb24gYmV0d2VlbiBudWxsIGFuZCBwdHkgd291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4K
KworICAgICAgICBXaGlsZSB0aGUgYWltIHdhcyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1
ZmZlciBvbmNlIGJ1aWx0IHdhcyBpbW11dGFibGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3Qg
ZW50aXJlbHkgYWNoaWV2ZWQgYXMgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBS
ZWZQdHIKKyAgICAgICAgdG8gYSBTaGFyZWRCdWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0
byBpdCB0aHJvdWdoIGl0cyBTaGFyZWRCdWZmZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxs
IGltbXV0YWJpbGl0eSBjb3VsZCBiZSBmdWxseSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSBy
ZXR1cm4gYQorICAgICAgICBzaGFsbG93IGNvcHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFw
IG9wZXJhdGlvbi4KKworICAgICAgICBGbHktQnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZp
YSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0
byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291
cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
YXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJj
ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVy
QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OGNkMzQzYjVkNGQzYzg2MzhhMGFl
NTVhYzk1ZTg2YjAyZTVhNjFmLi5hNjFjNDYwZGQ3YTRmYjcyMjVlMjM4ODJmMWFiMWM5MTE5ZGQ0
MGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6Oldl
YlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNl
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVh
bFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWls
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCmluZGV4IDU5Y2Q0ODdhYWRjMTgwYTAwOGQ2YWQ3YzcxNTI1YTgzN2Vl
MmE5NGQuLjNkMGY3ZmI3ZjdiMTY1M2E3YmNjOTFkNWY0NWRmZjBiYWExNWJjM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJGcmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3
NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uNDJmZThmZGZkNDlkMWU2MGE4ZGNmMTFjMTJm
MmZiMDNlMzQ2ODkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFk
ZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxw
dHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAo
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVj
b3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVm
IHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVz
dEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCBy
ZXNwb25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRh
c2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRh
LnRha2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyArMzc1
LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVz
cG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5
UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25z
ZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlS
ZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJl
c3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
c3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0z
ODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVm
PEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25z
ZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25z
ZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAzN2I4Mzg2YTc4YWU4NzVk
YzI1NjNlYmNiMmE3ODg4NWQzMGJhYzQ0Li5kZDc3ZTNiZWIzMzQyMDlkZGI2ZTk2NDQ2YzY4OWIz
ODZhNDQyZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlD
b25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNl
KCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsK
QEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYg
KHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJl
YWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwg
Y29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBS
ZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwg
Y29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5W
YWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZUFzQ29udGlndW91
cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9t
aXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpz
dHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMjYgKzMyNiwyNSBAQCB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkK
ICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBz
aXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAg
ICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAg
bV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9i
dWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOwogfQogCi1SZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgcmV0dXJu
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7Cit9CiAKLSAgICBhdXRvIGFycmF5QnVm
ZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBu
dWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKK1JlZlB0cjxKU0M6OkFycmF5QnVmZmVy
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIHJldHVybiBt
X2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1
MSw5ICszNTIsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpu
b3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZm
ZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZN
b3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAK
IFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzYxLDgg
QEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1
dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4Miw4IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewog
ICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAg
ICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQor
ICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpKTsK
IH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRp
b24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQy
ZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZkOGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4
ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVy
OyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7
IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXRE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFr
ZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIo
KTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0
cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJv
bWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJl
ZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCA3NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNi
ODQyMGE2NmZhLi4yN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsK
IAotICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRh
Q29tcGxldGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5
LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNl
LnZhbHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsx
ODAsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0
LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNl
LmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxl
QW5kVXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBO
ZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9k
ZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91
cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRha2VBc0NvbnRpZ3VvdXMoKS5nZXQoKSwgcmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291
cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNk
YWEzZTE0ODc3YTBhZTQ2NWI2MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAy
N2IwNjMyYmQxZTZlODU4MDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAg
cHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1v
ZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNl
OwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggZDcwYmE5ZWZmMWM5
MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0Yy4uYjk5NzZhZjJlNGRkNDA5YTg5YzNhNDI0NDEz
OWEzZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBA
IC02Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhh
c0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3Vs
dCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRy
OworICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFC
dWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwz
NiArODAsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAg
IHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFC
dWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZl
ci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAg
IG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWdu
ZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVu
dCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5n
dGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZl
ci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNp
emUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0g
ZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAg
ICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVl
OwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAg
ICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVu
dC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZi
MTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4wNGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEz
ODkxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSBy
ZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0K
ICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVz
cG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJl
ZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25z
dDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAt
MTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFt
ZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFs
PENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291
cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmYyZTgyYzJiMTdmM2M5NGRlYmYwYTZhNDE4ZjQ0MzNl
NGFhYmQ2YS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsg
fTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS5y
ZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAK
QEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5n
UG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVz
ZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDE5ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCi0gICAgICAgIG1f
cmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAKKyAgICBpZiAoZGF0
YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNv
dXJjZURhdGEucmVzZXQoKTsKKwogICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5hcHBlbmQoKmJ1ZmZlcik7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVm
ZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisK
K2NvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VE
YXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEuZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxv
YWRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRm
ZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjM3ZDY2N2Q4Mzc2ZDAwZGE3
ODk0NjJkY2NlMWFkYjMzNjg4OWZkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBT
aGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRh
LmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMjgsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRi
NTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcw
ZjIzMjA0OWUwY2EyYWQ0ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
UmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZl
ciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZm
ZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0p
OyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBt
X2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEu
ZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEt
PmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5j
b3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJs
LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
QEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0
N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3
ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2Fj
MGZlNzkuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVk
CiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJf
cyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1w
dHkoKSkKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAg
CiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdy
aXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0
aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50
CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAg
ICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwog
CiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2Mu
Ljk5M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQg
b2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9u
bHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcg
PSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmlu
Zy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNl
cykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBA
QCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2Uq
IHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zl
ci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIs
IHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJp
bmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEt
PmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAg
ICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNv
bnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAg
ICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29u
dGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29k
ZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5z
aXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAg
ICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5z
aXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBi
YXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMg
PSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1M
IHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAg
ICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5j
b2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAg
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVu
Z3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAg
ICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgs
IGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAy
KTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAg
ICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0
YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAg
IHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNzMzNmIzN2RlM2Jk
ZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZi4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4YTcy
NDE1MjMwZDEwOWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBl
bmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50Owog
ICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5
KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFk
ZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAg
LTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFy
c2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9H
X0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChX
VEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAg
ICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRD
aGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMg
YXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4u
KSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRh
KCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4
KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNv
bnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1
dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVk
UHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAg
ICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkBAIC0xOTMsMTAgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LnRha2VBc0NvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVu
dFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0g
ICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJh
c2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90
ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1
b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3Vz
Q29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpT
ZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBl
bmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAg
ZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQt
PnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApp
bmRleCA4NGFhNzJkZjE5NjAzYTE5ZmFjOGYyZDBkNzQyOWNmYjhkNTdlNzczLi45N2NkNGRmZmQx
ODhjMjgxMTFmZDY5YWMwZGJhMzM4YTY3MzMzNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEw
NzljNTY0ZWVmZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0
NjY1Yzc1OTE2ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9j
ZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3Vt
ZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291
cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNjZkM2VhYzViNWRjYzYwMWQ4
ZTAxNjcyNzI3NjdlNTNmYTJmOGM1MC4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2Ey
NDQzMDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAg
ICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7
CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1
M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1
NjE2MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCBmNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjLi5mOWFkNzcxM2M2
MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmlu
ZGV4IDBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQuLjE1NGRiOGNiYWJm
M2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCA3MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllLi43YzAxYzhjYzIz
MTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBD
YWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDcgKzUyMyw3IEBA
IGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGlt
ZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hl
ZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRh
KTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5
ZjQyMmE0OGFiODczYjEyODM0MmY1Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZh
NDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAt
NjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQog
ICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2Ug
JiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAg
LTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBA
IC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYy4uODQy
YmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRh
KHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVw
ZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRo
ZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAg
ICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBp
ZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBk
ODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYy
NmVjNGNiYWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBT
dGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVk
aXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkZmJhNzYxY2IwNTg2NGY1NDI0
NTIzYmEzN2NkNTVjNjAwNWRlZWMwLi41NTY5NjQzY2Q1ZTY4OTdhM2M1OGZiNDYyMzQ1NDZmMDZk
YTBhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDYsNyAr
MzQ2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4
NWMxMWQ0YzE3Mjk2ZmZlNzU3Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkw
ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApA
QCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rl
ciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3Io
Q2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBkZTU3
ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllLi5iMGY3NmE1MDk2MTBmNjcxMDU3
YmVlYmYwYTBiOWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hl
ZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5j
b2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChk
YXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJl
Y2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5k
ZXggZThjMTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRm
NzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29k
ZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCmluZGV4IGI4YjMwYjdlMDgyY2NjMThlYzUzYjE2MGE3OGQ2ZjlhMjgw
MWYyYzguLjFkZjVjNGIxN2VlZWJjYjRlNGJiZmU0YWY4ODkxYWRlY2I2YWI5NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3
IEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2Ny
aXB0SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJj
ZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCBhYjE3MTE0NDQ3N2Q2NDVl
NDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkx
M2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRU
cmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewog
fQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5t
YWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CkBAIC01
MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hl
ZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIy
Yzc3MTM4YjkxNTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBA
IC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVw
bGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMC4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdj
YzllYTM5ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5
bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5n
KCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRh
dGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4
NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNh
MjU4OTEwYjllZmFmNDEyNTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9z
aGVldDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1
NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5mZjQwYzQxNmNjNjE2ZTkyYjEz
MDdiYWJiN2UzNDNiMzdlNTQ2MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiUHJl
dmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgpAQCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVy
IGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3
ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252
ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJj
ZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXgg
ZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uYzBkY2Y4MzE0ZDVhN2Zi
NDJjYzJhYzk4ZTlkNzBhOWQ2Y2ZmZmQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjksNyArNjksNyBAQCBib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJl
dmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUo
KSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmFwcGVuZChidWZmZXIpOworICAgIG1fb3JpZ2luYWxE
YXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2Uo
KTsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmll
d0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgICAg
IHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSk7Ci0gICAgbV9v
cmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEuZW1wdHkoKTsKICAgICBy
ZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZN
b3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3
UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
IGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIobV9vcmlnaW5hbERhdGEuZ2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3
TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUs
NyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVs
dDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2Nv
bnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAg
ICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3Rmls
ZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERh
dGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9
CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUo
KS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJl
dmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5j
cHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uOWViNGJk
ZGYwN2NmNjE2NmE1ODYwYmFjMDc0NjI2ZDI5NWFjYjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1
ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02NSw3ICs2NCw3IEBA
IGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNv
bnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEo
KSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAq
bV9wcmV2aWV3RGF0YS5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVN
YWluUmVzb3VyY2UoKQpAQCAtMjIxLDggKzIyMCw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIEFTU0VS
VChtX3N0YXRlID49IFN0YXRlOjpDb252ZXJ0aW5nKTsKICAgICBjbGllbnQucHJldmlld0NvbnZl
cnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKLSAgICBpZiAoIW1fcHJldmlld0RhdGEt
PmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdD
b252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAg
aWYgKCFtX3ByZXZpZXdEYXRhLmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKKyAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmll
d0RhdGEuZ2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwg
IWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQsNyArMjMzLDcgQEAg
dm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xp
ZW50JiBjbGllbnQpCiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZpbmlz
aGVkQ29udmVydGluZyk7Ci0gICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkpOwor
ICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3ByZXZp
ZXdFcnJvci5pc051bGwoKSk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hD
b252ZXJ0aW5nKCp0aGlzKTsKIH0KQEAgLTI1Niw3ICsyNTUsNyBAQCB2b2lkIFByZXZpZXdDb252
ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2aWV3
RGF0YS0+YXBwZW5kKGRhdGEpOworICAgIG1fcHJldmlld0RhdGEuYXBwZW5kKGRhdGEpOwogCiAg
ICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgewogICAgICAgICBjbGllbnQucHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNl
MTQwZDE5MGJhNjRjZjhjZTJiLi5mMTRkZTFkOTE0YTRjYmNhMTVhNzVkNmQ1ZTVlMGRjYjRjNGE5
Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CkBAIC00MSw4ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owogc3RydWN0IFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyAr
MTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3Rh
dGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCmluZGV4IGVhYzg0MTgzY2EzZDlhNDY0ODc4YzZjNDhmY2UwMjIwYWRkNDc5YWUuLjE2
NzIwOGNlOGRhYjcxNWRiNDVlYThkYTA5YTRiZDNhZDU0ZTY3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTM4LDYgKzUzOCwzNiBAQCBzaXplX3QgRGF0
YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1f
aW1tdXRhYmxlRGF0YSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkoKQor
eworICAgIHJlc2V0KCk7CisgICAgZW5zdXJlQnVmZmVyKCk7Cit9CisKK1JlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQoreworICAgIGVuc3VyZUJ1ZmZlcigpOwor
ICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCit7
CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKK30KKworUmVmUHRyPEFycmF5
QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAg
aWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVs
bHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKK30K
Kwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIoKQoreworICAgIGlmICgh
bV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30K
KwogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2Vn
bWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAg
ICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA3ZDg3ZDM5N2EzMmRhMTFjYTA2MjJj
MDQ1OTcwNmU5OTg5N2I4M2MyLi45ODBkNzVkZWMyNmJiMTlmMTlkYjg3MDJiNzhjNzdkNGZhMWNj
ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE3
MywxOSArMTczLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFzaXplKCk7IH0KICAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGlndW91czsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0
aCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7
Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNE
YXRhICopOwotI2VuZGlmCi0jaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKENGRGF0YVJlZik7Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIo
KTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwpAQCAtMjQxLDYg
KzIyOCwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAogcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0Yp
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgorCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOworCiAgICAgLy8gQ29tYmluZXMgYWxsIHRo
ZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNs
ZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2Vn
bWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKQEAgLTI2NywxMSArMjY4
LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91
IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4K
LSAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIGFwcGVuZChBcmdzJiYu
Li4pID0gZGVsZXRlOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CkBAIC0yOTgsNiArMjk0LDU3IEBAIHByaXZh
dGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiB9Owog
CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgeworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVm
ZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBv
bmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXIt
PmlzQ29udGlndW91cygpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZl
cik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hh
cmVkQnVmZmVyPiB7IFdURk1vdmUoYnVmZmVyKSB9KQorICAgIHsKKyAgICB9CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4g
YXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJl
QnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9i
dWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVz
ZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW1w
dHkoKTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRha2VBc0NvbnRpZ3VvdXMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7
CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWlu
dDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4
IDY4YjA4OTRjYzg1NmVmNTIyNzAzNDM3MDI5YjI2YzViM2RkNTkyNTQuLjQ3YzEwZjk4MDIzNGM5
YWJjNjA4NGVjMjEwNDU2ZjZiMTU0ODE5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKKyAg
ICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRhdGEpOwogfQogCkBAIC02OCw3
ICs2OSw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNv
bnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAg
bV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAppbmRleCAzODI5OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiLi4yYWRk
ZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJ
ZHNNYXAuZmlyc3Q7CkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQK
IAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAg
ICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAg
ICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gY29udGlndW91c0luaXREYXRh
ID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRvKiBkYXRhID0gY29udGlndW91
c0luaXREYXRhLT5kYXRhKCk7CkBAIC0yMjYsMTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJy
YXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4
KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgo
KSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEo
KSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlk
cyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJ
ZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEu
CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7Cisg
ICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3Jl
YXRlKCk7CkBAIC0yNTEsOCArMjUxLDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKIAogICAg
IG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0
cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlk
cy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVy
biBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFy
S2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMy
ODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZkYzEy
Mjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWls
ZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAg
dm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9p
ZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAg
ICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRh
aW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4
IDMyYzVhNjY4YTE2YWU0OGVlZThjOWQzOGRiZmYxMzMwNWZkYWMwYjEuLmI2ZTIzN2I1ZGY1ZGRm
NmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9Owog
CiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
KQpAQCAtMjEzLDEwICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwotICAgIG1f
cGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVm
ZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlcj4gewpAQCAtMzg3LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVm
ZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJl
c291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRh
UmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5ZWRkNzkzM2YzN2M0
NTFmMzJjNTAuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1YzFlYzQ0MWFmNzE5NDlkNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTAsMTMgKzUwLDE3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9j
b21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1Is
IG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
LSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+
Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0g
ZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkp
KQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3Rl
bUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBw
YXlsb2FkLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
KCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1
b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKElu
aXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzYsMTAgQEAgcHVibGljOgogICAgICAgICAv
LyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5
c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVu
ZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERh
dGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
cGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBj
b25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAg
IFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtOTAsNyArOTQs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9w
YXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZl
YjZjN2Q0NDQ0Li4xYzg3MWY0ZDU2NDkxYmY3NzVlODUwMGMxNmQwYmI4OTRkNTRlNmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMg
Ym9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21w
cmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19z
YXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtl
ciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0
cnVjdCogaW5mCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25l
ZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtl
ci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NI
ZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0
eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIGJ1ZmZl
ci50YWtlQXNDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5
ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2
YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2sp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9k
YXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWlu
UHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpp
bmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZj
MWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBA
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIo
KQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9p
bnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91
bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgog
ICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9z
ZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYg
KCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
c2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwg
c2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9k
YXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAog
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0
MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZl
cihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVz
cG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCBy
ZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVm
ZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4
X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRD
b21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50
aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNr
RGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAg
IGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMg
fSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRp
bmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBA
IC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRh
c2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNl
R2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiBy
YW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3Qg
RGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7
CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5n
ZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1
Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBo
YXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5n
dGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0
aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIu
c2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVy
bjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0
byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRh
KQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFz
ayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0Rh
dGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5
dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwg
dGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAq
dGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChb
dGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAg
ICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUlu
ZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQor
ICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0
YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRl
SW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nl
c3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRp
bmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJl
dHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8g
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8q
IGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYg
KCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZp
bmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJh
Li41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZm
ZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVy
IFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBT
Y3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJv
bVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0
QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1Np
bmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZl
ci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdt
ZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjph
cHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAg
ICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0
cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
IH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0
QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDlj
MTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdmOGM1MmI0NGVhMjQz
MGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5
KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBp
c29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUo
KTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHko
KTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRT
ZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBV
VEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAv
LyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggZThiYzM5
NzlmOTNmNDNkZDRmZmVkM2JlMDVlNjE3NmRkN2EzN2Q3ZS4uYTNjYWY0YTI2ZjZmMTM5NzIxZGFk
NDNhZTY1M2IwYTE2YmFmYWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkZvbnRT
ZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTc4LDE1ICs3NywxNSBA
QCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAg
aWYgKG1fZGF0YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICAgICAg
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAg
ICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0
YSkgewotICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhKQorICAgICAgICAgICAgY29udGlndW91
c0RhdGEgPSBtX2RhdGEudGFrZUFzQ29udGlndW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNE
YXRhKSB7CisgICAgICAgICAgICBtX2RhdGEuYXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAg
ICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJp
bmcoKSk7CisgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAg
ICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xMjEsMTAgKzEyMCw3IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJv
ck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAg
bV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQotICAgIG1fZGF0YS0+YXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYz
YzcuLmRhYjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgpAQCAtMzYsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIEZv
bnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07
CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2Rh
dGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CmluZGV4IGUwY2RjNzIzNGM1NGExM2RmNzBhNjgwNWMyODFiOTQ4MDU0NWFlMjYuLjliMTEyYjlk
YjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdHJp
bmdBZGFwdG9ycy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC0yMDgsNyArMjA3LDcgQEAgUmVmPEJsb2I+IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJl
Y2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBi
YWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAg
IGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFu
Z2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAg
ICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZSgpLT5leHRyYWN0RGF0YSgp
OwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29u
dGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9u
c2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0Lgog
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3Zl
KGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDkgKzIxNyw3IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZm
ZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVm
ZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwot
ICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlQXNBcnJheUJ1ZmZlcigp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCh1bnNp
Z25lZCB0aW1lb3V0KQpAQCAtNzQxLDcgKzczOCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNs
ZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsK
ICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9
IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxp
ZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDkgKzEwNjIsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMDQ4NDYyNmIyZTVkZmRkYTdjYjE2YzRmNTUy
MmRlZjg0YzRhYzE4Ni4uMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJkODAzNzc1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQ1LDcgKzQ2LDYgQEAgY2xhc3MgQmxvYjsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBU
aHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzNyw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJp
bmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTc3ZDY1NmU2
N2ZjY2E0NjQwNTBiZmQzNGRhZGMyYTM2MjVlMjMwMS4uMGI5ZjQ5ZDM2NGMyNTk1ZTIyM2IzMTE0
ZGVhZmNlZTkyYTQwMGZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzA2LDEwICszMDYsMTAgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7
CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1
ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogCiAg
ICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1l
dGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzM0LDE2ICs3MzQsMTYgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBp
c0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBl
KG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAg
ICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVn
eTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlw
YXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGlu
Zy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkp
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERh
dGEucmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikg
ewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjksMTAgKzg2OSwxMCBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWlu
ZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBj
b25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkg
LyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVy
LT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVC
dWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVm
ZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0
KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAgICAgdW5z
aWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAg
PyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAo
bV9idWZmZXJlZERhdGEpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIu
Z2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAg
ICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0
aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTkwOSwxMSArOTA5LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYK
IAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVz
dCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKS5nZXQoKSwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
ICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJl
ZERhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFs
dWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAg
c2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIo
Km1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9h
ZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU5LDEyICsxMjU5LDEyIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBBU1NFUlQobV9idWZmZXJl
ZERhdGEpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAotICAgIGlmIChtX2J1ZmZlcmVk
RGF0YS0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2Vp
dmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERh
dGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjg5LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NP
cmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0
aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAg
ICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3Rvcmlu
ZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0
Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdU
Rk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAg
ICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUudGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkg
aW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+
Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUg
eworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1f
cmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpLCBbbG9hZGVyID0gUmVmIHsg
KnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJl
ZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li5jNDIzNDY1MWJhOTI4Yjk1ZDhjNmY1N2Jl
MjVjNWYyMTE4OTg5ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlv
bkV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMjI1LDcgKzIy
Niw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNl
OwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBt
X3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNM
b2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0MSw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxO
ZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxp
ZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNh
Y2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5kNDNjMDg5
ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwg
UmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3Bv
bnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxs
cHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29s
IHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0
OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9j
YWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUK
ICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1l
bW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6
ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7
CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQog
CkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENv
bXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9y
ZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5j
b3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRy
eSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAg
ICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAg
ICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVs
dChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZN
b3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQw
N2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVm
NTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAg
cHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7
CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7
CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGY5NGRlOTMzZmQwY2Q0M2U0OGJi
YWVlNzdmMzBhYmI2OGYwZGFiODguLmVkOGNiNjUzZWNmZGQxMzQ3M2VlMWQyYWY1MGJhYTdhNmY3
YTEwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CkBAIC0xODcsMTAgKzE4Nyw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRh
U2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0Rh
dGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgbV9zeW5jRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTUsMTQgKzIxMiwxMSBAQCBhdXRv
IFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5n
Rm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsK
LSAgICAKLSAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAorICAg
IGlmIChpc1N5bmMoKSkgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEuc2l6ZSgp
OworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS50YWtlQXNDb250
aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNE
YXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50
aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5
MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5kZDZiNzI0MTBhZGQ0ZWY2MzFkMjgwNjllMTRh
M2YyYTAwYzVjY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3ICsxMTQsNyBA
QCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRp
bmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
ZGM1NmQyYzY2ZWQ4NmI5NjI5NTBhMzQ4MjA4M2UzNDU4YjMyYjUyYy4uMDhjZmJiNTUwZWRjYjU2
YzU5OTdhMDQzNmMyOTY1M2VmMGU4MDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQwMywxMCArNDAzLDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGlu
dCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQo
bV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNw
b25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9t
YW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQotICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKKyAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNDM3LDcgKzQzNCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsK
ICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hl
ZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVh
bFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEucmVzZXQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNiw4IEBAIHZvaWQgUGx1
Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdp
blZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxp
emVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAg
ICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0
dXJuIG1fbWFudWFsU3RyZWFtRGF0YS5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CkBAIC0xMjQzLDkgKzEyNDAsOSBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1h
bnVhbFN0cmVhbSgpCiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgogICAgIGlmIChtX21hbnVh
bFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFu
dWFsU3RyZWFtRGF0YSkKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEu
dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkp
CiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5k
YXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJm
Y2Q2ODAyM2YyMy4uNzMyNzQxZDk1ZWU2YTJiNjU2ZjNkOGMwOGM4YWZmYmE3ZTJmYWY2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9tYW51YWxTdHJlYW1EYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9t
YW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lk
IHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgog
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4
ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJi
MGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAK
QEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZl
ci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAg
ICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVz
cG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNl
RGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0
YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAg
ICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkK
ICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBm
b3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdj
YWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4
NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+
IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+
LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAg
IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
ciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2
N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjIzZDAxMTRiMGU5NDBlZTEzNDNl
MjQ3OTZmM2ZjOTdhYWUzMmU5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CkBAIC00NSw3ICs0NCw2IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdM
b2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2Zp
bGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQg
eyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KIHsK
IH0KIApAQCAtNjksMTMgKzY3LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
RmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSht
X2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2Uo
KS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7
Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZv
aWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2
YzA3Y2I1M2RhODcuLjllNmY1MGYxYjMyNWExMzMzZjJjOTRjMTc0NzRjMGE3ZjUzNGU1YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw2ICsyOSw4IEBA
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTYsNyBAQCBwcml2
YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0
aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1
YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZv
aWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
QlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9v
cHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNv
ZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVy
OwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3Rh
dCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2Vi
RnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlw
ZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3Mg
Y29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVy
CiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAg
ICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50
PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBl
bmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkp
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERh
dGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwg
bnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMjAzYjExMWI0YTg5Y2EyNGRmZDcyN2NjYWVh
MWU4YWRkNzA3ZjA1Li4zZjJkYWRjYWMzMTVjNTE5NTM4ODFhNjE4NWZiZTY2MmMzNWQ3MzgyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84
NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTEtMjUgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVl
IGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAppbmRleCBiYWFlMjdhOTk4ZmZkNjkxYzEwNmI4ODcxNTU2YmQ0ZjA1
MjJjMjAwLi5hZGQyNDhiMGRlMmQyZjExYzVhMWY1MmNhN2U4ZWZhOTQ5Mjc0YzAwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNzQsMjQgKzc0LDE2IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQot
ewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOwotfQotCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05P
VF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBidWZmZXIt
PmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJs
ZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUo
IW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0g
ICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7
CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNp
emUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
XSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikK
QEAgLTk5LDEwICs5MSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0
RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3Ry
bGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3Ry
bGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3Ry
bGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBz
aGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAg
IGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAg
IEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRp
b24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7
CkBAIC0xMTQsMTAgKzEwNiwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRl
QXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4
NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAK
LSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVj
dG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIg
PSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgw
eDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsr
aSkgewpAQCAtMTU0LDE3ICsxNDYsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkp
CiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4g
U2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMs
IgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCBy
aWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3RE
YXRhKTsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3RE
YXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAg
ICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVy
IG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNo
ZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOwotICAgIGF1dG8gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRf
RVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChj
bG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5n
dGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5z
aXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9F
UShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1w
dHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkp
OworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRl
c3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRl
c3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5p
c051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0
byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFr
ZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIu
cHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEo
Y29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRp
Y2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkp
OworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7
CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0
aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xODIsMTkgKzIxMCwyMSBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAn
ZScsICdmJywgJ2cnLCAnaCcgfTsKICAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2on
LCAnaycsICdsJyB9OwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOwotICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBh
dXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwogICAgIGF1dG8gZ2gxID0gYnVmZmVy
LT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwog
ICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoMTApOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKTsKICAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Cisg
ICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBh
dXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRh
dGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7CiAgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwg
Z2gxLnNpemUoKSwgImdoIik7CkBAIC0yMDMsNiArMjMzLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGdldFNvbWVEYXRhKQogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgp
LCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAi
YWJjZGVmZ2hpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwg
ImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdo
aWprbCIpOwogICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKICAgICBjaGVj
a0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAg
ICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CkBAIC0yMTEsMTYgKzI0Miwx
OCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0
b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVy
OworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAg
IHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIx
LmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0p
LmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIx
KSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywg
J2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCiAgICAg
RVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSku
Z2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7
CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0g
fSkuZ2V0KCkpOwpAQCAtMjMwLDExICsyNjMsMTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGlzRXF1YWxUbykKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0
MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBT
dHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1
bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgp
OworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRv
SGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjU1LDE2ICsyOTAsMTcgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAg
ICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4o
c2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAog
I2lmIEVOQUJMRShNSFRNTCkKQEAgLTMxOSwxNSArMzU1LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiAgICAgdWludDhfdCBkYXRhWzI1
Nl07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkKICAgICAgICAgZGF0YVtp
XSA9IGk7Ci0KICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
KGRhdGEsIDI1Nik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgICAgICBjaGFyIGMgPSBpOwotICAgICAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCgmYywgMSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZjLCAx
KTsKICAgICB9Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICBjaGVjayhidWlsZGVyLnRh
a2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRh
KQpAQCAtMzY0LDE2ICs0MDIsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVz
dCwgcGVla0RhdGEpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VR
KHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCkBAIC00MTIsMTcgKzQ1MSwxOSBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0
aVNlZ21lbnQpCiAgICAgfTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNp
emUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgRVhQRUNUX0VRKGJ1
aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gNSkKLSAgICAg
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOwotICAgIEVYUEVDVF9F
UShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7
CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDg3MjkwMzQ1YjQy
ZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3
ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDE2ICs0OCwxNyBAQCBzdGF0
aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVk
LCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChu
aWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0
YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1
aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVs
bG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKQEAgLTY5
LDMyICs3MCwzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkp
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAg
ICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIg
bGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNE
YXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07
Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwog
CiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRh
IF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCAr
IHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAw
OwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RS
VUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3Rl
ZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEu
Y291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7
CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUo
KSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkg
PiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVy
LmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShb
aW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRh
W3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxE
YXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNv
dW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdl
dFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVp
bGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFV
c2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VR
KDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446540</attachid>
            <date>2021-12-09 06:42:14 -0800</date>
            <delta_ts>2021-12-10 02:24:20 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>501846</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NGYwMjI3NTAxNDcuLjBjYmJmNzkyNzQ1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRh
cjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVyLCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9u
bHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAgICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEg
U2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAgICBB
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBsYWNlbWVudCB0byBSZWZQdHI8U2hhcmVkQnVm
ZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbnVsbCBh
bmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxvd2luZyBhIGNhbGwgdG8gcmVzZXQoKSwgU2hh
cmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAgICAgICAgd2lsbCByZXR1cm4gdHJ1ZSBhcyBv
cHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBjcmVhdGUgdGhlIHVuZGVybHlpbmcKKyAgICAg
ICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6ZSBvZiAwLgorICAgICAgICBBIG51bGwgU2hh
cmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhhdCBhcHBlbmQgd2FzIG5ldmVyIGNhbGxlZCBv
biBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlcikuCisgICAgICAg
IEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
aXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGluZyBjb3B5KCkgb3IgdGFrZSgpIGFzIGFuIGVt
cHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0ZWQgaWYKKyAgICAgICAgbm9uZSBleGlzdHMu
CisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lvbnMgd2VyZSBtYWRlIGR1ZSB0byBob3cgU2hh
cmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAorICAgICAgICBhbmQgdG8gbWluaW1pc2UgdGhl
IGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuCisg
ICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxkIGFsd2F5cyBjcmVhdGUgYW4gZW1wdHkgU2hh
cmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAgICAgIGl0cyBzaXplLgorICAgICAgICBJbiB0
aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBudWxsIGFuZCBwdHkg
d291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4KKworICAgICAgICBXaGlsZSB0aGUgYWltIHdh
cyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1ZmZlciBvbmNlIGJ1aWx0IHdhcyBpbW11dGFi
bGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3QgZW50aXJlbHkgYWNoaWV2ZWQgYXMgaXQgaXMg
c3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBSZWZQdHIKKyAgICAgICAgdG8gYSBTaGFyZWRC
dWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0byBpdCB0aHJvdWdoIGl0cyBTaGFyZWRCdWZm
ZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxsIGltbXV0YWJpbGl0eSBjb3VsZCBiZSBmdWxs
eSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSByZXR1cm4gYQorICAgICAgICBzaGFsbG93IGNv
cHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFwIG9wZXJhdGlvbi4KKworICAgICAgICBGbHkt
QnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50
ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdl
IGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0
U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRG
b250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0
VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdM
b2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6CisgICAgICAgICogd29ya2Vycy9TY3Jp
cHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgor
ICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlz
RW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQ
ZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRCdWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWlu
ZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAgIGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdo
aWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4gdW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZp
b3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBn
dWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBtYWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMg
ZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhhdCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFy
ZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQgYXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgQXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdl
cmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmdsZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNv
bnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFByZXZpb3VzbHks
IGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVlbiBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVk
ZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hlbiB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUg
YWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5nZQorICAgICAgICB0aGUgY29udmVyc2lvbiBp
cyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBhIGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisg
ICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5vLW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVp
bmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAgICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9mIGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJl
ZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAgICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5
IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVyc2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAg
ICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRhbmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0
dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhlIFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2lu
dHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBhbmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBi
dWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAgICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1v
cmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3BlcmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAg
IHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBw
b3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAg
ICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFj
a2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUgY2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBj
b3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMgaXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2gg
bWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1bmxpa2VseS4KKworICAgICAgICBJbiBidWcg
MjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJlIG1hZGUgY29tcGxldGVseSBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdlLgorICAgICAgICBD
b3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4gTmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6
OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21w
dXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMp
OgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJh
dG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9k
eUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
cmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0
YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhh
c0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVs
ZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vy
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpi
aW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1Nl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVU
b1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2
ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omdl
dFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
OgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAg
ICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVu
dCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURv
Y3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNl
cjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgICog
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRl
cjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9h
ZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rp
b24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3Vy
Y2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25p
dG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxl
QmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6
CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNl
cmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6
U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdt
ZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWlu
c01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93
UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICgtW1dl
YkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpd
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNl
SlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2Rpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpT
T05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBE
RkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0
Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWND
b3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJ
bmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJp
YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3Ry
dWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXgg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJsZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRhYmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJz
dGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlz
dDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxp
c3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5n
U3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNj
cmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpzY3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRD
dXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1J
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2Fy
ZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVl
c3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJl
ZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmlj
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNw
b25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAg
ICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRv
Y0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMS0xMi0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZy
b20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIw
Li4yYjE2MGEwNzgwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUK
ICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAgICBh
dXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAg
ICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5n
Ojpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPiht
X2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4o
bV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4
IDQzMDIzNjFlNmZlMi4uNThjZTgwOWFlNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZElt
YWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZv
aWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5
cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdS
ZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6
OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUw
NjM5Li5mNDEwYWFiMTUxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9h
cmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1h
Z2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1
dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5p
bCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHRO
UyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAg
ICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlv
blVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMS4uOGJmZjgwNzA2ZTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29t
cHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRf
dCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURh
dGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAg
ICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVs
bHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCBlNmNjMWFhZTc4M2EuLjQyZmU4ZmRmZDQ5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNh
Y2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBv
c2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVz
dC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29u
c3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxl
ciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9u
c2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBX
VEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJC
dWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDE1ICsyOTksMTUgQEAgdm9pZCBET01D
YWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAg
ZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAg
ICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNw
b25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlv
biwgcmVzcG9uc2UsIGRhdGEudGFrZUFzQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAg
IH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVx
dWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJlc3Bv
bnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigp
XSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNo
CiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1dG8g
YnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBib2R5
ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9u
c2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJv
bWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIERP
TUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNw
b25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1
bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAg
ICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0Fj
dGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVu
ayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRl
cigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdU
Rk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4Myw5ICszODMsOSBA
QCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBk
YXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1
dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEudGFr
ZUFzQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAu
LmMzNWNjM2NiY2VkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
Li40NzUwNGNiZWJkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVk
UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAg
ICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkg
ewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAg
IHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBp
bW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6
Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVu
Z2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNw
b25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVm
KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9u
c2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7
CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBm
Li5jYmY4YjY4YmE4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlv
bkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQg
Ym9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNh
Y2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwg
Ym9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFk
ZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZm
ZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9k
eSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQ
T1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGIuLjJjNjM4ZjdjODQxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hh
cmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXpl
KCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIu
c2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNv
bik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0Fy
cmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5
SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAg
ICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5z
ZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25E
YXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3Bw
CmluZGV4IDczZjc0ZTRmNzBmYy4uMDZhZmZiNWYyZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNw
cApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRC
dWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6
ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCks
IGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhh
cyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0
aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3Rh
dHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
JiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAg
IGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVl
UGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8
QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBjMDQ3MzEyODRmNjcu
LmQ2NWIyN2JmZThhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRj
aEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZv
cm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNv
bHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVk
QnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1l
ci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwg
c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ug
d2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBG
ZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQog
ICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAg
ICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1
cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRh
a2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsy
OTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAg
cmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJv
ZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAg
ICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50
b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
YXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJC
b2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0Jv
ZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5
KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjcuLjA4OTgzZWMwMDQzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5n
IFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxG
b3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGM4
NjVmN2RhMjM5Li5kZDc3ZTNiZWIzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGlj
IHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewot
ICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0
Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xl
YXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYg
Y28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAg
ICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0
eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0
eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0g
cmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVu
dFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRh
LmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlQXNDb250aWd1b3VzKCk7
CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2Up
LCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVh
bSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3Ry
aW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlw
ZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAg
ICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlw
ZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShj
b250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsK
QEAgLTMyNCwyNiArMzI2LDI1IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1
ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9i
dWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6
ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0
YSgpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgbV9idWZmZXIucmVz
ZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKLVJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAg
ICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShu
dWxscHRyLCAwKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVy
LnRha2UoKTsKK30KIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5
QnVmZmVyOworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVy
KCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1Miw3IEBAIFJlZjxCbG9iPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29u
dGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2Nv
bnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIs
IG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICBy
ZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUp
OworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRy
YWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjEsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRG
OChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51
bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7Cisg
ICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4Mywx
MCArMzgyLDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgp
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4m
JiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1f
YnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBp
ZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0Fy
cmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVk
KGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYi4uNmJiYmNlNzM0
N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJl
dHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IFNo
YXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9
CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFr
ZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUg
bV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVm
UHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5
U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4Yi4uYjkzNDM5MmE5MDNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0
MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVu
ayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
IFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9Owog
ICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1
aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7
CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAg
ICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7
CiAgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0
MjBjNmEzOGQzYy4uMzc0OGM4ZjU5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
ZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5n
IFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJv
ZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRl
eCBkZDE5Yzg3MGFhN2QuLjYxMzdjMmNmNmZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0
LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+
ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+
c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAK
aW5kZXggZTJkOWE2MWU0Mjc2Li44M2I5NWQ3Y2YwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApA
QCAtNDYsNyArNDYsOCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVy
ZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRl
Y29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAg
ICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2Rl
ciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4
IDJhMmMxZmMzMjk1OC4uYTFjOTMxMmQ0NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRo
VHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRo
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29u
c3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29k
ZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3Rh
dGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0
YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAg
ICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5
RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmLi5hYWZk
YjM3MDFmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25z
dCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURh
dGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5
RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4Ny4uMjdjZDhlZWM1M2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0
U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIp
OwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1
dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAg
ICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4g
b2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJ
REJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFs
aXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZl
IGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBz
YXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEz
ODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJz
aW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7
CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRo
KCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVj
b3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0
aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBk
YXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hl
Y2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhl
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
X3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJh
c2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAg
ICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5
IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u
Il9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2Jq
ZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0
IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJl
YWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAg
ICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYg
KCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURh
dGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYy
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3Rv
cmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwor
ICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBp
ZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8g
YmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5
OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmlt
dW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dl
ciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlm
IChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwog
ICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0
X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlw
ZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0
byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxv
d2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkg
OiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQg
b3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVy
S2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1
cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVw
cGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2MTkuLjQ4NjEwMzRkM2ExMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVu
dExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJy
ZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRB
cmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpy
ZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50
QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3Bw
CmluZGV4IGZlYjFiOGZmZmI3Yi4uY2M1YTg2NTczMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAog
ICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVz
c2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBt
ZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+
c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQ
ZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTMuLmU3OWViZGJhYzQwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2Ug
OiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJl
ZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJh
d0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRp
ZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ug
c3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWEuLjI3YTZk
NzAzMzRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3Vy
Y2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgp
OwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpA
QCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNv
bnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3Vy
Y2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7
CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpA
QCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAg
IGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVS
ZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1
ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5n
ZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwg
PSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNl
Lm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhh
bmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2Ux
NC4uY2UwMDlkNGU1ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2
YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+
IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAg
ICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVT
RC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2Vu
ZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OS4uMTMwM2VjNGQyNTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQv
U2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdl
YkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwog
ICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAg
IHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBt
b2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwor
ICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxl
LCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291
bnQgPT0gbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDUyNTEwYzMwODE4Zi4uODUxNDdjMDk2MWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBA
IC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9u
U3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklY
TUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChn
bG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsm
XShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUo
Z2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIu
aAppbmRleCBjNDUyYzgzZmJkNWMuLmI5MThmMzE0MWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01
MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFt
X2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5z
T25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNP
bmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0g
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09u
bHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCks
IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2Ny
aXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAg
IHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAg
cmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9j
YWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0g
bV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVy
OworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIg
bV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNo
IHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggYWViNGI2Y2M1MGExLi4zYzVlYTli
ODlhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3
LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1E
YXRhKTsKICAgICAgICAgICAgICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3du
Y2FzdDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkp
OwogICAgICAgICAgICAgICAgIGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250
KGZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAg
ICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlm
IChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1l
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dl
bmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNz
ID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAg
LTE3Niw3ICsxNzYsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAgICAgfSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAg
ICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAg
ICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5i
YXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2lt
bWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1
ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBz
dGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4
MjYxMzMzMjJhOGUuLjZhODJjZjFlM2RjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
U1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRp
b25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1
Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFu
dFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlw
ZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMs
NyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRT
ZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNv
IGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmEu
LmZhMTQ2N2RiOGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0
MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVu
dEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3Rl
Ym9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywg
YWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZl
MGI1ZTA0NGUuLmY1ZmNkY2NiNjY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5
ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBj
bGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5k
Q29tcG9zaXRpb247CkBAIC01MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
cGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAg
Ym9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcg
KzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVu
dEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVt
ZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAg
LTYxOCwxMiArNjE5LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQm
KTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAg
IHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmli
dXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5MDAuLjM5YzNiMWZhM2Q4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0zMywx
MiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICBTdHJpbmcgbWltZVR5cGU7
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1YjdhYTc1MjZiLi5kMGM5MzMx
MDBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpA
QCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRT
ZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmli
dXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3Ry
aW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAq
YXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRT
dHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hp
dmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29k
aW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbklu
SFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbklu
SFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVk
aXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxl
bWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JB
dHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0
byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNs
aWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBv
dXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAg
ICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJh
bmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXBy
ZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hp
dmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3
cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEp
CiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRl
bnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFy
Y2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2Vs
ZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAg
aWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2Ug
dGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0
LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyAr
MjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJs
KQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcg
KnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBs
ZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
bGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAs
IGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3Vt
ZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3Vt
ZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4Li4zYzVlNTQzMjViOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3
Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2Ug
PSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1l
VHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhv
bGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVX
cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdp
dGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
ICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBw
ZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJs
LCBtaW1lVHlwZSldOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91
bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdy
YXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwog
CiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAg
ICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CisgICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5n
ICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAg
ICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAg
ICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNl
LT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTElt
YWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdl
ID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNo
YXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1NGU4MmIuLmFkYTY2ZDJhYzI5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRo
QXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVj
dCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAg
ICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
OworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVm
PEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0zMDksNyArMzA5LDcgQEAg
c3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwg
cmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIo
KSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5
KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9
KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1l
KSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVj
dCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAg
LTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNo
bWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRh
Y2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1
ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0
cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2Ut
PmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5y
ZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6
OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxs
KCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25E
b2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJr
cyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4m
IGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5n
IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGlu
YXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJm
cmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJrdXBBbmRBcmNo
aXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNv
dXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkp
LAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpm
cm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAgICAgICAgICAg
c3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNv
cHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRpemVNYXJrdXBX
aXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250ZW50LCBN
U09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKIApAQCAtNjE3
LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFn
ZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxs
cHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMCw3ICs2MzAsNyBA
QCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgp
KTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NDQsNyAr
NjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJj
ZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMo
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCAyZDE5YjljN2MyMmIuLjVmOGJjMzQ3N2MxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VO
b2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxl
bWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRv
cjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAg
IGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwog
ICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJh
d0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAv
LyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2Qg
cHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMg
b2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVu
dCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0s
IHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5
Li4xMDE2ZGNmM2MxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAg
IGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVT
aXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0
cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50
cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBs
YXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBs
YXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgo
KSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3Rv
cnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJu
IGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAg
IAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUo
KQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigp
OworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0
YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxl
YWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3
b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0
YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9j
dW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxp
c3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYuLmI5OTc2YWYyZTRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0z
Myw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02Myw4ICs2Miw4IEBAIHVuc2lnbmVk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAg
IHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NF
UlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgp
OwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICByZXN1bHQgPSBtX2Rh
dGFCdWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZmZXIucmVzZXQoKTsKICAgICB9CiAK
ICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODAsMzcgQEAgdW5zaWduZWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1
cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsK
K30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5n
dGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNp
emUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7
Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRh
QnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVu
ZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXND
b250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUo
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7Cisg
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29k
ZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2
NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9
IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9
CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5z
aXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTEuLjA0YjM1NTA3
MzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KQEAgLTEwMywxMCArMTA0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVz
cG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAg
ICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3Bv
bnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWRE
YXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAg
Ym9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTEx
OSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7
CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNl
RGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFC
dWZmZXI7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhQnVmZmVyOwogICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxD
ZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0
ZTNkYWYxYWRlNDcuLmU1OGJjYzJhYTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTQwNywx
MiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VD
b250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkg
ewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVh
dGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRl
eHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwot
ICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJh
c2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApp
bmRleCA5YjVjYWQ5NTlhOGUuLmEzYzYwYzNiNjk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEy
ICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQo
RnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291
cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVu
Y29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVu
dChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1l
LT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQog
CiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29u
dGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsK
KyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNv
ZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXpl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5k
ZXggYjRlNmEzYTUzYjRjLi45NzRmMjJhMmRhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRl
bGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlm
IChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAg
ICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVm
ZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5k
YXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYuLmQw
OTYxYWZjN2I3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
JiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVhdGVB
Y2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlPcmln
aW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJlc291
cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5
OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9LCBl
cnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAppbmRleCBjZjZjY2YyYmQwODkuLmZkZmQwZWFhZjNhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA1LDExICsxNjA1LDExIEBAIGJvb2wg
RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJl
c291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7
Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1f
cGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAg
ICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291
cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21t
aXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5z
aXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjQ5LDcgKzE2NDksNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vi
c3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjUzLDcgKzIyNTMs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250
ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1p
dHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1h
aW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCBy
ZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKaW5kZXggZjdmM2YzODQ0ZjE4Li5hMDBlMTRhNzNiMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0
YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4m
Jik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShN
SFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZi4uYzcw
OTY0MTBhN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0
eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5
bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBkNjg4ZDgwYTliZDguLjExZjY3MDJkMWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lk
IHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+Jiwg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2
b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFj
ZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFhLi5lOTFjOGY2MGQzYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwNiw3ICszMTA2LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5
LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdp
bmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRl
bnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRl
ck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRh
dGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVy
cmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1
bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVy
KCkpOwpAQCAtMzE1NCw3ICszMTU0LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAg
ICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9h
ZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0
aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRp
b25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0g
ICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9y
LCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25z
ZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0
aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0
TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGVkZWNlMTJj
ZDdhOS4uOWMzZjc0YzQyZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAt
NTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwog
I2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQs
IGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3Qg
U3lzdGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1l
TG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTguLmI4NDkxYWIzMGU0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsg
fTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS5y
ZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAK
QEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5n
UG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVz
ZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDI0ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRh
dGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVz
b3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNl
RGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1
ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxl
bmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworfQor
Citjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25z
dAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewogICAgIGlmIChtX3Jlc291cmNl
RGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
CiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBz
cGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFu
IGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExv
YWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJh
bWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhp
cywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAg
ICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiLi4zN2Q2NjdkODM3NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTk4
LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7
CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3
ICsyMjgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAg
ICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTEuLjcxOTY4MmM2NDY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0g
dGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZm
ZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmOC4uMzQ0Y2E5ODI4
NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0z
Nyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQor
ICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0
YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJv
dGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzkuLjAzNmVmZDIwZTQ5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRv
IG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwg
bV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNv
dXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsK
KyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAg
IC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1Qi
IHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4K
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBt
YW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFO
SUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NS4uNzIwYTkyNzFjZDMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAot
c3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2JhYmx5IGRv
IG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8vIFJlbW92ZSB0aGUg
Y2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1v
ZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICAgICAgcmV0dXJuIHJl
c291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0K
IAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRSZXNvdXJjZUZyb21B
cHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3OSw3ICsyNzcsNyBAQCBi
b29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0IHRvIGEgcmVzb3Vy
Y2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRpdmUgcG9ydGFsKSwg
b3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAgICAgLy8gb3IgaWYg
dGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNlciBjYW5jZWxlZCB0
aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNoZSwgdGhlIHJlc291
cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7
CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0
LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNl
KCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEg
Y29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxs
IHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZp
ZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAg
ICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcuLmRjODU4ZmRkNmQ1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsK
IGNsYXNzIEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNs
eShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJh
Y2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAg
ICBib29sIGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5j
cHAKaW5kZXggZjFmN2UxNzU2MzAxLi42NzEwOTU3YzNhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7
Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlz
RW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNw
b25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUp
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODkuLjdi
MmZiNmM5YzI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZS4uYzc3MGQ3NjQxMzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1
dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElO
VE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAg
IGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAg
U3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBA
IC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJl
c291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJs
b2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5k
QmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3
MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFl
eGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNv
dXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2Un
cyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2Yg
bWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+
ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3Vy
Y2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMs
NyArMTExMiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0
dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25l
ZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2
NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3Rh
dGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAg
ICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7
CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIy
Li5mNWVjNGRkNjdmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJl
c2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0
IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0
YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBu
dWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgog
ICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiBy
ZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVz
b3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNv
dXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9w
ZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNv
dXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25z
ZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBj
cmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lv
biA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9u
YXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAg
ICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVz
cG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBp
cyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAg
ICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0
YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0K
IApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcg
ZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRh
ID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0
YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYg
ZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxp
c3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJs
ZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0y
NzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZS
ZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQo
KSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBw
cm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBp
bnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6
OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBp
bnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAK
KwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJB
cmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNl
IGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMz
Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52
YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNl
ID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRT
dWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAt
MzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lX
ZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3Vi
ZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZl
LT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNo
aXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBM
ZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAg
ICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1
YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
LCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsK
LSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQg
YSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNw
b25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUp
CiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNo
aXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFu
IGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50
ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBT
dHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndp
ZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUl
XCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgp
LnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIw
MjIuLjk5M2MyYjhlODMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xNjIsOCArMTYyLDggQEAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAg
IC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFzIGFzY2lpKCkgcmVw
bGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBBU0NJSSBjaGFyYWN0
ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpLmlzQWxsQVND
SUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwot
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOworICAgIG1odG1sRGF0
YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAg
ICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1M
QXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiLCBjb250ZW50RW5j
b2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJsLnN0cmluZygpLCAi
XHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEo
KSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lp
U3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0cmVhbSB3aXRob3V0
IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5k
YXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+
c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50
YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVF
bmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChl
bmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChl
bmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAgICAgICAgICBtaHRt
bERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAgICAgICAgICAgLy8g
V2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cgYXMgaXQgd291bGQg
Y3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JMRnMuCkBAIC0xOTYs
MTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgg
PSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAg
c2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAtIGluZGV4LCBt
YXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgICAgIGluZGV4
ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXggPCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2NpaVN0cmluZyA9IG1h
a2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0gICAgbWh0bWxEYXRh
LT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAg
bWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgp
KTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1sRGF0YS50YWtlKCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDMuLjY2NWU2OWNhNzcxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJU
KGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNF
bXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3Vu
ZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRS
ZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2Rp
bmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMg
cmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAg
Y29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRT
ZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAg
ICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgw
LDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNl
TmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGlu
ZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFy
YWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAg
IGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAg
ICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgp
KTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkg
PT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhl
IGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBj
b250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0
cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVu
ZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1J
TUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZUFzQ29udGlndW91cygp
OwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9
IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEp
IHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhU
TUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUs
MTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQo
Y29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVk
UHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAg
ICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgp
LCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
SU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAg
ICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAg
ICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVu
dC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUg
VVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29s
dmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNv
bHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQog
ICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29s
dXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNGYyMjhlOGQwMzg5Li45N2NkNGRmZmQx
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwxNiBAQCBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRh
KSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjQuLjY0YjE0ZDVmNjVmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFs
PHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxLi45ZDJkYzczNjQ4MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgx
LDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChN
SU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVj
b2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJl
Z2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkK
LSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSkKQEAgLTk3LDEzICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAg
IHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9
CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUg
dGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0
IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2Rl
Y29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBr
ZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBt
X2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2Rl
ZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBh
bmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNS4uZDM3ZmFmYWNj
MDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFs
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7
CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJj
MmEzNDFjOC4uZjlhZDc3MTNjNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8
Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQg
Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQo
KSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAg
ICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1LDcgQEAgU3RyaW5nIENhY2hl
ZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiB1cmwo
KS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgQ2FjaGVkRm9u
dDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JPY2N1cnJlZCgpICYm
ICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBpbmc7CkBAIC0xMDMs
OSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5nZXQoKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6
OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwg
Ym9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9OworICAgIFJl
ZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9
CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlmeShjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmcoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkRm9udENs
aWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZvbnRDbGllbnQqIGNs
aWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExvYWRlZCgqdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBjZWJkYzU1N2Yx
M2YuLjE1NGRiOGNiYWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAg
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xp
ZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmLi43YzAxYzhjYzIzMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDkgKzQ2OCw5
IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUlt
YWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50
ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
SW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRh
OworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMs
MTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25z
dAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURh
dGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVy
dmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRS
ZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAg
ICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAh
VVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3Jl
YXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8v
IExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3Rl
bSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFs
KGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNl
Ojp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0
YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZi4u
ZDUxM2UxNmNiYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgo
KTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAg
IHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6
ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkg
Y29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNo
YXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMg
dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2
OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFn
ZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNv
bnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJik7
CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cAppbmRleCA5MmIwODM2OTc1ODguLjg0MmJmNWYyMGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBA
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHBy
ZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0
ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBj
b21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFs
RGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0g
ICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwog
CiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAo
ZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7
CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxE
YXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZy
b20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcg
YSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0
aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBk
YXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9
CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEg
PSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEu
LjU3ZmQ3YWI1YzEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0Nv
ZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxD
bGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENo
YWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5n
PiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNlNDQ2ZmI5MTc0Zi4uNTU2OTY0M2NkNWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
QEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5Rmlu
aXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDYsNyArMzQ2LDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWdu
ZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAg
ICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyOSw4ICs5MjksNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdC
dWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAg
ICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzEuLjIxOGQ3NGYyNzc2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQog
ICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0
dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5z
aWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFj
ZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5
UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291
bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBp
bmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29k
ZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApp
bmRleCA3ZGExNDg1MWE3MDcuLmIwZjc2YTUwOTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAg
U3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEg
bmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQg
VXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQt
PnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
KTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmlj
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oCmluZGV4IGU4YzE1ZjM2MGZjOS4uYjAxMmJhOThlZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTMuLjljZjA0MzcxOTRh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApA
QCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAg
ICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAg
LTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0Zv
bnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9P
VEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0
ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Li5hMTVlYWQw
ZTE2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApA
QCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRp
YWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAg
ICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250
RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBT
ZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKaW5kZXggNTRlNjc2Y2U1MGIwLi4xZGY1YzRiMTdlZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUg
QEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3Jp
cHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3Li43NWJlNGRiNzE1
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1
MDMxMjguLjU0MjY2ZGQ5MDgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6
OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNl
c3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRh
dGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRS
ZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAg
ICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBk
b1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMuLmY0NjMxNzgzMjFlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2
b2lkIGRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Ny4uYjlhNjU4NzUzY2U5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCkBAIC02MSwxMiArNjEsMTYgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29k
aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0K
IAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
c2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQot
ICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCks
IGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWMu
LmMwNGRkNGYxNmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1MmNm
ZWJkNzYxLi5kMDIwYWMzZGM4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJl
ZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9p
ZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNv
dXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTMuLjkzZWU5NjM3
NGYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Ly8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEg
cmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4K
IHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJl
ZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2Fj
aGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9u
aXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNl
KENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRh
ID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZp
bGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNw
b25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25p
dG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9D
RkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVk
UmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12
b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZm
ZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVj
YW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQog
ewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNl
Rm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVz
b3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oCmluZGV4IDU1MjU2MWQ2YzgxNi4uZmY0MGM0MTZjYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgpAQCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdh
Y3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0Nv
bnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxv
YWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUlu
dG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2Li4yM2M5NzI0MmJiOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTY5LDcgKzY5
LDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBMT0coTmV0
d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxk
LiIsIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQoYnVmZmVyKTsK
KyAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBk
YXRlTWFpblJlc291cmNlKCk7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVy
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZl
cnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVz
cG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRh
LmVtcHR5KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZp
ZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBj
b252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWlu
UmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBt
X2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdldCgpKTsKIH0K
IAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcuLmEzNjNiN2Iw
MmNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDog
dWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50
RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggMmNkMTlhMTEwYjJiLi45YzkwMGJlOGY0YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtMTk1NSw3ICsxOTU1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2Vy
U3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0
IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hl
biB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBh
bmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAg
YXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2Vy
U3R5bGVTaGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAxNjVhYTgwNThhMDMuLjAxZTE2ZGQ5OGY0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxp
emVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1
YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3Vt
ZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rp
bmcuZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsK
KyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlw
ZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0
ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNv
dXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAt
MjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFu
ZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0
ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBB
U1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVu
ZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rpbmcu
ZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJf
cywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3Nz
VGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7
CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsy
ODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZElt
YWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1h
Z2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAg
ICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5oCmluZGV4IGZmM2UyZTFmY2IwNi4uYmZjYmU3YjhkYmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
UmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFs
aXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIw
ZGQyYzMwNmIuLjNlZGQ5YzcxYmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3
ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3Ry
aW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3Qg
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRl
ci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkLi5kNjgwNWEzZWU1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIo
KQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNl
bCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwot
ICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsK
LSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0
YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMu
YXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwog
ICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmls
ZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAg
ICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBs
ZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
S2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5k
ZXggNzlhMjM1MzU1ZjFlLi4zZDgwZDdhMWQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyAr
MTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3Ry
aW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwg
VCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFh
MTYuLjExNDU0NjI3ZTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAt
NjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50
RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMs
MTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+
UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
bldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZv
cm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAg
IFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7
CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3Ry
aW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2Fy
ZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZv
cm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7
CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAg
ICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAg
IEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8
U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJp
bmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8
U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0
aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0Yy4uNmRj
ZWNiNmM5ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7
CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAt
ODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVu
Y29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9y
ZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAt
MTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURl
Y29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTMuLmJmYWZjM2VjNjA3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBA
IC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1
c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBv
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aAppbmRleCAxYzA3MjZmZWIzZTAuLmE3ODhmYjczMGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsK
IGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwg
dm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0
cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZp
cnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJl
YWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcuLmI0
NWNlMWY5MzhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
UGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmln
aW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0
cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5n
IGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQy
NS4uYmE2ODFmZTA1NTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJv
YXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0
ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBT
dHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFn
ZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChz
aXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGlu
dCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcuLjllYjRiZGRmMDdjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAog
I2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02NSw3ICs2
NCw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJv
cigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmll
d0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJl
dHVybiAqbV9wcmV2aWV3RGF0YS5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1
cGRhdGVNYWluUmVzb3VyY2UoKQpAQCAtMjIxLDggKzIyMCw4IEBAIHZvaWQgUHJldmlld0NvbnZl
cnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAg
IEFTU0VSVChtX3N0YXRlID49IFN0YXRlOjpDb252ZXJ0aW5nKTsKICAgICBjbGllbnQucHJldmll
d0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKLSAgICBpZiAoIW1fcHJldmll
d0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7
CisgICAgaWYgKCFtX3ByZXZpZXdEYXRhLmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkK
KyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1f
cHJldmlld0RhdGEuZ2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRp
bmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQsNyArMjMz
LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVy
dGVyQ2xpZW50JiBjbGllbnQpCiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkZpbmlzaGVkQ29udmVydGluZyk7Ci0gICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5
KCkpOworICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCht
X3ByZXZpZXdFcnJvci5pc051bGwoKSk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRG
aW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KQEAgLTI1Niw3ICsyNTUsNyBAQCB2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cmV2aWV3RGF0YS0+YXBwZW5kKGRhdGEpOworICAgIG1fcHJldmlld0RhdGEuYXBwZW5kKGRhdGEp
OwogCiAgICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgewogICAgICAgICBjbGll
bnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBkYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWMuLmYx
NGRlMWQ5MTRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3
Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAt
MTE4LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAg
ICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdF
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0
ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyLi5hMWNjNzY5
NWMwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3Qg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
QEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlm
CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmlu
ZGV4IGQ4ZTY4ZTMzNzc4MS4uMTY3MjA4Y2U4ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM3LDMxICszNyw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewot
ICAgIGFwcGVuZChkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRG
aWxlRGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShtYXBwZWRGaWxlRGF0YSkpKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKwor
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYg
dmVjdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHZlY3RvcikpKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK1NoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZp
bGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAg
ICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsK
IH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
K1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKLSAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CisgICAgYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSKQpAQCAtNzMsMjYgKzk1LDEwIEBA
IFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXpl
KCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1h
cHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVz
ZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFw
cGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1
Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRh
KGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAo
bWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkp
OwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzEwOSwxNiBA
QCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAK
LXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25z
dAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFi
bGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAg
Ly8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywg
YmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAg
ICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAo
bV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAg
IGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNl
Z21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50
c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAg
bV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5l
ZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBB
U1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0u
c2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1
ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMjAyLDEwICsxOTQsMTAgQEAgUmVmUHRyPEFycmF5
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9p
ZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5z
aXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3Nl
Z21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYo
KSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0K
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMTkgKzIwNSwxOSBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7Cisg
ICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAg
ICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHtt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
KSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5z
aXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6
ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CkBAIC0yNDMsMTcgKzIz
NSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAg
IGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5i
ZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChj
bG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1
dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzUzLDEyICszNDAsNiBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdAogICAgIH0KIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21l
bnQoKSBjb25zdAotewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBl
bmQoKSAmJiArK2l0ID09IGVuZCgpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hh
cmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CkBAIC0zNzIsNDEgKzM1
MywxMiBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAog
fQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAg
ICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lm
IFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVz
X2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgot
ICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSgpKTsgfSwKLSAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBz
dGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+
KG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KICNpZiAhVVNFKENGKQogdm9pZCBTaGFyZWRCdWZmZXI6
OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1XVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUo
KSB9fTsKLX0KLQogYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVm
ZmVyJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCkBAIC00NTYsNyAr
NDA4LDExOCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
ZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQor
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRh
U2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250
aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAg
QVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVm
ZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsK
KyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVu
dC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVN
b2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5
VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAg
ICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAg
fQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25z
dCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKK30KKworUmVmPERhdGFTZWdtZW50PiBE
YXRhU2VnbWVudDo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAgZGF0YS5z
aHJpbmtUb0ZpdCgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsKK30KKworI2lmIFVTRShDRikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21l
bnQ6OmNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNp
ZiBVU0UoR0xJQikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRy
PEdCeXRlcz4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxE
YXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKK1JlZjxEYXRh
U2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7Cit9
CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICBhdXRv
IHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAor
I2lmIFVTRShDRikKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEp
IC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7
IH0sCisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0
ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisjZW5k
aWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRh
KCk7IH0sCisjZW5kaWYKKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92
aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CisgICAg
KTsKKyAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOworfQor
Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YT4obV9pbW11dGFibGVEYXRhKTsKK30KKworc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29u
c3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUo
KTsgfSwKQEAgLTQ3NSw3ICs1MzgsMzcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRh
YmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK3ZvaWQgU2hhcmVk
QnVmZmVyQnVpbGRlcjo6ZW1wdHkoKQoreworICAgIHJlc2V0KCk7CisgICAgZW5zdXJlQnVmZmVy
KCk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQor
eworICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRl
cjo6dGFrZUFzQ29udGlndW91cygpCit7CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtl
QXNBcnJheUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2UoKS0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1
cmVCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKworU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1
ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25X
aXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVu
dChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRp
b25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+
c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDg5LDI2ICs1ODIsMTYgQEAgU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3JiBvdGhlciwgc2kKIHsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXplOwotfQotCi1jb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Vn
bWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7Ci19Ci0KLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAor
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVm
PERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Nl
Z21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21l
bnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNp
emUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBB
bGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgog
ICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNjE3
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIq
PihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMi4uOTgwZDc1ZGVjMjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0
NiArNjIsMTI1IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owog
Ci1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVu
dCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3Ro
ZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBh
IG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGlu
ZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1h
eVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYp
OwogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkg
Y29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0g
ICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4g
Y3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdT
VFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93
bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAvLyBD
YWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBp
bnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUg
dGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklY
TUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhl
bSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhf
dD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEo
KSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4g
aXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8
dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIg
YW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBB
cnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQg
YnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVu
Z3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJik7CiAKLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsK
KyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rp
b248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHko
KSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBi
eSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVm
ZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRo
ZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVu
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1Ymxp
YzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0Owot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VO
REFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEu
c2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBs
aWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIp
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYg
VVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJl
ZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4
cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURh
dGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0g
ICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAg
RnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZP
VU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0
OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Cisg
ICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERh
dGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRy
PEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAg
RGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdt
ZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
LAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBT
aGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8v
IEZvciBjcmVhdGVDRkRhdGEKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAot
ICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9O
KQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJh
eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAg
ICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
KTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAg
ICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3Mg
U2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJl
YWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFy
IHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEg
aW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCku
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFu
IEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0
aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJz
IGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFzaXplKCk7IH0KKyAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGlndW91czsgfQogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBE
YXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNv
bXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBz
dHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0
aW9uOwpAQCAtMjEwLDU1ICsxODksMTYyIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVu
dFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2Vn
bWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21l
bnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5k
KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2Vn
bWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEp
IHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0
OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNv
bnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1h
a2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7
CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyKCk7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0
YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
Q0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
R0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6
ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29u
c3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFU
SU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgor
I2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwor
I2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3Ig
YW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CiAKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0
b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZl
ci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBj
b25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90
IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVf
dCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRz
OwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMg
YSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50
IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFz
aXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4u
KEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0
YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1h
cHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0
YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1Jl
ZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAg
ICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBXZSBkbyBu
b3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNo
YXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4K
KyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3Vz
KCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9Cisg
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsg
V1RGTW92ZShidWZmZXIpIH0pCisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAg
ICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBh
cHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAg
ICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAg
IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxs
KCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1w
dHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZm
ZXIgPSBudWxscHRyOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbXB0eSgpOworCisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUJ1ZmZlcigpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjYsMjMg
KzM1MiwyNCBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERh
dGEoKQogICAgIHJldHVybiBjb3B5RGF0YSgpOwogfQogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXJEYXRhVmlldyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJs
aWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKLSAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBw
b3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3Rk
OjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBV
U0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50
OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBz
aXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxLi43ZjA0OTYwYzU5NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwog
ICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5z
QXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8u
Z2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3Jr
LmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0
d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3
b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3Jj
Lmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjLi45YjNlY2ExYTE1
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAK
QEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAg
ICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRh
ID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
bV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAs
IDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaAppbmRleCBmNTg2YzAyYmIxNWIuLmZhYjY2ZmNiY2E4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAg
dm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVf
dCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApp
bmRleCA2YjY2MjE3ZmYxNjEuLjQ3YzEwZjk4MDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzUsMjMgKzM1LDIwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEp
CiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGFwcGVuZChkYXRhKTsKIH0KIAog
Ly8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1w
bGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lv
biBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENG
RGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENG
RGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsK
LSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50
KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZE
YXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAg
ICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdl
dCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVy
biBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEo
KSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjksNiBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5h
cHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3Np
emUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwYy4uNmY1MGYwMzVh
ZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJk
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENv
Y29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0
eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlm
ZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZU
b1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSBy
ZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsg
fV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApA
QCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dp
dGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVj
ayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcm
IHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzkuLjk4MDU0N2I4Y2M0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAg
LTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBp
bnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihO
U1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29u
c3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2Vy
KXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0
aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQp
ZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
KWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVn
ZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNv
cmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlv
biBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk1LDI3ICs5NSwyNiBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5T
RGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0
YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAg
IGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7
Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2Vf
Y2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYs
NyArMTI1LDcgQEAgUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
QXJyYXkoKSBjb25zdAogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4g
RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMo
W1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhp
cyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0
OWFhOGUuLjY2NzI2Zjc0ZTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046
OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGMuLjJhZGRlZTdlZThiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXRE
YXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBr
ZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8g
Y29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRv
KiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERh
dGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1
bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xOTYsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXND
ZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNM
b2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291
bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXRECiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5p
dERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtl
eUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
YXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2
LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJr
aWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmpl
Y3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5k
YXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlk
cy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IGtleUlkcy50YWtlKCk7CiB9CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlz
IGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGlu
aXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAg
ICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNB
cnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNv
bnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFu
IGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2
NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElE
IHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXkt
PnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRh
LmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5
SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1
cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xl
YXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDIuLjdhYTk0
YjRiNGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVu
Y29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hF
bmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2Vu
ZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2Vu
Y29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
aAppbmRleCBlOTY4ZTk4NWM3ZWUuLjU4MDU4M2I4MzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2Rl
Qnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRl
OwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNw
cAppbmRleCA3MGQyNGMxMTkzZjguLmU2ZDc4ZDUyODNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwx
MiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2su
cmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGli
OjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1
aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1Zh
cmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIp
OwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVz
KHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBu
dWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0
KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBu
dWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0
KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjLi5jZTEz
NjQ5NmM0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xp
YigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lk
IGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEw
YjcwMjRjLi43ODg5MTdkYWVmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAg
ICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVl
X2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxT
aGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
b250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGU5NDlk
ZmFiOTc2Li4xMjU4NjJlNzJhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0
aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyKSk7CiB9CiAK
LVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEs
IEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZs
b2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQog
ewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGlu
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNzQ0MjAwNGYw
MGI1Li40YzVjOGEzOTYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVmlzaWJpbGl0eSA6
IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNsYXNzIE9yaWVudGF0aW9u
RmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46
OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5ID0gVmlz
aWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJh
Y2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6
Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRT
aXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NS4uZTIzODRiOWVlNGVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0
ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5
KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsK
IAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBm
b250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFj
ZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRk
Li41YWRlN2VmNjllMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2Rl
bC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxN
b2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5
cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBX
VEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEs
IFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2Rh
dGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAg
ICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEuLjkxNTYwYWU4OGZhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVs
PiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5
LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8
TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwo
UmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7
CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYw
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90Piht
X2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCks
IDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwog
fQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwg
V1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNy
ZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1v
dmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
Y3BwCmluZGV4IGIzN2ViZmM1NjIwNC4uYTBlNzNiM2YzZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMy
OyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUlu
dDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVl
KQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZz
ZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9m
ZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRV
SW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFs
dWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMg
Ym9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBv
ZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0
IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6
ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVj
dG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWlu
dDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlz
V09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBz
aWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9v
bCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYg
c2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29m
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5p
c0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChT
aGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2Zu
dC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0y
OTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9u
dDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0g
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9u
dCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaAppbmRleCAzZDU3MDEwN2YyOGYuLjc4YWM0YTdhZmZmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAs
MTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZl
ciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dP
RkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBX
T0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2Zu
dCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3Ro
ZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50
LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZm
ZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUg
c3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0
cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWls
cywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjNy4uZDdjMDEzZDU0ZTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3Rh
dGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8
YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVm
ZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAg
YXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5Li42MmJkMTM0Nzlj
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGlj
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZl
ciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgot
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1
ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAK
ICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2lu
Zk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAg
IGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5J
VERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNl
bmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5T
U3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBl
cnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJh
eShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVy
biBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVk
U2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFw
cElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3Vj
Y2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2Fk
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAg
ICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6Omdl
dEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25z
ZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNl
V2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVH
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNz
aW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVz
dHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAg
ICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29u
dGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3Bv
bnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9
CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxs
YmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3Vj
Y2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5z
ZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5n
ZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlB
dFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQ
bGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5
OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1
c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9u
RGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJl
ZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRp
ZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVl
c3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5
Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgp
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmll
ciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0
RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJ
ZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEs
IE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVy
cm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAK
ICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRC
dWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0
b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9y
PiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAg
ICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBh
dXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9h
ZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtl
eUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkp
OworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0
cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJp
bmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAg
ICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpA
QCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9y
IChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAg
ICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsK
ICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMu
Zmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlE
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RG
TW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0
aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDUuLmE1NGRm
M2RiYWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCkBAIC0zMDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVy
QVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1f
bG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vz
c2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9d
OworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3Vy
Y2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2ds
b2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21f
YXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxl
dGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsK
QEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0
YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFs
bERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1f
aXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMWE0M2M3ZGVkMjc2Li5hYmQ4MWU1
ZjNjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8g
bnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYg
KG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGlu
dWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdp
dGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAg
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjYuLjU4MzhlNDkzN2RmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3Li5iNmUyMzdiNWRmNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jl
c291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjEzLDExICsyMTMsOCBAQCB2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAg
ICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVm
ZmVyLmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3
ICsyMjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29k
ZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkg
ewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNl
KHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAg
fQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Ojpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
JiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291
cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVx
dWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCBkYjQ1N2E4MWQzZWUuLjQ2YjA3ZmU3MTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaApAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyog
IEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRp
b247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWYuLjIwMzVjOTlhN2Y2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRl
bnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lk
KiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0g
ICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIq
PihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0
aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJj
ZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNl
U2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVy
Q0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAg
aWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdl
U291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIs
IG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5
cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBu
dWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29u
c3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAs
MTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5z
aWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQg
dGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVy
J3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhp
cywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29k
ZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwog
I2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRC
dWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8v
IFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBH
ZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBw
cm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUg
dGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVz
aW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVj
dENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0
Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENH
RGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3Jl
YXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAg
UmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwg
JnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRl
cihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2Vp
dmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIuLmZmNzdi
NTNlOWQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50
SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZE
YXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
KTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3Zp
ZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2Eu
bW0KaW5kZXggODU0MjFlM2RlNzA5Li44NDRhYzQ0ZjNhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0
Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0
dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUo
dWludDMyX3QpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAz
NTllZGI0MTVmZDMuLjYxZGJkNjJjOWUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVl
RGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAg
YXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRh
U2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQy
Zi4uY2M1OTRmMzg0ZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0
Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmpl
Y3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250
VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0
YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTUuLmNjZGFkYjBkYTExYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5
LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBs
aWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJy
YXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJy
YXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXgg
Njg5Y2I2NzllNjMyLi5mZWQ4NTQwZjRhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0
YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hh
cm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0
RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZU
X0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgs
NyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXpl
ICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNF
KEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYi4uYjc0OWZjMTU4ZGZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcApAQCAtNDI0LDkgKzQyNCw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBw
ZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXpl
KCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3du
ZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBj
aGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGQ4MmNkM2UxOGVjZS4uMmI2
MDU5MjM5YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RD
aGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAg
LTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAg
ICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjcuLjI5
YjNhNTAxZDhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAg
LTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIEltYWdlRGVj
b2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
OwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgi
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXpl
ID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIklt
YWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNp
emUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6
R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBjYmI0OWQxNzM2MmYuLjNhMjAxNTc4MDE0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2NjksNyArMzY2OSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5n
IGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5p
dERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAg
aW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBk
YXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQo
KS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVN
RFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXRE
YXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9h
ZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9u
RGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRh
LnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0
Li5jYWE1MGVkNWMzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
R01hcmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBm
YWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVs
ZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29u
c3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioq
KQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNv
bnRleHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2Vy
RGF0YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYg
KHBzc2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3No
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9
CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBh
cnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBt
YXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1
cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2Vk
UGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1
bnBhcnNlZFBheWxvYWQpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXls
b2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5
bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5Li4zMzBiZTIxM2M3
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTAs
MTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtp
dF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVW
RUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3Rl
bUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJ
bml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQ
YXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVk
QnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lz
dGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3Rl
bUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdU
Rk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQt
Pm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFy
c2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzYsMTAgQEAgcHVibGlj
OgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQog
ICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3Bh
eWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0
KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0
ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpA
QCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAg
IH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsK
IAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9Owog
CiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAppbmRleCBiZDExM2JiNmMyNzMuLjU2NGUxZTc1NDRhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgog
ICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxp
Yywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJp
bmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVh
dGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVj
Li43YmM2NjdlNDY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9u
RGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5k
ZXggODNlNmFmN2IwMzg5Li42OGJjYzg4NDZhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2Fs
bG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5k
c0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNk
Nzc2ODk4Li5iNDE3OTIzZTZkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRo
Q292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsK
ICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBU
aGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMu
CiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlv
bihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVj
dGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3Jy
ZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDog
VGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNv
dmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0Owog
Ci0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlm
IChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJs
ZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAg
dm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAg
ICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0
cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0
Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsK
ICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRo
R2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5
cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9p
ZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBW
ZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gdmFyaWFudENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0
aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3Qg
TWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRz
W2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAot
ICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0
CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5
UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2Vt
Ymx5T2Zmc2V0OwogICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0g
dmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcg
KzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNh
bEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5
cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5
cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBN
YXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5
cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkp
CkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENv
bnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRo
Q29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFu
dHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0
IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5m
byhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAo
b2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFu
dHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRo
VmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmgKaW5kZXggMjk5MGJmYjAzZjU2Li4zZmY2NmQzMTE4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9u
dFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRh
Jik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0
aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+
IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIu
LjMwNDk2M2E1ZGU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBl
ZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01B
S0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAo
KCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1
aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCog
dmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3Qg
Y291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0
ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXpl
X3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6
ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAg
IHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAg
ICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNl
dCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZh
bGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2
YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRp
b24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0
cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0
aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2Fz
dGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2Fz
dGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0
ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25z
dAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsx
MjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFC
TEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7
CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVp
bnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUq
IGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAg
ICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcAppbmRleCAzMjE2YjdlZjA2ZTkuLjNjYTcyN2FhZmJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQ
YWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZv
bnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFi
bGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQg
YnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5h
bWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90
IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRl
ciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRh
dGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAog
Ly8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhl
IHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitS
ZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1l
Rm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5My4uMjJiZTIzMGE2MDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90
LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNi4uNzllOWVmZTA2MDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlw
ZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZz
ZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4o
YnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3Zl
cmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9
CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9u
U3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxl
QmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8g
T3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVy
IHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAK
LSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9u
cyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9
IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJs
ZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29r
dXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50Owog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1
cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3Vu
dCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgs
NyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJ
bmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExp
c3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBM
b29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0
dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9m
ZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0
dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90
IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291
bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZm
ZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1
cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3Bl
blR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7
ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0p
ICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0
cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVh
dHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29u
c3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJl
VGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVh
dHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4
W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFu
Z1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJs
ZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAt
Mjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAg
T3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAg
Y29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVu
VHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAs
NyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2Ny
aXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQg
fHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3
IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsK
ICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVs
dExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlw
dChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEg
QEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBm
ZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7
CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIs
IHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBM
b29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZz
ZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlw
dExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlz
dCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlz
dE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFu
Z1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlw
dExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0
cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0g
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVy
ZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBA
QCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7
CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFw
PEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlw
aD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZl
YXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZl
cnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUg
OiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5
cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6
OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVh
VGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVW
ZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQg
Zm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVh
VGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3Bl
blR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBp
ZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5U
eXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VC
VGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxl
PihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODkuLjhiZTFiMWEzM2E2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRp
YyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCA1ZjEwZjczOTJkMDQuLmZjMDRmMTc1Yzc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRp
bmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
Rm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250
RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRm
b3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1Li5mNGZiZjdhN2Y0ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRp
YyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fp
cm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMi4uNGM2NzRjNDc0M2JjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJv
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29u
c3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRl
eCA2Y2I1NTExMDRhOTMuLjQzOWNmODYzYjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApA
QCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJ
T2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURD
KGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9C
SiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXpl
ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxl
LCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdCho
ZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Nl
bGVjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRh
LmgKaW5kZXggY2YyYjUxZjZmMDI4Li43ZTNiMzYzMmI5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5T
bWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1
c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RG
TW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3Zl
KGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRh
KCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9t
RGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdl
PiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhLi4zYzZhM2E1MGM4MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJy
b3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0g
ICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMg
aW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2Rh
dGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAg
IGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlm
IChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91
c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVk
RGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAg
ICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlE
ZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBmZDM0NWJiNzg2ZmYuLjFjODcxZjRkNTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIo
anBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzEx
XSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2Zp
bGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5m
bykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIg
bWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0
KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5k
YXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUp
LCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7
CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7Cisg
ICAgcmV0dXJuIGJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2
LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFn
ZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5Yi4uYzAzYWE2Nzgy
MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lm
IFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYw
MmQ3OGQuLjVhZDFmNmZhYzRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0
eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10p
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7
CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRU
eXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAg
ICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRh
LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5
cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1d
OwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBh
dXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVh
dGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJp
bmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQg
c2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQu
ZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6
bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJp
bmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQg
c2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQu
ZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAg
fQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEu
c2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICBy
ZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwg
bV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFn
ZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNT
RVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAs
IHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAh
cGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1
dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAg
ICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlP
ck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1
dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNl
dFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVi
b2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05f
U1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURh
dGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6
ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9
PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5
cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAg
LTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJh
dGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJl
ZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5D
dXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5j
cmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVy
ID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBh
c3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRy
YWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBw
cm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9h
cmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20g
ZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmlu
ZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmlu
ZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsK
ICAgICBpZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9w
YXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1
Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtwYXN0ZWJv
YXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2Jq
ZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJp
bmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OS4uZmQ1
N2QyMjJjMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29s
b3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFz
dGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJy
ZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2Uu
dXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4g
d3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJp
bmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3Rk
OjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpA
QCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5U
ZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYg
KHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAg
ICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAg
ICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAg
ICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAw
NmI5MGNiLi44OGQwNDAyNTg0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJp
bmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlw
ZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQt
PmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdl
dCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNs
aWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQo
KV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmlu
ZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NB
bHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQo
KV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDli
N2QyNDgwMzhjLi4xYjkxOTE0ZTNmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAg
ICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JU
eXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHld
KS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9w
dE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51
bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBs
YXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAg
ICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFG
b3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAg
YXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAg
ICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRv
JiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
LT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0
ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0
YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVs
c2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsK
ICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZl
cik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNo
b3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9t
RGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAg
ICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFz
dGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYs
NyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJk
VHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRX
cml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRp
ZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2Fy
ZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICBy
ZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdl
YlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxh
dGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBp
ZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAg
ICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAg
IGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJk
SXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
cGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVy
KS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRm
b3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAg
ICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5k
ZXggMjExZjc1ZWU3M2FmLi41ZWQ5OGM0MTMwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJp
dmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2Nr
IG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RG
X0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zv
cm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxMy4uYzcxYWE4NGFmYzFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1t
CkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0K
IAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5n
IGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2Rh
dGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBb
bV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlm
IChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25I
YW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01Mzcs
MTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZl
dGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBt
X2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
bV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXpl
KTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1
dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4g
bV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRl
eCAwYzkwODE3YzRlOWIuLjYyMzY0ZDcxM2M5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90IEZv
cm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsK
ICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNC
bG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCBlOWQzNDQzZjhiNWMuLjEwODI4MTEzMWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFz
cyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgc3RydWN0IEVuY29kZWRGaWxlRGF0
YTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRh
RWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNv
bnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZl
cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBj
b25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFt
KGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNi4uODE4ZTE4MTg0NTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNl
SGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojpk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEo
aGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIuLjg4ZGVkZmE0
NWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3
b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAg
ICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRs
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAog
ICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRl
eCAxZmYwNjUyMTZmYTYuLmUyYzM1ZWQzMTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAg
OiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJj
ZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFz
a0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsK
ICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNp
emVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVy
IH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAg
ICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZp
bmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIy
IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVS
ZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZl
cjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1F
OiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVy
IHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAg
Ly8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0
IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZm
ZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1
cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYg
KGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAg
YXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRh
dGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRh
c2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3Ig
PSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFz
ayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQ
dHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBO
U1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMw
LDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9U
YXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdl
ID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+
bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAg
ICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAo
Ynl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAg
ICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVu
ZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRM
b2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAg
ICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVy
LnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVh
ZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRM
ZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBA
IC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJh
dG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRh
dGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYi4u
ZTU5MjI3ZTM4YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcg
QEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9u
IGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBk
YXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1Jl
Y2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVn
YXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdT
ZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZl
RGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTguLmQ2MzVm
NzljZDFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZv
aWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJu
OyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAot
ICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBt
X2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyAr
MTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYg
KG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3Rp
bGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0
IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIu
c2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBi
b29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAo
IWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91
bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRo
ZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMg
b2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7Cisg
ICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkp
OwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2Fz
IGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBv
dXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlT
dGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFy
dCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRh
cnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NS4uYWNkODhlMWIwMjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAg
LTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmls
ZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAo
bV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5k
bGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93
bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgx
OGQ1YTk1ZTNlMS4uZWQwNWRlN2FlZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAg
IGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3Vy
bENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZm
ZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENh
Y2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3Vv
dXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNl
aXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5z
aXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmlu
ZGV4IDBmYjQ1MDA3MmZhMS4uM2NhMjA4MjJjMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBh
dGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNU
b1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5k
ZXggMmIzMTI4NTg3MDMwLi5hYWNjMzdjZDI4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk3OCw4ICs5NzgsOCBAQCBzdGF0aWMgSEdM
T0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAg
Q29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFs
VW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzAsOCArMTAzMCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwg
U2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAg
ICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZB
TFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3Vj
Y2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAg
ICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAg
ICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRl
U3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1OC4uMDczOWRk
ZjQ0YmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVm
ZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3Vs
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JE
IGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFz
dEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7
CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5k
bGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1Rv
UmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAl
cywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0
RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yi4uNjUyNzI1MGU1YWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBN
b2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlm
ICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgp
KSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYg
KCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VB
cnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAn
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0
YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJy
YXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2
b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3Ry
aW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlm
aWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7
CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5n
VmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3
IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgp
LCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Bv
bnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29u
dGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZh
bHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFs
dWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXgg
NmQ0OGJkMDJkMWM5Li41Zjg1NDVlYmE1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0
QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjpl
bXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1w
dHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07
CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRh
dGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5n
KCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25l
U2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZp
bGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVT
ZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAg
ICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAuLjM3ZjFhNDg3
ZjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgs
MTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihj
b25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBj
b25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
LmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIt
PmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVy
PihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNj
cmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUg
VVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0
QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNDMzZDllMWE0NWMyLi5hM2NhZjRh
MjZmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJGb250U2VsZWN0aW9uQWxnb3Jp
dGhtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldPRkZG
aWxlRm9ybWF0LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC03OCw5ICs3NywxMyBAQCB2b2lkIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUp
CiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1f
ZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAg
ICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAg
IGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXND
b250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGln
dW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1f
ZGF0YS5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRh
LCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1
cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNywxMCArMTIwLDcgQEAgdm9pZCBXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotCi0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVh
Li5kYWI3M2ZjN2IxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRm9udExvYWRSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMzYsNyArMzcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNzYs
NyArNzYsNyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9h
ZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZC4uMGJjZDk3NmVkYTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBw
cm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJl
c3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAg
IFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAg
ICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRh
KSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZd
IChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQt
PmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmlu
aXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApp
bmRleCA4OWE4NzVmOGFmYzAuLjAzYTcyMTFmY2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAt
MTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0
byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZp
bGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1
ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
c2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVz
ZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6
Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZTBjZGM3MjM0YzU0Li45
YjExMmI5ZGIyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNDgs
NyArNDgsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdHJpbmdBZGFwdG9ycy5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgi
CkBAIC0yMDgsNyArMjA3LDcgQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IoKQogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20g
TmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNp
ZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgICAgICBkYXRhID0gbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxp
emVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1F
VHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0
byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29u
dGVudFR5cGUpOwogfQpAQCAtMjE4LDkgKzIxNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1M
SHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNw
b25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9u
ZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
OiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci50YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCh1bnNpZ25lZCB0aW1lb3V0KQpAQCAtNzQx
LDcgKzczOCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkK
ICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVu
dCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0x
MDY1LDkgKzEwNjIsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8v
IEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBs
ZW4pOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5hcHBlbmQoZGF0YSwgbGVuKTsK
ICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgKaW5kZXggMDQ4NDYyNmIyZTVkLi4yZDEzYmVjMzk0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNs
YXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAg
UmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNl
QnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAK
aW5kZXggZGY4YWJlNDI2ZTA2Li5hMzBmNTE0MWE4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxE
b2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2Jh
bENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9h
ZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAg
ICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlLi5k
YjI2YmIzOWRkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9p
ZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2Ny
aXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmZTQ4
YjRiZjBjOS4uYTYxYzQ2MGRkN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxh
dGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERh
dGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6
ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3Rv
cmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6
ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
Q29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRC
dWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBD
OjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFj
dGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVt
T3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVl
dEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6
OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRh
UmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9y
dHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29weSBTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlciBlcnJvciB3aGVuIGZhaWxpbmcgaXRzIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMi4uZWJkZTc1MzBlYzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwog
dm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2lu
dGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0
YWJiZTU2Li4wYjlmNDlkMzY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3Rh
dGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZl
cjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1
ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVz
cG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAg
LTMwNiwxMCArMzA2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdv
cmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1
bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwg
bV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGEuZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZW1wdHkoKTsKICAgICB9CiAK
ICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAg
LTczNCwxNiArNzM0LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICYmIG1f
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAg
ICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAg
IG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGEuZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdU
aW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAg
fQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3Bv
bnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCBy
ZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9y
ZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7
CisgICAgICAgIG1fYnVmZmVyZWREYXRhLnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5p
c011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgaWYgKG1fY2Fj
aGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVk
ID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmll
ZApAQCAtODY5LDEwICs4NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93
dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGlu
IHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUg
PSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUp
Ci0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgp
KTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5z
aXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblBy
ZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcAogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZl
ci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBw
ZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5n
dGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5l
ZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC05MDksMTEgKzkwOSwxMSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAg
ICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBt
X2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJl
cGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJl
ZERhdGEuZ2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUg
ZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7Cisg
ICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAg
ICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hS
ZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1OSwxMiArMTI1
OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgp
CiAgICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7
CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXJl
ZERhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS5nZXQoKSB9LCBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAg
ICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI4OSwxMiAr
MTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3Rv
cmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAg
ICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJy
ZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5z
dG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVz
cG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUt
PnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1v
dmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRv
JiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2Fk
LT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRh
a2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUg
ewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5
LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhLi5jNDIzNDY1MWJhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
ZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBA
IC0yNDAsNyArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVy
aW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAg
ICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZh
bGlkYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2Fj
aGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXgg
NzFlMGNmNmM2ZGM3Li4zYTU1MTc0OTAxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAg
ICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNS4uNWM0YzhlNzFkNGRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNh
bGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
PjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApp
bmRleCA4ZWUxMTJhOWRmODIuLjk0MjM1MzQ4MjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVy
LT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZm
ZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5k
ZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApp
bmRleCA2ZjI2YjRjYzJkZWYuLmZkYmZiMTQzNTk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShj
b25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0
YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3Qg
UmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0
b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
ewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNo
ZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29y
ZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29y
ZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4g
cmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEuLmYxZWZmZjM1MGZh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3Jk
IEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIo
ZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsK
LSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1f
YnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIg
PSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1f
dGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZi4uZDQzYzA4OWQ2MTg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2
ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAg
IGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7
CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNj
ZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAv
LyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAg
ICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0
OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5z
aXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7
CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAg
IGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50
cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAg
IG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3Bv
bnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7
IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2Fu
J3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hl
YWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jl
c3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENv
bXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJh
YzQuLjY3ODMwZGYwYjMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03
NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCmluZGV4IGU2N2UwNWJhODQ3OC4uZTY1YjJlYTgzOGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgog
ICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9u
c2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0
ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVH
Qnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJl
YW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVz
LmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUz
MGM0M2MwLi4yOWY3MWQ3ZTZkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJl
dHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyLi5lOWNkODcyZjhkNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAg
LTM5LDE4ICszOSwxOSBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBT
aGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHko
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29w
eShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAg
IDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVy
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZm
ZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkg
eyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1
cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Cisg
ICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0K
ICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNp
emUoKSA6IDA7IH0KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2Rl
ciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1My4uYjNhOTlhZjhmNTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QK
K1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNp
emUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAg
ICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCog
ewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0
ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmgKaW5kZXggZTM3MWJjZDczMDJjLi43NmI3M2NhZTRjODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8v
IFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWdu
ZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJp
dmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNo
aXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1Li4xMTBlMGFkZGU1NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4
LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQg
Y2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNv
dXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNo
aXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVh
c2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyOC4uMzVlYTE2MjE1NmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAg
ICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBz
byB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQu
Ci0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUo
KS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXgg
ZTlhNTEzYTMwNWVkLi40NTQxNjQzNmMyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAl
bGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChk
YXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7
IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYg
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyLi4y
YzE2MTFjOWU3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5j
cHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcElu
U2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsK
ICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsg
fSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUo
KTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJj
ZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVlZTBhZDYy
Yy4uYTBlZDA4NTczNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYp
OwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBA
IHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJl
ZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAK
ICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyLi42
N2I3ZWI5MDM0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1
ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRp
ZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVy
KERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcg
KzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5n
dGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwor
ICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNv
ZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZv
aWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAg
ZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVU
eXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsK
IH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
VHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCAr
MjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERh
dGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09
IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7
IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVS
ZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsK
IAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25z
ZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewog
ICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1
ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9
OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19Owor
ICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBA
IC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlv
bmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1
ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQg
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAog
ICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApp
bmRleCAyNWYwMWMwMjkyYTAuLmVmMDExMWZiNTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJ
bmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Q3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJz
b3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2Yz
ODI5ZS4uNjQ1ZDliZmFiNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2Vs
ZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRD
dXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9u
LnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAg
ICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUy
YzVjLi44YWVmNGE1MDFkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dp
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpv
cHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29k
ZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNy
ZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFs
dWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFj
ZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0
ZWM3MzYzNjNjLi5jOTBkM2Q4MTEzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNo
bWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5
M2QuLmM2YzJhMDZlYzk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9C
SkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3Np
bmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAg
ICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJ
bWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMzZhNmY0
ZmIwN2YwLi4yZjQ0OGE3NjM5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBA
IHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRh
JiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9
Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikK
K3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBm
dW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YS4uOTRkYjU1NzUzMjg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBj
b25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRv
cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigp
OwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlm
ICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRh
KTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGE3
MmQwZDJjOTJkNy4uM2ZiZGYxNDcxZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0
b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAog
ICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZh
bHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdo
dCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQg
PSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdo
bGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0
ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBz
dG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5p
c05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBX
ZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpAQCAtMjIyMSw3
ICsyMjIxLDcgQEAgLSAodm9pZClfcmVxdWVzdFJlc291cmNlOihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGEKIHsKICAgICBfcGFnZS0+cmVxdWVz
dFJlc291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiYgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3Bv
bnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpLCBy
ZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG5pbCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDky
YmIyMjUuLjZiNzU2YWE0MTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BU
YXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRh
KiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBj
dXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEs
ICZsZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0
aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0
YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0
YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KaW5kZXggMzg1NTg4MmM4N2RjLi43MjViNzcwZjZjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIz
Miw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19j
YXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZm
YWE2ZDZlZC4uYmUxNDM3MGRlMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIsMTIgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQog
ICAgICAgICBpZiAobm9FcnIgIT0gQXVkaW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lzdHJhdGlv
bnMoJnJlZ2lzdHJhdGlvbnMpIHx8ICFyZWdpc3RyYXRpb25zKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIG11
dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAo
KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEgfSksIDApOworICAgICAgICAgICAgYXV0byByZWdpc3Ry
YXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lz
dHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJl
Z2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNi
Ny4uNjgxNGE3MGEwMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoK
ICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBz
ZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpX
ZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2Ut
PmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4
OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4Omld
XTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJp
bmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRp
dGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZm
ZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRl
RGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2Ut
PnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5
cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0
aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFn
ZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0
aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQs
NyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVS
ZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRG
b3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBh
c3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50
aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmRE
YXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlLi41NTE2NjY2YzVhMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jiwg
Ym9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0
aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1Rh
cElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5YTgxNmZkYjMxODMuLjcyM2NmZTViNzI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExODEsNyArMTE4MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0
aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1h
a2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJz
dFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwCmluZGV4IGRmNTlkNTZmZDY5Ny4uZWQ4Y2I2NTNlY2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTg3LDEwICsxODcsNyBAQCBh
dXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYg
KGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5j
RGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwog
ICAgIH0KIApAQCAtMjE1LDE0ICsyMTIsMTEgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRD
b21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXI7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygp
KSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0
YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+
c2l6ZSgpIH07CiAKKyAgICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBt
X3N5bmNEYXRhLnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3lu
Y0RhdGEudGFrZUFzQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5j
Q29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsK
LSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dl
YlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5k
ZXggNmE4NTYwMjFiMTI5Li5kZDZiNzI0MTBhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3MgRnJhbWVJbmZvOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMTE1LDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9z
eW5jRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fc3luY0RhdGE7CiAK
ICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IuLmU5ZDIzNjkzY2RjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsx
ODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0
aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CmluZGV4IDMyZDFmODljMDU4Yi4uNjZhYzRjYWE4YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUlt
YWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VD
bGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1h
Z2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhv
dG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
aW5kZXggNzVjYjc1MTJjY2E2Li40Yzg2MjczYzNmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzg0
Miw3ICszODQyLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFj
dGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0b21Q
YXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNd
OwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkg
ewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkg
PT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAg
ICAgICAgIH0KQEAgLTY2MjUsNyArNjYyNSw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJ
dGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAg
ICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQog
ICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTk2LDcgKzc1OTYsNyBAQCAtICh2b2lkKWFj
dGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNo
YXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hh
cmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAi
RGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRo
IG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFt
ZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9u
KGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlv
bihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVj
dDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10g
fSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0OWRhNDYuLmJhOTk1ZmI5ZTA2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlYWY3ZTA3OWFl
NDEuLjFiM2ZlODY4OWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0
Li4yYzEzNGU5ZTcxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2Vi
UGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBs
ZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlLi5kZjhkODgwNDdmZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRF
ZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVk
aXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5n
ZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xs
ZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRs
ZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9p
ZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVn
YXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRy
b2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBl
cihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAo
TlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9h
cmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBw
ZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAg
ICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcAppbmRleCAzNTM2MDY1MjViODQuLmMzOTgxMWVhYzk0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVi
b2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQor
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50
LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9
IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAg
ICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAg
ICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRl
bS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7
CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaAppbmRleCAzMWUxMzk2ZTcwYWQuLmQ5OGVlMWMxNTVkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25z
dCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJm
b3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25z
dCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDhkNTI0YjUyNWM2ZS4uYTM0ZTIxMmQwN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBj
aGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAg
ICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRl
cmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRh
dGEpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdl
LCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVk
QnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBB
UEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFy
ZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZm
ZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVm
KCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hh
cmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVu
dC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJ
KGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUu
aW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
ck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3Li5hNzg0ZWMzODhiMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcg
KzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZp
bGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291
cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQyY2MzZWIyLi45OGE2ZTJlN2I1N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
OwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0
ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNl
IHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTUuLjg3Mjk4YjM3MjUwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJO
ZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVk
IHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxl
ci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9s
bGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFM
ZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
IH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZGM1NmQyYzY2ZWQ4Li4wOGNmYmI1NTBlZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC00MDMsMTAgKzQwMyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5p
dGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFs
U3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFs
U3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7Ci0KLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMs
IGxlbmd0aCk7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5hcHBlbmQoYnl0ZXMsIGxlbmd0
aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzNyw3ICs0MzQsNyBAQCB2b2lkIFBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUg
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJy
b3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhLnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTkyOSw4ICs5MjYsOCBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigp
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAg
aWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0
cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURh
dGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRl
OjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEuZ2V0KCk7
CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0Myw5ICsxMjQwLDkgQEAg
dm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZl
ciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgICAgIGF1dG8g
YnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUo
KSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAg
aWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIx
MjZlYjhlZGI1NS4uNzMyNzQxZDk1ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbHVnaW5WaWV3QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNl
OwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBU
aGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1
Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
bV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzguLjc2ZGM0MzA2ZDVmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAg
ICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1f
cmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90Jikg
ewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAg
ICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNl
aXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZm
ZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwog
ICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1Zi4uYzhjMGQ4NjJkNzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBt
X25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNl
IH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4s
IFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAg
Ym9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDgxZTM3OWUzM2QxYS4uMTUyMDViYThkMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApA
QCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdl
LCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJk
VHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1
NDEzOGQuLjkxNDZlNGM2ZDJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9T
dGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA0YmRiYmNjZDNmYmMuLjk1OTIyM2Q3NzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihs
b2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcw
ZWY1YmI2Li42ZjNmNTY2YzUyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJk
TmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3Qg
Y2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7
CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlk
ZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBv
dmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sg
dG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50
LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTMyNCw3ICszMjQs
NyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1B
dEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmll
cihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1Li4zZmYzNTU4MDhlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlw
ZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
cmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlLi4yM2QwMTE0YjBlOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NSw3ICs0NCw2IEBAIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwg
bV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIg
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY3LDEyIEBAIHZv
aWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZm
ZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7Cisg
ICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4
IDA0OTJjZWVjMmY5Yi4uOWU2ZjUwZjFiMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU0LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9m
aWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4
IGE2NGM2YThiM2M2OS4uNGI2ZTIxN2JiZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgp
OwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmlt
YWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRh
dGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAg
IGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFn
ZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZl
U2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAg
ICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEuLjkyOWIxNjBlZWE5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0
cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGlu
ZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1h
aW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNB
c1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA2MGY4NGE0NWMzODAuLjNjYjUwNjI0YmYwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChm
cmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0
b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0
byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0
ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQw
ODQ0OWMxNDkyOS4uODE3OTUxMjExM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJk
YXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdl
RWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAo
LVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5j
b2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAg
ICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRm
Li42MzU1YjZmOTAzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFS
ZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1h
Z2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilt
aW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQuLmJhMzFmYTdjODZiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3Rl
QWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBj
MmM0MGQzZDJhMTMuLjc0YzQ4NzgzMTc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcg
KzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVk
IFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CmluZGV4IDI0YjY5OTcwNmRmMC4uOTE0MTk2YzRhOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYy
ZDY2Li4xMTA5YjMxNmJkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEw
OSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVy
Rm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAw
MjliZjkxLi5jNTMxYjFkZGRkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilk
YXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9
IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlm
ICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFp
blJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4g
bWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2Vu
dGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3Ni4uMzhkN2U1MzJkNmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2Vi
QXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBf
aXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVm
ZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRM
b2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZl
RGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNo
aXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVs
ZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4Li41YjEwZDNmZjc1NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICsz
NTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVt
KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9
IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBh
ZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgp
XTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAg
ICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBiMDhjMWQy
MWNmOWYuLmQzYjUxNmM0MWE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVy
OihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJp
bmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmls
OwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJl
c291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgp
LmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAg
ICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2Rpbmcg
PSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNl
LT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5u
c1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZv
cktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRh
LmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9i
amVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNv
ZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29k
aW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAg
aWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3Jl
bGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJM
ICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAg
ICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAg
IFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2
YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5n
LmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRh
LT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7Cisg
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwppbmRleCA1ODQwZGUxMTY3NzEuLjNkMGY3ZmI3ZjdiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTAxICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVt
b3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAg
ICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6
CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0
ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxk
b24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJv
bSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiLi41ZGYyMTcwZDJh
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyAr
MzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlT
dHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9
CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYu
LjA3ODYwYTE1YWI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAg
LTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFt
CiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8
TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0
cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsg
MCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzUuLmM1ZGU5MGM4MTBmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVT
VUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQog
ICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAj
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhLi5lOWExMzZmNmJiNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZS4uMmFhYWZjZGRl
NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2Vz
KCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4
YmQ1Li4wODk3YzdjMDU0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3Vy
Y2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9D
T01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAg
ICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVh
bSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1h
aW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9
CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0
XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmUuLjZkYzRhNDg1MmExNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6
OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlw
ZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0q
IGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9J
bl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RB
VFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdf
Tk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRE
YXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RS
CiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQg
YmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAg
ICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChT
VUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+
KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVy
LnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAg
fQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUs
IHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVm
ZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cAppbmRleCA5NDNmYTdhYjQ1YzguLjJmZmNiODk5OWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJl
c291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9
CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVh
bT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRh
dGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNj
YTVlLi45NGFiMzVjNTYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApA
QCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2Vi
UmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01f
T3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhOGU4NzFiMGFmMWEuLjNmMmRhZGNhYzMxNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0
ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20gV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgy
Li5hZGQyNDhiMGRlMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1
MiArNDMsNDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90
X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmlu
ZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZp
bGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0
eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVm
ZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0g
YnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7Ci19Ci0KLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwot
ICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZl
ci0+ZGF0YSgpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZm
ZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkp
OwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwot
ICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCks
IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgn
YScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTYsMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0g
IkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3RE
YXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwg
c3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVu
KHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25j
YXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4o
ZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5k
YXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNiwx
MCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNl
Z21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChX
VEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
YnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0
MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kp
IHsKQEAgLTE1MSwxNyArMTQ2LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQog
ICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNh
Z2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIK
ICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlk
aWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0
YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVy
MS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAv
LyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9
IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFy
ZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFy
ZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUo
KSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXIt
PmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVY
UEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0
LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7
CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkp
OworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5n
dGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisg
ICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQor
CitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRh
MFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRh
MCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5
ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkp
OyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5n
ZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAg
IGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5p
c0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAg
YnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNo
ZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29u
c3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xNzUsNjAgKzIwNiw3MCBAQCBzdGF0aWMgdm9pZCBjaGVj
a0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0
IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBW
ZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMg
PSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMz
KSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rv
cjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRv
IGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAg
ICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTAp
OwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlq
a2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
ICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihh
YmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0
YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5z
aXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsK
ICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAg
Y2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVy
KGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVj
a0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihn
aGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdo
MS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5z
aXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBs
LnNpemUoKSwgImwiKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykK
IHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBj
b250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRv
JiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7
CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywg
J2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycs
ICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsK
IAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdk
J30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3sn
YSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7Cisg
ICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
LCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUSht
YWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtl
QnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAn
YScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAn
YScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsw
eDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRv
SGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZl
ci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50
YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBA
IC0yNDksMTYgKzI5MCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxl
bihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBp
KyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAg
ICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUo
KSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNU
X0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAy
KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzEz
LDE1ICszNTUsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVk
ZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7
CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAx
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNTgsMTYgKzQwMiwxNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkr
KykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNp
emUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11
bHRpU2VnbWVudCkKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVy
LnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0
KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7
Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkp
OwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1w
bGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9y
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzLi44YmZiODVlYzYxZDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlz
RXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAg
ICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmls
LCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBO
U0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywg
aGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxs
b0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0
aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRl
ci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3
b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxs
b0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEg
XSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRh
ICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0g
ICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxv
RGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9E
YXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVm
ZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNB
cnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAg
TlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxl
bmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdt
ZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5z
ZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50
Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVu
dENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2Vn
bWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24p
IHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0
YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7
CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNv
bWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERh
dGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50
KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwog
ICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRD
b3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhw
ZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5n
ZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RC
eXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0
ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446542</attachid>
            <date>2021-12-09 06:43:33 -0800</date>
            <delta_ts>2021-12-10 02:24:27 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-233442-20211210014331.patch</filename>
            <type>text/plain</type>
            <size>135208</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiYWZmMWUyYmEwODQ5
MDdmYjcyNmUzOTkwYzk4N2E0MTFmYzJlMC4uMGNiYmY3OTI3NDUyNzFhOWI1NzhhOTc0OTliYzFk
MmNiYzgwYjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVy
LCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAg
ICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxl
IG9uY2UgY3JlYXRlZC4KKworICAgICAgICBBIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBs
YWNlbWVudCB0byBSZWZQdHI8U2hhcmVkQnVmZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbnVsbCBhbmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxv
d2luZyBhIGNhbGwgdG8gcmVzZXQoKSwgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAg
ICAgICAgd2lsbCByZXR1cm4gdHJ1ZSBhcyBvcHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBj
cmVhdGUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6
ZSBvZiAwLgorICAgICAgICBBIG51bGwgU2hhcmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhh
dCBhcHBlbmQgd2FzIG5ldmVyIGNhbGxlZCBvbiBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVt
cHR5IFNoYXJlZEJ1ZmZlcikuCisgICAgICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sg
aWYgdGhlIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGlu
ZyBjb3B5KCkgb3IgdGFrZSgpIGFzIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0
ZWQgaWYKKyAgICAgICAgbm9uZSBleGlzdHMuCisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lv
bnMgd2VyZSBtYWRlIGR1ZSB0byBob3cgU2hhcmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAor
ICAgICAgICBhbmQgdG8gbWluaW1pc2UgdGhlIGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3
b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxk
IGFsd2F5cyBjcmVhdGUgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAg
ICAgIGl0cyBzaXplLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGlu
Y3Rpb24gYmV0d2VlbiBudWxsIGFuZCBwdHkgd291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4K
KworICAgICAgICBXaGlsZSB0aGUgYWltIHdhcyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1
ZmZlciBvbmNlIGJ1aWx0IHdhcyBpbW11dGFibGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3Qg
ZW50aXJlbHkgYWNoaWV2ZWQgYXMgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBS
ZWZQdHIKKyAgICAgICAgdG8gYSBTaGFyZWRCdWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0
byBpdCB0aHJvdWdoIGl0cyBTaGFyZWRCdWZmZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxs
IGltbXV0YWJpbGl0eSBjb3VsZCBiZSBmdWxseSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSBy
ZXR1cm4gYQorICAgICAgICBzaGFsbG93IGNvcHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFw
IG9wZXJhdGlvbi4KKworICAgICAgICBGbHktQnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZp
YSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0
byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291
cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
YXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJj
ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVy
QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OGNkMzQzYjVkNGQzYzg2MzhhMGFl
NTVhYzk1ZTg2YjAyZTVhNjFmLi5hNjFjNDYwZGQ3YTRmYjcyMjVlMjM4ODJmMWFiMWM5MTE5ZGQ0
MGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6Oldl
YlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNl
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVh
bFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWls
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCmluZGV4IDU5Y2Q0ODdhYWRjMTgwYTAwOGQ2YWQ3YzcxNTI1YTgzN2Vl
MmE5NGQuLjNkMGY3ZmI3ZjdiMTY1M2E3YmNjOTFkNWY0NWRmZjBiYWExNWJjM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wMSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJGcmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3
NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uNDJmZThmZGZkNDlkMWU2MGE4ZGNmMTFjMTJm
MmZiMDNlMzQ2ODkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFk
ZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxw
dHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAo
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVj
b3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVm
IHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVz
dEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCBy
ZXNwb25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRh
c2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRh
LnRha2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyArMzc1
LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVz
cG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5
UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25z
ZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlS
ZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJl
c3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
c3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0z
ODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVm
PEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25z
ZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25z
ZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAzN2I4Mzg2YTc4YWU4NzVk
YzI1NjNlYmNiMmE3ODg4NWQzMGJhYzQ0Li5kZDc3ZTNiZWIzMzQyMDlkZGI2ZTk2NDQ2YzY4OWIz
ODZhNDQyZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlD
b25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNl
KCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsK
QEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYg
KHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJl
YWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwg
Y29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBS
ZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwg
Y29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5W
YWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZUFzQ29udGlndW91
cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9t
aXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpz
dHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMjYgKzMyNiwyNSBAQCB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkK
ICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBz
aXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAg
ICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAg
bV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9i
dWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOwogfQogCi1SZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgcmV0dXJu
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7Cit9CiAKLSAgICBhdXRvIGFycmF5QnVm
ZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBu
dWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKK1JlZlB0cjxKU0M6OkFycmF5QnVmZmVy
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIHJldHVybiBt
X2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1
MSw5ICszNTIsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpu
b3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZm
ZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZN
b3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAK
IFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzYxLDgg
QEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1
dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4Miw4IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewog
ICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAg
ICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQor
ICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpKTsK
IH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRp
b24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQy
ZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZkOGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4
ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVy
OyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7
IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXRE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFr
ZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIo
KTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0
cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJv
bWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJl
ZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCA3NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNi
ODQyMGE2NmZhLi4yN2E2ZDcwMzM0Y2EzMjA2YTk0ZTkxOTk0MzM2MzdjNGEzMDUyZTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsK
IAotICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRh
Q29tcGxldGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5
LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNl
LnZhbHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsx
ODAsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0
LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNl
LmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxl
QW5kVXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBO
ZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9k
ZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91
cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRha2VBc0NvbnRpZ3VvdXMoKS5nZXQoKSwgcmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291
cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNk
YWEzZTE0ODc3YTBhZTQ2NWI2MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAy
N2IwNjMyYmQxZTZlODU4MDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAg
cHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1v
ZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNl
OwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggZDcwYmE5ZWZmMWM5
MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0Yy4uYjk5NzZhZjJlNGRkNDA5YTg5YzNhNDI0NDEz
OWEzZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBA
IC02Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhh
c0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3Vs
dCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRy
OworICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFC
dWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwz
NiArODAsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAg
IHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFC
dWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZl
ci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAg
IG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWdu
ZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVu
dCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5n
dGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZl
ci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNp
emUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0g
ZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAg
ICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVl
OwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVu
dCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAg
ICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVu
dC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZi
MTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4wNGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEz
ODkxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSBy
ZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0K
ICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVz
cG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJl
ZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25z
dDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAt
MTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFt
ZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFs
PENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291
cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmYyZTgyYzJiMTdmM2M5NGRlYmYwYTZhNDE4ZjQ0MzNl
NGFhYmQ2YS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsg
fTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS5y
ZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAK
QEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5n
UG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVz
ZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpA
QCAtMzM0LDE5ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8
IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCi0gICAgICAgIG1f
cmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAKKyAgICBpZiAoZGF0
YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNv
dXJjZURhdGEucmVzZXQoKTsKKwogICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5hcHBlbmQoKmJ1ZmZlcik7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVm
ZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisK
K2NvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VE
YXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEuZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxv
YWRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRm
ZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjM3ZDY2N2Q4Mzc2ZDAwZGE3
ODk0NjJkY2NlMWFkYjMzNjg4OWZkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBT
aGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRh
LmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMjgsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRi
NTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcw
ZjIzMjA0OWUwY2EyYWQ0ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
UmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZl
ciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZm
ZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0p
OyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBt
X2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEu
ZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEt
PmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5j
b3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJs
LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
QEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0
N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3
ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2Fj
MGZlNzkuLmM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVk
CiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJf
cyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1w
dHkoKSkKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAg
CiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdy
aXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0
aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50
CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAg
ICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwog
CiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2Mu
Ljk5M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQg
b2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9u
bHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcg
PSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmlu
Zy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNl
cykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBA
QCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2Uq
IHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zl
ci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIs
IHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJp
bmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEt
PmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAg
ICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNv
bnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAg
ICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29u
dGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29k
ZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5z
aXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAg
ICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5z
aXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBi
YXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMg
PSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1M
IHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAg
ICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5j
b2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAg
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVu
Z3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAg
ICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgs
IGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAy
KTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAg
ICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxu
IikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0
YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAg
IHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNzMzNmIzN2RlM2Jk
ZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZi4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4YTcy
NDE1MjMwZDEwOWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBl
bmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50Owog
ICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5
KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFk
ZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAg
LTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFy
c2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9H
X0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChX
VEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAg
ICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRD
aGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMg
YXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4u
KSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRh
KCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4
KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNv
bnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1
dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVk
UHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAg
ICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkBAIC0xOTMsMTAgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LnRha2VBc0NvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVu
dFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0g
ICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJh
c2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90
ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1
b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3Vz
Q29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpT
ZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBl
bmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAg
ZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQt
PnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApp
bmRleCA4NGFhNzJkZjE5NjAzYTE5ZmFjOGYyZDBkNzQyOWNmYjhkNTdlNzczLi45N2NkNGRmZmQx
ODhjMjgxMTFmZDY5YWMwZGJhMzM4YTY3MzMzNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEw
NzljNTY0ZWVmZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uNjRiMTRkNWY2NWZmZmM4NTU0ZGY0
NjY1Yzc1OTE2ZjM0ZDFkNTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9j
ZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3Vt
ZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291
cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNjZkM2VhYzViNWRjYzYwMWQ4
ZTAxNjcyNzI3NjdlNTNmYTJmOGM1MC4uOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2Ey
NDQzMDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAg
ICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7
CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1
M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1
NjE2MGNjYWU0NjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCBmNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjLi5mOWFkNzcxM2M2
MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmlu
ZGV4IDBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQuLjE1NGRiOGNiYWJm
M2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCA3MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllLi43YzAxYzhjYzIz
MTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBD
YWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDcgKzUyMyw3IEBA
IGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGlt
ZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hl
ZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRh
KTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5
ZjQyMmE0OGFiODczYjEyODM0MmY1Li5kNTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZh
NDM4YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAt
NjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQog
ICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2Ug
JiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAg
LTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBA
IC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYy4uODQy
YmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRh
KHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVw
ZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRo
ZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAg
ICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBp
ZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBk
ODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLjU3ZmQ3YWI1YzEwMGRjMDlhZGYy
NmVjNGNiYWM0NTE0ZjM2Zjc1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBT
dGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVk
aXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkZmJhNzYxY2IwNTg2NGY1NDI0
NTIzYmEzN2NkNTVjNjAwNWRlZWMwLi41NTY5NjQzY2Q1ZTY4OTdhM2M1OGZiNDYyMzQ1NDZmMDZk
YTBhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDYsNyAr
MzQ2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4
NWMxMWQ0YzE3Mjk2ZmZlNzU3Li4yMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkw
ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApA
QCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rl
ciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3Io
Q2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBkZTU3
ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllLi5iMGY3NmE1MDk2MTBmNjcxMDU3
YmVlYmYwYTBiOWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hl
ZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5j
b2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChk
YXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJl
Y2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5k
ZXggZThjMTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRm
NzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29k
ZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCmluZGV4IGI4YjMwYjdlMDgyY2NjMThlYzUzYjE2MGE3OGQ2ZjlhMjgw
MWYyYzguLjFkZjVjNGIxN2VlZWJjYjRlNGJiZmU0YWY4ODkxYWRlY2I2YWI5NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3
IEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2Ny
aXB0SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJj
ZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCBhYjE3MTE0NDQ3N2Q2NDVl
NDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkx
M2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRU
cmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewog
fQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5t
YWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CkBAIC01
MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hl
ZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIy
Yzc3MTM4YjkxNTA3YWRkLi5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBA
IC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVw
bGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMC4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdj
YzllYTM5ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5
bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5n
KCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRh
dGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4
NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmMwNGRkNGYxNmNmM2I3ZWNh
MjU4OTEwYjllZmFmNDEyNTRlMmQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9z
aGVldDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1
NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5mZjQwYzQxNmNjNjE2ZTkyYjEz
MDdiYWJiN2UzNDNiMzdlNTQ2MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiUHJl
dmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgpAQCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVy
IGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3
ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252
ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJj
ZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXgg
ZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uMjNjOTcyNDJiYjlmYjc1
M2ZhYjc0MzdhZjdlMDhhMDlkYTk2MjFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjksNyArNjksNyBAQCBib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJl
dmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUo
KSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmFwcGVuZChidWZmZXIpOworICAgIG1fb3JpZ2luYWxE
YXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2Uo
KTsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmll
d0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgICAg
IHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSk7Ci0gICAgbV9v
cmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEuZW1wdHkoKTsKICAgICBy
ZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZN
b3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3
UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
IGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIobV9vcmlnaW5hbERhdGEuZ2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3
TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVk
ZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uOWViNGJkZGYwN2NmNjE2NmE1ODYwYmFjMDc0NjI2ZDI5
NWFjYjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5j
cHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQu
aCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRG
b3JTY29wZS5oPgogCkBAIC02NSw3ICs2NCw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZp
ZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3By
ZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS5nZXQoKTsKIH0KIAog
dm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQpAQCAtMjIxLDggKzIy
MCw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZl
cnRlckNsaWVudCYgY2xpZW50KQogICAgIEFTU0VSVChtX3N0YXRlID49IFN0YXRlOjpDb252ZXJ0
aW5nKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhp
cyk7CiAKLSAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xp
ZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhp
cywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgaWYgKCFtX3ByZXZpZXdEYXRhLmlzRW1wdHko
KSAmJiBoYXNDbGllbnQoY2xpZW50KSkKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEuZ2V0KCkpOwogCiAgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAg
ICByZXR1cm47CkBAIC0yMzQsNyArMjMzLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBs
YXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgfQogCiAgICAg
QVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZpbmlzaGVkQ29udmVydGluZyk7Ci0gICAgQVNTRVJU
KCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS5p
c0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3ByZXZpZXdFcnJvci5pc051bGwoKSk7CiAgICAgY2xp
ZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KQEAgLTI1
Niw3ICsyNTUsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2aWV3RGF0YS0+YXBwZW5kKGRhdGEpOworICAgIG1f
cHJldmlld0RhdGEuYXBwZW5kKGRhdGEpOwogCiAgICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8m
IGNsaWVudCkgewogICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRh
KCp0aGlzLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi5mMTRkZTFk
OTE0YTRjYmNhMTVhNzVkNmQ1ZTVlMGRjYjRjNGE5Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MSw4ICs0Miw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
RmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3By
ZXZpZXdEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wcmV2aWV3RGF0YTsKICAgICBS
ZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmln
aW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGVhYzg0MTgzY2EzZDlh
NDY0ODc4YzZjNDhmY2UwMjIwYWRkNDc5YWUuLjE2NzIwOGNlOGRhYjcxNWRiNDVlYThkYTA5YTRi
ZDNhZDU0ZTY3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApA
QCAtNTM4LDYgKzUzOCwzNiBAQCBzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAg
IHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKK3ZvaWQg
U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkoKQoreworICAgIHJlc2V0KCk7CisgICAgZW5zdXJl
QnVmZmVyKCk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRh
a2UoKQoreworICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
QnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCit7CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0
dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKwogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1f
c2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQo
cG9zaXRpb25XaXRoaW5TZWdtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCA3ZDg3ZDM5N2EzMmRhMTFjYTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2MyLi45ODBkNzVk
ZWMyNmJiMTlmMTlkYjg3MDJiNzhjNzdkNGZhMWNjZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE3MywxOSArMTczLDYgQEAgcHVibGljOgogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KICAgICBib29sIGlzQ29u
dGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCi0jaWYgVVNFKENG
KQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Ci0jZW5kaWYKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OwpAQCAtMjQxLDYgKzIyOCwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAg
c2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVu
Z3RoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
KTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChO
U0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
cigpOworCiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFu
ZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3Qg
RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3Np
dGl0aW9uKSBjb25zdDsKQEAgLTI2NywxMSArMjY4LDYgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCi0gICAgLy8gRW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4KLSAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRo
ZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KLSAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOwotCiAgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRh
dGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKCkpOyB9CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29u
c3Q7CkBAIC0yOTgsNiArMjk0LDU3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiB9OwogCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFr
ZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hv
dWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChi
dWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSB7CisgICAgICAg
ICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDog
U2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoYnVmZmVy
KSB9KQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9
CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW1wdHkoKTsKKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVk
QnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDY4YjA4OTRjYzg1NmVmNTIyNzAzNDM3MDI5
YjI2YzViM2RkNTkyNTQuLjQ3YzEwZjk4MDIzNGM5YWJjNjA4NGVjMjEwNDU2ZjZiMTU0ODE5MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAg
ICAgYXBwZW5kKGRhdGEpOwogfQogCkBAIC02OCw3ICs2OSw2IEBAIHZvaWQgU2hhcmVkQnVmZmVy
OjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAg
IGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdt
ZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChk
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAzODI5OGExZmVhYjVkZjNh
NzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVm
ODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0lu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlk
c01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwog
ICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDUsNyArMjA1
LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRh
IGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAogICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CkBAIC0yMjYs
MTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21D
ZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAg
ICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQog
ewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0
RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHko
KSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgp
OwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8g
a2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNTEsOCArMjUxLDggQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBX
VEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9K
U09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwg
anNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVu
ZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRz
LnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNp
bmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIu
LjU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
ICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDMyYzVhNjY4YTE2YWU0OGVlZThjOWQzOGRi
ZmYxMzMwNWZkYWMwYjEuLmI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjEzLDEwICsyMTMsOCBAQCB2b2lk
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbV9idWZmZXIt
PmFwcGVuZChidWZmZXIuZ2V0KCkpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0
KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg3LDcgKzM4NSw3
IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0
b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRh
U3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBk
YXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVx
dWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdi
YjI3NDNhODI4YTFhZjA0YTc5ZWRkNzkzM2YzN2M0NTFmMzJjNTAuLjMzMGJlMjEzYzdmZWZlZGIy
Zjc4OGI1YzFlYzQ0MWFmNzE5NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdT
VF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2Rl
YnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHBy
b3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFj
dENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJ
bml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9h
ZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChl
eHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBh
eWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1f
cGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03Miwx
MCArNzYsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28g
YmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1J
ZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAg
ICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAg
ICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJl
dHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29u
c3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlw
ZSgpIGNvbnN0CiAgICAgewpAQCAtOTAsNyArOTQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2Fk
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVj
dGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBl
NTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0Li4xYzg3MWY0ZDU2NDkxYmY3
NzVlODUwMGMxNmQwYmI4OTRkNTRlNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVk
X21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGlu
Zm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAg
ICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIz
NiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRh
X2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBt
YXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAg
ICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41
ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwog
CiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNv
bXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNj
ZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1
ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigp
OwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBi
ZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVs
bGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQog
ICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsK
IAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNv
bXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7
CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
b21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBs
b2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChk
YXRhLCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9
OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAg
ICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIx
NmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2Yzhm
Yzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQx
LDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBE
YXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQot
ICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxS
ZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAg
ICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBA
IC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAg
ICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVu
dW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2Fp
dGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNl
U3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAg
CisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBz
dGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5Rmlu
aXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRp
bmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rh
c2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFz
aywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0
byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQg
dG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQg
QVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQs
IHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1l
IHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4K
ICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAg
YXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXpl
IDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVy
ID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRh
LmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVy
LCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7
ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5Q
dHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tE
YXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9u
VGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBA
QCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRh
LT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9H
aXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAo
Ynl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+
PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBi
dWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAg
aWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUs
NyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBE
YXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRh
dGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAK
ICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0
aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9p
bmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0
YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAu
Z2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAg
ICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJh
dG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQx
YzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5
M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2Ny
aXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmlu
Zy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAt
NDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICBy
ZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0
cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAg
bV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21l
bnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAg
LTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAK
IGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAm
JiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwor
ICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYm
IG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRh
KCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIt
PmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5k
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMx
MzRjNjY0Ni4uMzdmMWE0ODdmOGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
KTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAK
LSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVm
ZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBu
dWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVy
biBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5j
b3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2Rl
ZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29u
c3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggZThiYzM5NzlmOTNmNDNkZDRmZmVkM2JlMDVlNjE3NmRk
N2EzN2Q3ZS4uYTNjYWY0YTI2ZjZmMTM5NzIxZGFkNDNhZTY1M2IwYTE2YmFmYWFkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAt
MzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIK
ICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFi
bGVMb2FkZXIuaCIKQEAgLTc4LDE1ICs3NywxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJl
ZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5t
YWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShjb250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsK
LSAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewotICAgICAgICAgICAgICAgIG1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRp
Z3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAo
bV9kYXRhKQorICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEudGFrZUFzQ29udGln
dW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNE
YXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEu
YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoIW1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQg
PSB0cnVlOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjEsMTAgKzEyMCw3IEBAIHZvaWQgV29y
a2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKLQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1
ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFk
NmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLmRhYjczZmM3YjFhOTNlZDRlM2ZlYjMx
ZDY3MDk4ZDk5YjUxNzZhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRm9udExvYWRS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMzYsNyArMzcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
V29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAt
NzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250
TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGUwY2RjNzIzNGM1NGExM2RmNzBh
NjgwNWMyODFiOTQ4MDU0NWFlMjYuLjliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcw
ZTUzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNDgsNyArNDgs
NiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdHJpbmdBZGFwdG9ycy5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC0y
MDgsNyArMjA3LDcgQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJs
b2IoKQogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29y
a1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50Lgog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIs
IG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29u
dGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShG
aW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0
L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5
cGUpOwogfQpAQCAtMjE4LDkgKzIxNyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5
cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhv
dXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci50YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBY
TUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCh1bnNpZ25lZCB0aW1lb3V0KQpAQCAtNzQxLDcgKzcz
OCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBt
X3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZh
bHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnJlc2V0
KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDkg
KzEwNjIsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZl
ciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAg
ICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwor
ICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9
CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5k
ZXggMDQ4NDYyNmIyZTVkZmRkYTdjYjE2YzRmNTUyMmRlZjg0YzRhYzE4Ni4uMmQxM2JlYzM5NDY0
NDhiOWI0ZjkyNWQzMmJkODZiYTJkODAzNzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1
ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAg
LTQ1LDcgKzQ2LDYgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9y
bURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJM
U2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggNTc3ZDY1NmU2N2ZjY2E0NjQwNTBiZmQzNGRhZGMyYTM2MjVl
MjMwMS4uMGI5ZjQ5ZDM2NGMyNTk1ZTIyM2IzMTE0ZGVhZmNlZTkyYTQwMGZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtMzA2LDEwICszMDYsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAg
ICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25v
dXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1
ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5lbXB0eSgpOwog
ICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0
ZXJzOwpAQCAtNzM0LDE2ICs3MzQsMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAg
ICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5m
bykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsK
LSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1
ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGlt
ZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5n
IHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMo
KSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEucmVzZXQoKTsKIAogICAgIGlmIChtX3Jl
c3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBu
dWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBp
ZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25T
dWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90
IE1vZGlmaWVkCkBAIC04NjksMTAgKzg2OSwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAog
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVt
b3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVu
dHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBi
dWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3Nz
T3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODgwLDcgKzg4MCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
IDogYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKLSAgICAgICAg
bV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVk
RGF0YS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdU
aW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTkwOSwxMSArOTA5LDExIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkp
Ci0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9h
ZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAg
ICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBt
X2J1ZmZlcmVkRGF0YS5nZXQoKS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNl
IHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0
eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRh
dGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEs
IC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7
CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU5
LDEyICsxMjU5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkKCkKICAgICBBU1NFUlQobV9idWZmZXJlZERhdGEpOwogICAgIEFTU0VSVChtX25ldHdv
cmtMb2FkKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQorICAgIGlmICht
X2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0
YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdl
dCgpIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVy
ZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0
eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0x
Mjg5LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFz
Q2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIp
OwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hD
YWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1v
dmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3Rv
cmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAg
bV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25z
ZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlz
IH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0
d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUudGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkg
bXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1h
cHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3
Zjk3Li5jNDIzNDY1MWJhOTI4Yjk1ZDhjNmY1N2JlMjVjNWYyMTE4OTg5ZjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIApAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBt
X2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWRE
YXRhOwpAQCAtMjQwLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBt
X2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRp
bmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4
MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi5kNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNj
ZWMxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2
ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAg
aWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJl
YW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUg
PSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAg
ICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8
PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJv
ZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShh
dXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2Fj
aGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYm
IGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3Jp
Z2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUp
KTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdp
bmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwog
ICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRm
MGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCmluZGV4IGY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLmVkOGNi
NjUzZWNmZGQxMzQ3M2VlMWQyYWY1MGJhYTdhNmY3YTEwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xODcsMTAgKzE4Nyw3IEBAIGF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNT
eW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRh
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9z
eW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAg
fQogCkBAIC0yMTUsMTQgKzIxMiwxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
cjsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAoaXNTeW5jKCkpIHsK
LSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQot
ICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAorICAgIGlmIChpc1N5bmMoKSkgeworICAgICAgICBz
aXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEuc2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YSA9IHsgbV9zeW5jRGF0YS50YWtlQXNDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9Owog
ICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdU
Rk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21w
bGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklE
LCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3
Li5kZDZiNzI0MTBhZGQ0ZWY2MzFkMjgwNjllMTRhM2YyYTAwYzVjY2IyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNz
IEZyYW1lSW5mbzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTExNSw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRD
b21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBt
X3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZGM1NmQyYzY2ZWQ4NmI5NjI5NTBhMzQ4MjA4
M2UzNDU4YjMyYjUyYy4uMDhjZmJiNTUwZWRjYjU2YzU5OTdhMDQzNmMyOTY1M2VmMGU4MDNlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTQwMywxMCArNDAzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51
YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51
YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKLQotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRl
cywgbGVuZ3RoKTsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVu
Z3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDM3LDcgKzQzNCw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0
ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1F
cnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAg
ICAgICBtX21hbnVhbFN0cmVhbURhdGEucmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtOTI5LDggKzkyNiw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVy
KCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAg
ICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFs
U3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFt
RGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3Rh
dGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS5nZXQo
KTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQzLDkgKzEyNDAsOSBA
QCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAKICAgICAvLyBEZWxp
dmVyIHRoZSBkYXRhLgogICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICAgICAgYXV0
byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEudGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlk
UmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6
ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
MjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uNzMyNzQxZDk1ZWU2YTJi
NjU2ZjNkOGMwOGM4YWZmYmE3ZTJmYWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luVmlld0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25z
ZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8g
VGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBs
dWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2Mjhi
Zi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAg
ICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1f
cmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90Jikg
ewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAg
ICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNl
aXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZm
ZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwog
ICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdk
NzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1f
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2Ug
fTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwg
VW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBi
b29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQx
M2M3NTRlMTAuLjIzZDAxMTRiMGU5NDBlZTEzNDNlMjQ3OTZmM2ZjOTdhYWUzMmU5MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NSw3ICs0NCw2IEBAIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwg
bV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIg
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KIHsKIH0KIApAQCAtNjksMTMgKzY3LDEyIEBAIHZv
aWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZm
ZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7Cisg
ICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4
IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLjllNmY1MGYxYjMyNWEx
MzMzZjJjOTRjMTc0NzRjMGE3ZjUzNGU1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTQsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2Zp
bGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5k
ZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0
ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhS
RVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNU
UiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7
Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAg
IGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAg
LTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElT
dHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAv
LyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJl
YWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0
aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+
UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6
ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRh
QnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAg
ICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05h
bWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWlt
ZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjMjAzYjExMWI0YTg5Y2EyNGRmZDcyN2NjYWVhMWU4YWRkNzA3ZjA1Li4zZjJkYWRjYWMzMTVj
NTE5NTM4ODFhNjE4NWZiZTY2MmMzNWQ3MzgyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTEtMjggIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVy
QnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBiYWFl
MjdhOTk4ZmZkNjkxYzEwNmI4ODcxNTU2YmQ0ZjA1MjJjMjAwLi5hZGQyNDhiMGRlMmQyZjExYzVh
MWY1MmNhN2U4ZWZhOTQ5Mjc0YzAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtNzQsMjQgKzc0LDE2IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0g
ICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVy
LT5kYXRhKCkpOwotfQotCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOwot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpXSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBB
U1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAx
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRl
ci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBF
Q1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk5LDEwICs5MSwxMCBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0
YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hh
ciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3Ry
bGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRl
c3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRh
MikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9u
W10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRD
b25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VR
KDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0
cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTQsMTAgKzEwNiwxMCBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFy
ZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
dmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUs
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTU0LDE3ICsxNDYsNTMgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFz
c2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVz
IHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFy
Y3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIx
LmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhh
biBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEo
bGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIGF1dG8gY2xvbmUgPSBzaGFy
ZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUo
KSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUo
KSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VR
KGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBi
dWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRl
cjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsK
KworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5k
KCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVY
UEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0g
YnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUo
KSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWls
ZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOwor
ICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAg
IEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVu
dCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsg
Ly8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0
RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNO
dWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxk
ZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBA
IC0xODIsMTkgKzIxMCwyMSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEp
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKICAgICBW
ZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OwogCi0gICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShzMykpOwotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
czIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIg
PSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVE
YXRhKDApOwogICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRv
IGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOworICAg
IGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBh
dXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKICAgICBhdXRvIGdo
MiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3Vz
QnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRh
KDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7
CiAgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CkBAIC0yMDMs
NiArMjMzLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIGNo
ZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihh
YmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CiAgICAgY2hlY2tC
dWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2hp
amtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOwogICAgIEVYUEVDVF9FUShnaDEu
c2l6ZSgpLCBnaDIuc2l6ZSgpKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6
ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5z
aXplKCksICJsIik7CkBAIC0yMTEsMTYgKzI0MiwxOCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgZ2V0U29tZURhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewog
ICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRl
bnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNv
bnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29u
dGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAg
ICB9OwogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdk
JyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAot
ICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30p
KTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAn
YycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVj
dG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1
aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYics
ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9
KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0
KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwpAQCAtMjMwLDExICsyNjMs
MTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgx
MSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBi
dWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hl
eFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXIt
PmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFr
ZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAt
MjU1LDE2ICsyOTAsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsr
KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCks
IDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAg
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9F
UShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7
CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTMxOSwx
NSArMzU1LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVT
ZXBhcmF0b3IpCiAgICAgdWludDhfdCBkYXRhWzI1Nl07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCAyNTY7ICsraSkKICAgICAgICAgZGF0YVtpXSA9IGk7Ci0KICAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKGRhdGEsIDI1Nik7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkgewog
ICAgICAgICBjaGFyIGMgPSBpOwotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmYywgMSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZjLCAxKTsKICAgICB9Ci0gICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQpAQCAtMzY0LDE2ICs0MDIsMTcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxl
VGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihz
aW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKysp
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxl
bihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXpl
KCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0
aVNlZ21lbnQpCkBAIC00MTIsMTcgKzQ1MSwxOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiAgICAgfTsKICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7
IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwot
ICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsK
LSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxl
VGV4dFtpXSwgMSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxl
VGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJs
ZW4oc2ltcGxlVGV4dCk7IGkgKz0gNSkKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDUpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCmluZGV4IDg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMz
MTcuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ4LDE2ICs0OCwxNyBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1
YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAg
ICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBi
dWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0Rh
dGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsK
LSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVs
bG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5n
ZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3Js
ZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAg
IGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2Jy
aWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKQEAgLTY5LDMyICs3MCwzMiBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXIt
PmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVs
bG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVk
RGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhw
ZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAg
ICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVy
LmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRl
TlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAg
ICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7
Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOwor
ICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAg
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlv
bik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0
YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAg
ICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAg
ICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhw
ZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0Rh
dGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdF
bmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446693</attachid>
            <date>2021-12-10 02:24:36 -0800</date>
            <delta_ts>2021-12-10 03:14:41 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211210212433.patch</filename>
            <type>text/plain</type>
            <size>518975</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRmMDIyNzUwMTQ3ZDYx
Y2FmNGI4NGQ4OGVhZmY4NTRmNzBlYzRhZS4uOTJlMzVhNzE5MTllZTVhMGFlMGI5NmU1NjhkNDMy
NDk0OGMxYWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAg
YW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1
bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1h
ZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0
IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBh
cmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBB
cmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xl
IHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVu
IGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVu
IHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdl
CisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEg
Y2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8t
b3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAg
ICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2Yg
YSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAg
ICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJz
aW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFu
Y3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUg
U2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFu
ZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAg
IEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVy
YXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNo
YW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3Jhcnkg
bWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
IGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBj
aGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBp
cyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVu
bGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUg
bWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2Jz
ZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBO
ZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFk
ZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0
ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5k
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
Q0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJ
RkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhE
YXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJD
b3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFz
c2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29u
c3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6
Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhU
YWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZh
bGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhD
b3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxl
Ojpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFi
bGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRM
YW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNj
cmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERh
dGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
bkZ1bmMpOgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2Vi
Q29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZmU0OGI0YmYwYzkzMWZiZTFmYmQ1NDE3Nzc0YzVh
Y2M2MmQ0MGIwLi42YWM5NjMwOTBiMTJjMzlkNGU3YTllOWNhZDM1ZjJjOWIyMTM2YTc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAg
ICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpi
dWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVt
ZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb3B5IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyIGVycm9yIHdoZW4g
ZmFpbGluZyBpdHMgU2VydmljZVdvcmtlckZldGNoVGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGQwODQ0OWMxNDkyOTA0ZGY4ZTM0ZTkyZmMxNzVlYzhiNGI1YWZjYjguLjgxNzk1
MTIxMTNiYzY4M2Y5YmFlNDhhMWVhZWE4MjI5OWU2M2M0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAK
KyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtE
T01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNv
dXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06
CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJ
dGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFd
KToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTItMDkg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVh
ZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxl
cyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTg0MGRlMTE2NzcxOWEwNjM5YjhhMjFiYmRhZTlkODRl
ZjdkODkyYS4uOWVlOTNiOTE1MzMzZWQyOGRhYmQxNDJhMGI5NDA5OWMyNTQzMjFlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTAxICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVm
ZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAg
ICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpN
ZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAg
ICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRh
KToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3Jl
YXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDkgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAg
PGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEy
MDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFmZjgz
YzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUK
ICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAgICBh
dXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAg
ICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5n
Ojpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPiht
X2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4o
bV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4
IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5ZTIw
NGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlw
ZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1Jl
cHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6
Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2
MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2UzOTA4OTI2ZThlZjVl
OTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdl
L3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRv
IGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwg
aGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMo
W1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAg
ICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25V
c2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44
YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0
ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCBy
ZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEp
OwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0s
IFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAg
ICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi40MmZlOGZk
ZmQ0OWQxZTYwYThkY2YxMWMxMmYyZmIwM2UzNDY4OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6
OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRp
b24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0Lmdl
dCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1l
Qm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwg
cmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9
IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1v
dmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksMTUgKzI5OSwxNSBAQCB2b2lkIERPTUNhY2hl
OjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNl
Qm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAg
ICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCBy
ZXNwb25zZSwgZGF0YS50YWtlQXNDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQog
fQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYm
IHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0
LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VC
b2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkg
bXV0YWJsZSB7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAog
ICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZm
ZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5n
ZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBy
ZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNl
LnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNl
LCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygp
KSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAg
IHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92
ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZv
aWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChh
dXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEt
PmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBk
YXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJv
bWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXND
b250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0
YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQy
NzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcy
LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBj
aGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdp
dGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVl
c3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhj
ZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0g
Y2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVz
aW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3
ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYy
ZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9u
c2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VC
b2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBb
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAg
ICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFi
bGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxw
dHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6
UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJv
ZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEp
IC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0g
ICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
LT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAg
fSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICBy
ZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFi
MGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJm
YTE1NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9n
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1
ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRj
aChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhh
c1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNv
bnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+Owor
dXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9y
bURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xh
dGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVz
cG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJk
NTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5
L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkg
fTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAg
IGlmICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpT
T046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVy
LnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0Fy
cmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3
M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgy
OTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEs
NyArNjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEs
IGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAg
IGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7
CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5k
YXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBC
dWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5
VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVk
aWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0g
c3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZm
ZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZm
ZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBjMDQ3MzEyODRmNjc2YWE1YzUwZjk0
MGJlNGY2NjE3MjVkOGJmOGFjLi5kNjViMjdiZmU4YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3MmQ2
MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0y
MzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVy
JiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5
KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVX
aXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJ
ZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhl
ciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6
Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJl
dHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0
byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNy
ZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0
LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBG
ZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9y
bURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6
OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJv
ZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VS
TFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFM
OjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCks
IFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1
cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZl
ckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVm
ZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVM
ZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRk
cmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmlu
ZGV4IGJhZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQz
ZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8
Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFr
ZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYg
ZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIzOTdh
YzU1OTNiNDRiNTM5ZDNlNjcxZTQzY2U2ZGIuLmZhZGU2M2U0YmU0OWY0ZDE5MzlkMWRiOGFlMTMy
MTgxYWQwYTlhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9k
eUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21p
c2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygp
OwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBp
ZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0g
UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBl
LCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9
IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBl
LCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6
IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBm
b3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8g
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQor
ICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250
ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwyNiAr
MzI2LDI0IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVu
ZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAg
ICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEp
OwogfQogCi1SZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0FycmF5QnVmZmVyKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0
YWtlRGF0YSgpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgcmV0dXJuIEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBtX2J1ZmZlci50YWtlKCk7Cit9CiAKLSAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9i
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOwot
ICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKK1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1MSw5ICszNTEs
NyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6OmV4
Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZmZXItPmV4dHJh
Y3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZNb3ZlKGRhdGEp
LCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVm
ZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzYwLDggQEAgU3RyaW5n
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0g
ICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZUFz
Q29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRG
cm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0
OwogfQogCkBAIC0zODMsMTAgKzM4MSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0
Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxG
ZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3Vy
Y2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1
ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZSht
X2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYx
MjY0M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRl
YzZkOGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsg
fQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwog
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0
ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAg
ICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBS
ZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdl
NzNlOTAwZDNmODQ4ZjY0ZjIuLmI5MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZj
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29u
c3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAg
LTQ0MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNl
RGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAg
IHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUo
Zm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAg
IHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RG
TW92ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKaW5kZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4uMzc0
OGM4ZjU5MjcyOTMwYmJjMmQxNjY2YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7
CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURh
dGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAg
ICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRo
UGFkZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4u
NjEzN2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMw
Ni4uODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRG
aWxlU2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0
ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6
OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIg
PSBidWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRl
Y29kZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsK
ICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFj
OTMxMmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xh
c3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAg
YXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgy
LDEzIEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0
IElEQktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJz
aW9uKTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBl
bmQsIElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNj
Nzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1
MTAxMTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXpl
SURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNl
cmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6
ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEz
NjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZv
JiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9z
cWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7
CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRo
KCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNy
ZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24i
X3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEz
ODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEg
bm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQs
NyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFz
SW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0g
ZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3Rv
cmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVj
b3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmpl
Y3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBk
YXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBi
ZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygp
KQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNl
ZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5j
ZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBp
biBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9u
TW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYy
LDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9i
amVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIx
MjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2Uu
bG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0
YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7
CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11
bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVL
ZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlw
ZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERC
OjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUw
OCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAg
IGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1p
bmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2Vy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZv
ciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFu
Z2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBl
cktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9z
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4
NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJ
REJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSht
X2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJl
bnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1
cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2Io
Y3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChr
ZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5j
YzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1
ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1Jh
dywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlz
UmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1
ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYg
KG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZm
NjgwM2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVz
c2FnZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBb
Jl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNl
aXZlUmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNo
YW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdh
ZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjI3YTZkNzAzMzRjYTMyMDZhOTRlOTE5OTQzMzYz
N2M0YTMwNTJlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1f
c291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVz
ZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2Up
IHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVS
TChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jl
c291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRo
aXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9k
ZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsK
LSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAK
ICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlk
YXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9
IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxs
KCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21v
ZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZUFzQ29udGlndW91cygpLmdldCgpLCByZXNv
dXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3Vy
Y2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2Rh
YTNlMTQ4NzdhMGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3
YjA2MzJiZDFlNmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBw
cml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9k
ZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7
CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVk
N2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQs
NyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUo
V2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7
CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0g
ICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUs
IG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7
CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5k
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVD
b3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRh
MWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApA
QCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VP
blN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwo
Z2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBb
Jl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
LmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYz
MTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01
MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFt
X2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5z
T25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNP
bmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0g
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09u
bHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCks
IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2Ny
aXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAg
IHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAg
cmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9j
YWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0g
bV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVy
OworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIg
bV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNo
IHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggYWViNGI2Y2M1MGExMjZjOTgzMGQ2
MDZhYmIwYzNhOGM2OWE5YzMxZC4uM2M1ZWE5Yjg5YTljOWU5MDM3MGI5OGRmNTI4NTYzMDY0OTkw
MDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcs
NyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25j
YXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Zm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYg
KG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVu
dEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Mg
PSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAt
MTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJh
c2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1t
ZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVm
ZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0
YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgy
NjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4
NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
Rm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRT
ZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVk
ZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcg
KzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2Vs
ZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBm
b3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTVi
OWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5
YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1
LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudElu
Zm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxT
dHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRk
aXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1
ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBl
NjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNz
IENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0
dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21w
b3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFj
ZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29s
IGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5m
byBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4
LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBh
ZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7
CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwog
ICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5
YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMz
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3
YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEs
MTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5m
b250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBh
cmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmli
dXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNL
ZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcg
cmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0
YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllF
UyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZv
cm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZv
cm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6
Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwg
VmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBv
dXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVt
ZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgp
LT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRh
KTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYg
KGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRh
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9h
cmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNl
bGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAg
cGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9u
SW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFh
cmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJl
c2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBz
ZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQg
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3
IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAg
IHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3Ro
KSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0
aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVu
Z3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1
ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAg
Qk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFT
b3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0g
cmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8
IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAg
ICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQ
cmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVU
eXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlF
UzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4g
ZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBp
ZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVu
YW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAg
ICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAg
IGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgp
LCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVt
ZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFk
YTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0y
ODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNo
bWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0
cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAg
ICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50
PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiBy
ZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0
YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291
cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAg
ICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAt
MzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAg
ICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291
cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyAr
MzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudElu
c2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxN
YXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZy
b21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5v
bk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRG
OChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNo
aXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQs
IE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlz
dFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93
TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9j
dW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJm
cmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAg
ICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgo
c3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1
YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1l
TWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkg
fTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hp
dmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1
aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZy
YWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0g
Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAg
aWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBA
IGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhm
cmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5
YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIy
NzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBh
c3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBj
bGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1h
Z2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJ
bldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICgh
YXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXBy
ZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTog
VGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkg
YmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3
cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0
aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlz
IG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVm
NDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMx
ZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
QEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJz
ZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50
cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3Vs
dC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3Vs
dC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVu
dERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkp
OworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRl
IG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpA
QCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZU
UERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAg
c3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3Rh
dGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwog
ICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1v
cmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhl
CiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhl
biAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmI5OTc2
YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5OWI0ZTdjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzMsNyArMzMsNiBA
QAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAg
bV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLnNp
emUoKTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhh
c0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNv
bnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7Cit9CisKIHNpemVf
dCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOwor
ICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlmICgh
bV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBw
ZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsK
IAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0
byBidWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIHNpemVfdCBk
YXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAg
ICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVm
ZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9k
YXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMo
KSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdk
YTU5MDhkNy4uMDRiMzU1MDczMzdjOGI4NjFiMzgzZDg4MTNkYzAzZjJhMzg5MTcyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEw
MywxMCArMTA0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRS
ZXNvdXJjZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0ZTNkYWYxYWRlNDcz
MTg3OTViYWJhZjg1MmMyMzYyYjM5OTQ5YmRkLi5lNThiY2MyYWE3ZjgxNGQ5NzdmZjdkOGYyNjIz
YzM3ZWNiYTdjMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBA
IGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAg
ICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVy
KHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFt
ZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAq
cmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNhZDk1
OWE4ZTZmMmMyYmY3MGUxYWVlMTQyODc0NTlkMDY2MTIuLmEzYzYwYzNiNjk2YTgzZDgzMWQ4OTdm
ODE2N2EzMmJlMjM3MzcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJv
b2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
ZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+
ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8g
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRl
eHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRh
dGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1
YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
QEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJj
ZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJl
c291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3
NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVm
bGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVm
ZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2Fk
ZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVu
dEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwg
ZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGNm
NmNjZjJiZDA4OTI1MGM2MDNmZDA0Yjc0YzNlYzhjMGU0OWM0ZjEuLmZkZmQwZWFhZjNhNTAxOGQ5
MDBiYTFhNmQ3YTQ4YWU1NzMyZjM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcApAQCAtMTYwNSwxMSArMTYwNSwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjpt
YXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2
ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1h
aW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJj
aGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRh
ID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNl
dE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1l
LT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgp
LCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFy
Y2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURl
bGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNl
ZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Myw3ICsyMjUzLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVM
b2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXpl
KCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3Rh
cnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4
IGY3ZjNmMzg0NGYxODQ0N2JlOGRkN2I4MmQzYTQ0MzUwMDIyMTY3NjIuLmEwMGUxNGE3M2IwZTk0
NmEwYTM3NTdiOTMxN2NiMGY0MmQ0ZDlmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
OwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBz
dHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7
CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
QWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFy
Y2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZl
RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNj
aGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICNlbmRpZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8
QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJj
aGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJj
aGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVu
dEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2Vi
N2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBA
IC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5n
Lm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50
aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGQ2ODhkODBhOWJk
ODg4ZDI5YWI5MDZlNjQ2NzA2MDE3Y2ZiNjhhNGYuLjExZjY3MDJkMWY2OGZkZWJhZTRhZWEzNTI2
NmUwMmY4NDE3ZGUyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRT
ZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZp
bmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRl
c0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9p
ZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3Vs
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDZj
NWVlM2E5YjMxYWU4Yjg0ZGI5MjBiNjZlYmYyMTRmMjZlYzlhZDYuLmU5MWM4ZjYwZDNhOThhOWVi
OGRhM2NlNmI0NGZhZDJiYzNlYjU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMzEwNiw3ICszMTA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9
KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZl
dGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0
SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1f
ZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6
OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGlj
eSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE1NCw3ICszMTU0
LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRl
cigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVx
dWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdS
ZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
ICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFs
bGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAg
ICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VM
b2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAo
aXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZjNDZj
YWUwMjBlMmYzYWMuLjljM2Y3NGM0MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3MTk4MmU5MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENh
Y2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
IGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01X
cmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAt
NzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNz
IENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRp
b24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJy
ZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5l
d0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93
bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxv
cHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCog
PSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3Rk
OjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLmI4NDkxYWIzMGU0OGM3
MzE2Yjg4ODFiYmQzOWNmMDRhMWM0ZjZiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmLmg+CkBAIC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0
YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICBtX2RlZmVycmVk
UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE3LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9s
aWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVk
IGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwyNCArMzMzLDI0IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9s
aWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0
YVBheWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAg
ICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9y
ZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOworCiAg
ICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsK
KyAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgICAgICBtX3Jlc291
cmNlRGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKworY29uc3QgU2hhcmVkQnVmZmVyKiBS
ZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNv
dXJjZURhdGEuZ2V0KCkuZ2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVz
b3VyY2VEYXRhKCkKIHsKICAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5jbGVhcigpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5lbXB0eSgpOwogfQogCiBi
b29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAgLTU3MSw3
ICs1NzAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGgg
dG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBl
biBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9j
YWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxs
YmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRl
cigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0
PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0
aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJi
ZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjM3ZDY2N2Q4Mzc2ZDAwZGE3ODk0
NjJkY2NlMWFkYjMzNjg4OWZkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdl
dCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAg
ICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMjgsNyBAQCBwcml2YXRlOgogCiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmln
aW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Jlc291cmNlRGF0
YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJk
ZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4
ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0
aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5
ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQot
ICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAq
bV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNs
ZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jl
c3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVz
cG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFk
YzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3
OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAg
ICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25z
ZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5p
ZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsK
ICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3Jp
dGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFz
b24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2Vk
LiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmlu
ZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2Qz
MjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2
ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291
cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
RnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAg
Ly8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFy
ZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3Vy
ZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBh
dGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJj
ZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNo
cm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAg
IGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVz
b3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1h
eWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1
bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRp
Y2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUg
b3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChi
dXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBn
ZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBA
IC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9u
Q2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAgICAg
cmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBD
bGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNo
YXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNv
dXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUy
Y2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0
MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNh
Y2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYg
QEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7
CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5
YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9y
RXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29s
IG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291
cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
KTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRD
YWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1
ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1
MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVz
b3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVy
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0
YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43YjJm
YjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAg
bV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsK
KyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNj
NDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMz
ZDFmYzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBy
ZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChkYXRhLCBwYXRo
KSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291
cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1LDcgKzgxNCw3IEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2Us
IHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBhdGgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50LT5l
eGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRyeVN0YXRlbWVudC52
YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgLy8gRGlkIHdlIHN1
Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/IElmIHNvLAogICAg
IC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5
IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1w
dHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJj
ZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMTEzLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25D
YWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdl
SUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5J
bnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
YWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAg
IGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVu
dC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLmY1
ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05
MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0
YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0
YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VE
YXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXks
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8g
UmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJj
ZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0
eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNl
IHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2Up
IHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0
eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAg
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lX
ZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkp
OwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwx
MyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qg
b2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0
byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYm
IENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJ
RCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVz
b3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNy
ZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVz
cG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRh
dGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNv
bnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVm
PExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCks
IGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3Qp
IHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZl
ciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAh
PSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQg
Q0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBs
aXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBA
QCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3Qg
Q0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3Vy
Y2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYg
KCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2Vi
QXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0
cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENG
RGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0
KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJj
aGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90
IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAg
ICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAg
ICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBA
IC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlv
bmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAg
ICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYs
NyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9u
c2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8g
aGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUs
NyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJv
bVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0
KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhl
IGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8K
ICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1l
c2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJh
bWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0
aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNo
aXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi45
OTNjMmI4ZTgzMGRjM2Q3NWM1YWQzMTliYmFmZTlkZjQ1YzUwMTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTE2
Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9m
IGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5
IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0g
c3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcu
ZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
aHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMp
IHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCBy
ZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5n
ID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5h
cHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAg
IG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250
ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAg
YXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFM
ZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRl
bnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVk
RGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAg
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6
ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6
ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFz
ZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0g
dHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCBy
ZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1I
VE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNp
emVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAg
IGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29k
ZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0
aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAg
ICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBs
aW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7
CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAg
ICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIp
LnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEo
KSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICBy
ZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2Rj
YWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjY2NWU2OWNhNzcxNGU0NDlhZmU0Y2E2OGE3MjQx
NTIzMGQxMDliMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5k
T2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAg
ICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgp
OwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVy
LmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0x
NTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNl
TmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19F
UlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RG
TW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAg
ICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hh
cnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFk
ZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFz
Y2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikg
aW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgp
LCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgp
LmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250
ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewog
ICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQg
d2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFBy
aW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAg
ICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250
ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpA
QCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250
ZW50LnRha2VBc0NvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAg
ICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250
ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNv
bnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAg
ICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
YmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToK
LSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29u
dGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFy
dC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29u
dGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVs
YXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBt
ZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0g
dG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDRm
MjI4ZThkMDM4OWI4YjhjYjdmNDE0ODZmZGI3ODFjOWJmNjViZDIuLjk3Y2Q0ZGZmZDE4OGMyODEx
MWZkNjlhYzBkYmEzMzhhNjczMzM1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0
MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAg
IG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAg
IG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1
NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVj
NzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3Mo
Y29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQq
ID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAg
dm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRj
YzZhMGJjZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMw
NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHls
ZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAg
ICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0
aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVp
dGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRT
dHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQg
a2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAo
ZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0
IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNr
Tm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAg
Ly8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQg
aW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRk
ZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQw
ZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0K
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURl
Y29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY5
YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAg
ICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0
aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExv
YWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUs
NyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0
CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAK
LWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRh
KQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFl
cnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3
cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRl
cywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsg
JmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcg
PSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZm
ZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rp
b24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNo
ZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2Fj
aGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5m
b250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
CmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjE1NGRiOGNi
YWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
dGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBi
b29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRh
RnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQm
KTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBs
YXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9s
ZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wg
ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3Vy
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRl
OgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03NCw3
ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTlj
MTE0OWJkYTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdl
ZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
ICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAg
IG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApA
QCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJ
bWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xh
c3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2Zm
SW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1h
Z2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5l
ZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8
ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAo
IWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVz
b3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRh
VG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0
RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7
CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2Vs
ZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0
byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAgRW5j
b2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAo
bV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4
IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLmQ1MTNlMTZjYmE1YTk3
MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdl
SGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFz
UmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAK
LSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAg
ICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNv
ZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAg
IHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92
ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5S
ZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJu
YWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBT
aGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgz
OTU2MmYuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5n
ZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBT
a2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2Un
bGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1f
aW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7
CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShk
YXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9p
bkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3lu
Y2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRz
IHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVy
aW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVm
ZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAg
ICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgp
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFs
RGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXgg
ODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMw
OWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3Jl
SFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4g
bV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3Qg
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRG
aW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNlNDQ2ZmI5MTc0ZmY2
ODIwMDAxMTRhNzJhM2UyYTAxMGU3ODEwODguLjU1Njk2NDNjZDVlNjg5N2EzYzU4ZmI0NjIzNDU0
NmYwNmRhMGFhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNr
Tm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50
LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJp
bmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0
Niw3ICszNDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MTUsNyArOTE1
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVw
bGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNv
dXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1
ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI5LDggKzky
OSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRC
dWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdC
dWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VT
aGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZj
MDM1YmMyNzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSAr
MTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVz
b3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNv
dXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJl
c291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
Z2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1Nl
bnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQog
CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAj
ZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRX
aXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5l
ZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2Fk
ZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRo
ZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4u
YjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiAr
NTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZH
RG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
Y3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRo
ZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50Ojpj
cmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1f
ZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdl
YWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2Ey
MjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThl
OThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlw
dERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7
CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAg
ICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
KTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAg
fQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVy
dFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1f
Y29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9u
dC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwog
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2IwNjI4
NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0
ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXli
ZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21T
dHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRl
ZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9u
dDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBT
VkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxj
b25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNTRlNjc2Y2U1MGIwOTZiNTYwN2MzYzAzMGY3ZDlhY2Mw
NWM0ZmE4OC4uMWRmNWM0YjE3ZWVlYmNiNGU0YmJmZTRhZjg4OTFhZGVjYjZhYjk2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5
NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBt
X3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYw
NzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMyYzdl
NjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIy
OTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uNTQyNjZkZDkwODE5YzM0ZTkx
NTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJh
Y2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6
OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9
IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAg
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlz
KTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRk
Li5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAg
IHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4
MjYxNWQzNDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNv
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9
CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgp
LCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRh
dGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmco
ZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFj
ZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVm
YWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1MmNm
ZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdhMDdj
YjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYp
OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVk
QnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Cisg
ICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2Vk
U2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
Zik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2b2lk
IHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlc291
cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdk
ZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBhIHJl
c291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3QuCiBz
dGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRC
dWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hl
ZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0
b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0YSA9
IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxl
QmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9u
c2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBfQ0ZD
YWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hlZFJl
c3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAotdm9p
ZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVy
JiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKIHsK
ICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZv
clJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJlc291
cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5mZjQwYzQx
NmNjNjE2ZTkyYjEzMDdiYWJiN2UzNDNiMzdlNTQ2MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgpAQCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQ
cmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2
YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZl
cnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1f
Y2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRl
cj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9D
b252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uMjNj
OTcyNDJiYjlmYjc1M2ZhYjc0MzdhZjdlMDhhMDlkYTk2MjFmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjksNyArNjksNyBA
QCBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExPRyhOZXR3b3Jr
LCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAlbGQuIiwg
YnVmZmVyLnNpemUoKSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmFwcGVuZChidWZmZXIpOworICAg
IG1fb3JpZ2luYWxEYXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVN
YWluUmVzb3VyY2UoKTsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xv
YWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25z
ZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEuZW1w
dHkoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0Nv
bnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZl
cnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNv
dXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29u
dmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEuZ2V0KCkuZ2V0KCkpOwogfQogCiBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1
YWIxMzVhYTYwMzMzY2YuLmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4
X3Q7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDJjZDE5YTExMGIyYjg2OTIzZjQ2MzEyOTlkYTM1NTA2M2M4YmI1MTEu
LjljOTAwYmU4ZjRjNTIxMTQ3NTY2MzAxOTExYmI5M2IwY2UzN2E2YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTk1NSw3ICsxOTU1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlz
aGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUg
bG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hl
bgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcAppbmRleCAxNjVhYTgwNThhMDM5MGI0NTE1NzlhMTQ3NjFiZDg2Nzk0
OTM2NDMzLi4wMWUxNmRkOThmNGRmMGNlYjIxZGY5MDhkMWY0MGM2MjRhYWU0YzI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQg
UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVz
KCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUlu
Y2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1
Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNv
ZGUodGV4dCwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgIG1f
cmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFBB
TDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJM
cy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyAr
MjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5v
bmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBBTDo6VGV4dEVuY29kaW5nIHRleHRFbmNv
ZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0
ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUo
Y3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkg
fSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRv
U3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICAg
ICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGlt
YWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdU
Rk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVz
cG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVz
b3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgK
aW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZjYmU3Yjhk
YmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNl
IHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVj
dG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZi
Nzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcx
ZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBA
IHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVO
YW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5k
ZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0
YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFy
ZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2Vw
dGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewot
ICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwx
NSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxv
YWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5k
aW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAg
ICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUu
ZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RG
TW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1f
ZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6
ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRs
ZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUz
NTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQz
OGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
ZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgK
QEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29k
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBk
b3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0
YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0
OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBA
QCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBj
bGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0
IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdl
YkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0
Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRh
SW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9y
PFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNs
aWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRP
cmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBp
bWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRp
ZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNp
ZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3Ry
aW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVu
dERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50
RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBh
ZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVz
dWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmlu
Z0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFk
VHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hl
Y2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5
NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAK
QEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21E
YXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNo
YXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJl
bnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1l
T3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVi
b2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29k
ZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcg
QEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0
ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIu
ZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMu
LmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAg
LTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9y
aWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3Rv
bURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYp
OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2
ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4
NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVi
b2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlv
bkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFt
ZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJj
ZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVy
RGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9v
bCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0
OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1h
dDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0
cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2
ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3
LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBh
c3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZv
Owogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6
CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFz
dGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYg
ZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0
ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJp
bmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNi
MzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uOWViNGJkZGYwN2NmNjE2NmE1
ODYwYmFjMDc0NjI2ZDI5NWFjYjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIlByZXZpZXdD
b252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCIK
LSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02NSw3ICs2NCw3IEBAIGNvbnN0IFJlc291
cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0
YS5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2Uo
KQpAQCAtMjIxLDggKzIyMCw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGll
bnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIEFTU0VSVChtX3N0YXRlID49
IFN0YXRlOjpDb252ZXJ0aW5nKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZygqdGhpcyk7CiAKLSAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAm
JiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgaWYgKCFtX3ByZXZp
ZXdEYXRhLmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKKyAgICAgICAgY2xpZW50LnBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEuZ2V0KCkp
OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChj
bGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQsNyArMjMzLDcgQEAgdm9pZCBQcmV2aWV3
Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQp
CiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZpbmlzaGVkQ29udmVydGlu
Zyk7Ci0gICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkpOworICAgIEFTU0VSVCgh
bV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3ByZXZpZXdFcnJvci5pc051
bGwoKSk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0
aGlzKTsKIH0KQEAgLTI1Niw3ICsyNTUsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVn
YXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIGlmIChkYXRh
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2aWV3RGF0YS0+YXBwZW5k
KGRhdGEpOworICAgIG1fcHJldmlld0RhdGEuYXBwZW5kKGRhdGEpOwogCiAgICAgaXRlcmF0ZUNs
aWVudHMoWyZdKGF1dG8mIGNsaWVudCkgewogICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRl
ckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRj
ZjhjZTJiLi5mMTRkZTFkOTE0YTRjYmNhMTVhNzVkNmQ1ZTVlMGRjYjRjNGE5Zjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CkBAIC00MSw4ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBz
dHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTE3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wcmV2
aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6
VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2Vk
QXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJi
Li5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudElu
Zm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0
cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRk
aXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5
YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVkLi42YmJlMGI5MzFmN2ZlZjhkMjQ4YzU5YjBiY2U5Zjhm
MTJjODM1Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAg
LTM3LDMxICszNyw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewotICAgIGFwcGVuZChkYXRhLCBzaXpl
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOwogfQogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsK
K30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKK30KKworUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkgPSBk
ZWZhdWx0OworCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVE
YXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5z
aXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBhcHBl
bmQoV1RGTW92ZShkYXRhKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNp
ZiBVU0UoR1NUUkVBTUVSKQpAQCAtNzMsMjYgKzk1LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzEwOSwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZl
Y3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpj
b21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1
ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5j
ZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwg
TyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5l
ZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUo
KSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAg
ICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25z
dF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXpl
KCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAg
ICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9z
aXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VS
VChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17
Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERh
dGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25z
dApAQCAtMjAyLDEwICsxOTQsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6
OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9z
ZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVu
dHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVu
dHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVu
dC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXpl
ICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMTkgKzIwNSwxOSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRh
LCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXpl
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9
IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NF
UlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250
aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CiB9CkBAIC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3Np
emU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21l
bnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykK
LSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2lu
UG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1f
c2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50
LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVy
biBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVm
ZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21l
bnRzOwpAQCAtMzUzLDEyICszNDAsNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAgIH0K
IH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAotewotICAgIGF1
dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgp
OwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5
Q29uc2lzdGVudCgpIGNvbnN0CiB7CkBAIC0zNzIsNDEgKzM1MywxMiBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9F
TkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEo
KSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAg
IFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1
cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0
Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHTElCKQotICAgICAgICBb
XShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCks
IG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtdKGNv
bnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgotICAgICAgICBbXShjb25zdCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKLSAgICAgICAgW10o
Y29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBwcm92
aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1f
aW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7Ci19
Ci0KICNpZiAhVVNFKENGKQogdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRT
b29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNo
YXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKLX0KLQogYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKIHsK
ICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCkBAIC00NTYsNyArNDA4LDExOCBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6
ZSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQor
eworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKwor
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZm
ZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAg
IG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1
ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNv
bnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAg
bV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAg
OiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGlu
ZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5
VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwg
bWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNl
Z21lbnQtPmRhdGEoKTsKK30KKworV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB7IGRhdGEoKSwg
c2l6ZSgpIH0gfTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworI2lm
IFVTRShDRikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR0xJQikKK1JlZjxEYXRh
U2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30K
KyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21l
bnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5k
aWYKKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6
OmNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERh
dGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0
IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAorI2lmIFVTRShDRikKKyAgICAgICAg
W10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBVU0Uo
R0xJQikKKyAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRf
ZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVS
KQorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCisjZW5kaWYKKyAgICAg
ICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7
IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CisgICAgKTsKKyAgICByZXR1cm4gc3RkOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOworfQorCitib29sIERhdGFTZWdtZW50Ojpj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsK
K30KKworc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1Mzgs
NjAgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAg
IHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpKTsKK30KKworU2hhcmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3Bl
cmF0b3I9KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVy
KSB7CisgICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmluaXRpYWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAg
QVNTRVJUKCFtX2J1ZmZlcik7CisgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVy
ZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGlt
bXV0YWJsZQorICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYo
KSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSkgeworICAgICAgICBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhcHBlbmQoYnVmZmVyKTsK
K30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSgpCit7Cisg
ICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKSA6IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Cit9CisKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXJCdWlsZGVyOjp0YWtlQXNDb250aWd1b3VzKCkKK3sKKyAgICByZXR1cm4gdGFrZSgpLT5t
YWtlQ29udGlndW91cygpOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICByZXR1cm4g
dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCitTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDog
bV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00ODksMjYgKzYw
NSwxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3Qg
U2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAg
ICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAg
ICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAg
IFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNo
YXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAg
LTUzNCw3ICs2NDAsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2
NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uM2IwOTUzZjhjNGNiYWVmYTU4ZjkwYWM3MjliOGM5
NmFhYzZlN2MzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
NjIsMTQ2ICs2MywxMjUgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFT
ZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBi
eSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9j
YXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIp
OyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0
YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVN
YXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJl
ZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhf
dD4mJik7CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVh
dGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJy
YXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAq
KTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0
YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFJldGFpblB0cjxDRkRhdGFSZWY+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5
dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlmCi0KICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFw
cGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmKTsKICNlbmRpZgotICAg
IC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29w
aWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRl
cmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAv
LyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFj
ZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1
aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1
ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAg
IC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEg
ZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZl
cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVu
ZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZl
Y3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlk
ZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBG
dW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYpOwogCi0gICAgLy8gRGF0YSB3cmFw
cGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBi
ZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJp
bmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFT
ZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAg
cHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAg
ZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAg
IGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0Uo
R0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5
dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0
YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7
IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29u
c3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXpl
OwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBEYXRhU2Vn
bWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNpdCBEYXRh
U2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
cHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBj
b25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAg
ICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdS
ZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAg
ICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0
YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9y
PHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwg
c2l6ZSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworCisjaWYgVVNFKEZPVU5E
QVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0
YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAg
ICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1F
UikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1
ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwK
LSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWlu
dDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhf
dD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAg
IC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFr
ZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBu
b3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVu
dGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIXNpemUoKTsgfQorICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250aWd1b3VzOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVm
ZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0
c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVz
aW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAog
ICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2lu
UG9zaXRpb247CkBAIC0yMTAsNTUgKzE5MCwxNTMgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFT
ZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERh
dGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
c2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNP
bmVTZWdtZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsgfQogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtl
IE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdt
ZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVu
ZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhf
dD4mJiBkYXRhKSB7IGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAg
ICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQo
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Cisg
ICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZP
VU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2Vu
ZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJl
Zik7CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZl
Y3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xlYXIoKTsKIAorICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBh
IFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVk
QnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwog
ICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihz
aXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAg
c2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2Vn
bWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25z
aXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNv
bnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXpl
b2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJl
ZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VG
aWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9F
WFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNp
ZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRl
Q0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9S
VCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKworY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikpOyB9CisK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
KHN0ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oU2hhcmVkQnVm
ZmVyQnVpbGRlciYmKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
QnVpbGRlciYgb3BlcmF0b3I9KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDog
MDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9p
ZCBlbXB0eSgpIHsgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB0YWtlQXNDb250aWd1b3VzKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOworCitwcml2YXRlOgor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShSZWY8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUJ1ZmZlcigpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjYsMjMg
KzM0NCwyNCBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERh
dGEoKQogICAgIHJldHVybiBjb3B5RGF0YSgpOwogfQogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXJEYXRhVmlldyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJs
aWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKLSAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBw
b3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3Rk
OjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBV
U0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50
OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBz
aXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcw
ZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxp
Y2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAg
ICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFy
dHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJ
bmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNB
cnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsu
Z2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3
b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMu
aGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3
YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBA
IC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAgICAg
bV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0YSA9
IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1f
cm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAw
LCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4uZmFiNjZm
Y2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9p
ZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
ZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRl
eCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi40N2MxMGY5ODAyMzRj
OWFiYzYwODRlYzIxMDQ1NmY2YjE1NDgxOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zNSwyMyArMzUsMjAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsK
KyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRhdGEpOwogfQogCiAvLyBV
c2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1l
bnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZv
ciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSkg
ewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFS
ZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAg
ICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0o
YXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCks
IHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNm
RGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBz
aXplKCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OSw2IEBAIHZvaWQgU2hhcmVkQnVmZmVy
OjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZElu
dG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSAr
PSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0
MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNG
b3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZm
ZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkco
U2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtb
TlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdl
UmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVz
ZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlmCiAKQEAgLTMx
Niw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2Vj
dXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29u
c3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1
ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVy
Q29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4u
OTgwNTQ3YjhjYzRjNGE4OGNhMTU1Y2JiMTc4MjBhZjg1ZTJkYzk2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDEx
ICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZh
Y2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRl
Z2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2Vi
Q29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwog
ICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxv
YwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0
YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKQEAgLTk1LDI3ICs5NSwyNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBy
ZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
YnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJp
bmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAg
IHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAg
QVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdCht
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
IHsKICAgICBpZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZXNvdXJjZURhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI1
LDcgQEAgUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXko
KSBjb25zdAogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNl
Z21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJD
b3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3Np
dGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGVi
OWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5
YmY5NjE3NzgwM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpT
T046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVu
dHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9Owor
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJh
ZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25z
dAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFw
OwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9
IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9
IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQg
cHNzaFNpemUgPSAwOwpAQCAtMTk2LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5
SWRzTWFwLmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgog
ICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7Cisg
ICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRh
LmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250
aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwog
CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5
SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdU
Rk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMu
dGFrZSgpOwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdl
Yk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlk
IFdlYk0gaW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBv
YmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBK
U09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5n
IHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBv
ZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5j
b2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4K
LSAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0
RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3Ry
aW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwg
V1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRv
SlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBl
bmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlk
cy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5Ojpz
aW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5
YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5l
cmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29k
ZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBl
OTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1
ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcw
ZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNj
N2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBL
ZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3Qo
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5j
b2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6
OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2su
bGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJp
YW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVm
UHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50Lmdl
dCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJi
NGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2
YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkg
ZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhl
OWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0
OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5
dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCks
IHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+
KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihk
YXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
Pih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBp
ZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcg
KzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgp
LCBzaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRl
bnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA0ZTk0OWRmYWI5NzY1YTJhMDdj
NDg3OGFiZWUxMDNmYmFmMjFmNTcwLi4xMjU4NjJlNzJhOWY5ZDg2OTZjZTE2Y2FjZmY2YmY3MjA3
YjQ1Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAt
NjMsNyArNjMsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0
eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllcikpOwogfQogCi1SZWY8Rm9udD4gRm9u
dDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4g
b3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYykKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKIHsKICAgICBib29sIHdy
YXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDc0NDIwMDRmMDBiNWRiYTI3ZjNjMzJl
NjY3YjM2YmNjZjc4NTE0Y2QuLjRjNWM4YTM5NjMzYTA2NDc4OThiNTJhMzk0NTI1ZmIxYWZiMTJl
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTgyLDcgKzgy
LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVmlzaWJpbGl0eSA6IGJvb2wgeyBWaXNpYmxl
LCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNsYXNzIE9yaWVudGF0aW9uRmFsbGJhY2sgOiBib29s
IHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0
aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRo
ZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFj
ZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0
YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0
LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNs
YXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2Vz
IHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBs
YXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENy
ZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAg
ICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAg
U3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8
Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVj
ZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiAr
MzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVm
PE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEs
IFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
b2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9
CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkp
CiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92
ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1
ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBj
MTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+
LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3Jl
YXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4s
IFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwor
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWlt
ZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0g
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIg
PDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBA
QCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
IXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0
ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUp
LCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RG
TW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1
NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4MGZlMzUx
ZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFk
VUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZl
ci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVl
KSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZh
bHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7
CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUs
NyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3Rv
ciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJl
ID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3
ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50
KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4m
IHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4
Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwg
VmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNm
bnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29s
IGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0
V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQp
KTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3
ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJj
YWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1i
b29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52
YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8g
aWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUg
YW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZU
b1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBj
b252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFu
ZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8v
IGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVm
ZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdp
bGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBj
NjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3
ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5n
PiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZm
ZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJi
ZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBw
YXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJl
dHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZm
ZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9
CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFp
blB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUg
PT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0
aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRp
YWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwog
I2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChp
bml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBh
dXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBp
bml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNp
emUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9u
IGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBv
cHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2Vu
ZGlmCkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAg
YXV0byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBb
XSAoYXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAg
IH0pOwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVk
U2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7
IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1
cm47CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAg
ICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0
IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VD
bGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNl
RGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAg
ICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAg
ICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250
ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRl
bnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25z
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0
LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6
OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFp
clBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6
Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2Ug
QVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0
LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAo
TlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lv
bkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFw
cElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0g
QCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0
IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwog
ICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29u
dGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBw
SWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9y
YWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIK
IAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNl
cnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
IAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAo
a2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29u
dGVudEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAg
IFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVx
dWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZp
ZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9u
czpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFi
bGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVz
dERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsx
MTUzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+
c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0
YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0Rh
dGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERh
dGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25k
OwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0
cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+
c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRT
dHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVz
LCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hP
YmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3Vy
cmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMg
PSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAg
IGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
ICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRL
ZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVy
OmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltr
ZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVx
dWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVT
RURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlE
ID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250
ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkg
bXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29u
CiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBj
ZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFs
dWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlE
cy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50
SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRL
ZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVy
OmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVx
dWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0
YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYu
LmE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBA
IEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29y
ZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50
OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRh
LmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRl
RGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRl
Ok5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1f
bG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVF
VUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hy
b25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9p
ZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEo
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2Fk
ZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFS
ZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAg
aWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCmluZGV4IDFhNDNjN2RlZDI3NmUyYzNlNWY2ZjQzYTM4ZjA1MTEyNzIwNmQwYTMuLmFi
ZDgxZTVmM2MxZWE1MGU0MjJlMmZhM2MyYmExZDE4Y2ZlMzFhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcg
KzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdt
ZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21l
bnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8
fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2Vy
IGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJz
ZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZj
Mjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMx
MjI5NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFp
bGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAg
IHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZv
aWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0
YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRl
eCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5iNmUyMzdiNWRmNWRk
ZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsK
IAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkKQEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6
OmxvYWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7
CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0yMjgsNyArMjI1LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBA
IC0yMzgsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRv
IHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERl
Y29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJl
c291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsK
LSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+
ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4OCw3ICszODUsNyBA
QCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9w
TG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0
YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0YVJlcXVl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2VlODI5MWI5
MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2MTMxN2MwZDExNmZlNmEzZjA0
YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsNiArMzEsNyBA
QCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlv
bkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRh
OwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250X2ZhY2Vf
dD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJl
Y2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1Yzk5YTdmNjhiNTQ4OWM4NThh
M2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVy
dGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVk
QnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3Qg
cG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZl
ciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
OwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAg
ICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAg
ICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJj
ZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNv
ZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
ICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUg
c2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdl
LgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGlu
c2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMK
ICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VT
b3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEo
KS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YSht
X25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRh
KCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0
YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAg
IGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGln
dW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRp
b24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNo
YXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRo
ZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAg
ICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxi
YWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tz
ID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZl
clJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRl
ciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgp
LCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+
IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGln
dW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBD
R0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0
YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUuLmZmNzdi
NTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBA
IC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7
Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFkb3B0Q0Yo
Q0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcwOWNlMTU5YzQ5
NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3
Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAg
Ym9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhl
ci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0YTQ5ZjExZTRj
OGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1YmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24sIHZvaWQq
LCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBhdXRvKiBidWZm
ZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAgICAgICAgYnVm
ZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYyNTdhYWM5YS4u
Y2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBAQCBSZXRh
aW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0eUNoZWNr
KCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQoKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAg
ICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29weVRhYmxl
KGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0gICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAgIHJldHVy
biBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1YTU2YTI3
OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4NWEzNDM4NjE5ZGIwZGYyMzMw
MWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVU
eXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlh
bGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2
NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcg
QEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAg
ICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBw
bGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2Nh
bGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxv
Y2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogICAg
IGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVfTUFU
SCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggY2RlZDRhNjBiNTBiYmJhZWE1Yjg0
NWJkZWZiYjY4NmZlMjUyNTkzMy4uYjc0OWZjMTU4ZGZhYmVmZDNiZDhjNDU0OThiYTBhNWIyOTNi
ZjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyNCw5ICs0MjQsOSBAQCBW
ZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogICAg
IHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IEdzdE1h
cHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQogewot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQ
bHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApp
bmRleCBkODJjZDNlMThlY2UwNDc2MWQ2YWQ0ZWMyZDUyZTJhZDlkYzM4NDY4Li4yYjYwNTkyMzli
YjdmMGQ4ZmJlNDU2MDI2ZTU4MmEzZmM2ZjA5YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5o
CkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBp
bmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9y
LCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVu
bWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApp
bmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li4yOWIzYTUwMWQ4
ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29kZWREYXRhU3RhdHVzIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNv
bnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9
IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAgICAg
IG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNy
ZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4oKTsK
ICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGNiYjQ5ZDE3MzYyZjcxMmQyNWRmZTgyNGRm
YzFjMzgxYTVkYTAyOTMuLjNhMjAxNTc4MDE0ODgxMGFjZTU0ZGY3YjA4ZTRkZjdmZDUyMzdkNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC0zNjY5LDcgKzM2NjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAgIEdT
VF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBldmVu
dCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgpLmRh
dGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAgICAg
R1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgp
KTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGxh
eWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29udGFp
bmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
CmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmNhYTUwZWQ1
YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsKICAgICBib29s
IGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBzc2g7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBzdGF0aWMg
dm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFy
KiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50ZXIgdXNl
ckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBU
ZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3NpemUgdGV4dExl
bmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0ZXh0TGVu
Z3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICB1c2VyRGF0
YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAg
ICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIHZvaWQgbWFy
a3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0
aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1
cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBw
YXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlm
ICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4
NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMzMwYmUyMTNjN2ZlZmVkYjJmNzg4
YjVjMWVjNDQxYWY3MTk0OWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5oCkBAIC01MCwxMyArNTAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NB
VF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdf
Y2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVj
dGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAg
IGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXRE
YXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5k
KHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEo
Y29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQog
ICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJh
Y3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5
bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9w
YXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEw
ICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBi
ZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlk
OwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAg
ICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAg
IGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9w
YXlsb2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25z
dCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBl
KCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArOTAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlk
NDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRm
b3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBz
aXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlw
dGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikK
K3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRh
dGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0Njli
MDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50
SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdh
OS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50
SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50
ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxs
b2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdl
Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNw
cAppbmRleCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIz
ZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
byA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3Jy
ZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVj
dGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJl
Y3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0
YWxpY0NvcnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3Qo
aXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0
aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4
dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJu
SW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9u
SW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0
OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFz
c2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAg
ICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFy
dHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4m
IGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBh
cnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2Nv
dW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50
OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50
Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFu
dHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBj
b25zdAorICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUz
LDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAg
ICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlw
aDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJs
eVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBh
cnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0
ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5
cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0
KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292
ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVy
ZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQg
aG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAg
Y29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0
CisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24o
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBp
c1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZf
dCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09m
ZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJs
ZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25z
dGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQg
PSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIx
Miw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8q
IG1hdGhHbHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29u
c3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
b2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4
MDM1Y2YuLjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEz
Myw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250
UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0
cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBj
ODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFj
OGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3
Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNk
ZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkp
IDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkg
PDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIsIHNpemVfdCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0
IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5z
aXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4
Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJs
ZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90
ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5j
bHVkZWQgYXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGlj
IGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2
b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQq
IHZhbGlkYXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHJldHVybiBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0
IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBv
ZmZzZXQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRl
T2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zm
c2V0KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpA
QCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUg
ewogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDog
VGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlw
aCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3Zl
cmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292
ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRl
eCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0
KSB7CiAgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2Jm
OTJkMWEuLjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRl
cjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0
YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0
dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGlj
aCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQK
LWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJp
bmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCBy
ZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBT
dHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewog
ICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0
IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihm
b250RGF0YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25z
dCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8
dWluCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0
YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lKQorUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBp
ZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1Yjdl
NzQ4NTJjMTllMzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250
TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNj
MDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZk
MjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3Zl
cmFnZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFn
ZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFi
bGUqIGNvdmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3Qg
eyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9m
ZnNldCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJz
dGl0dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsK
ICAgICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29t
ZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWlj
YWxseS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJz
dGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1
YlRhYmxlID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
JnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3Ry
dWN0IExvb2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3Vw
Q291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29u
c3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBp
bmRleCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4
ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkK
QEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9v
a3VwTGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3Qg
TG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25z
KGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3Ry
dWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBm
ZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUo
dWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZl
YXR1cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1
cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVh
dHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1
cmVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0
dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1
LDcgQEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07
CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJl
VGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFn
IGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0
dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUg
OiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAg
ICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVs
dExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFu
Z1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50
XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2Ugewog
ICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07
CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2Ny
aXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50Owog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEw
LDcgKzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRl
ZmF1bHRTY3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYg
KCFjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEs
NyArMzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRP
ZmZzZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZh
dWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEg
KzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlz
dE9mZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+
KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVh
dHVyZUxpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAg
IGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3Vw
TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZl
YXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0
ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBj
b25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYg
KCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJh
c2UgewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAg
ICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0
dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25z
dCBGZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcg
KzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4g
ZmVhdHVyZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25z
KEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5
cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRh
YmxlID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAg
IGlmICghdmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdT
VUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNl
V2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0
YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBs
YXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBP
cGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5
cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVW
ZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBP
cGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyBy
ZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZo
ZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIp
OwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZv
aWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRp
Y2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5
cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpH
U1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRp
Y2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRk
ODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3
ODNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5h
bWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9u
dE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0g
cmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4u
ZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBD
R0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRp
b247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1
Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFu
dFNldHRpbmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9u
dFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVj
MzA0NDkzMTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAg
c3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1l
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnRO
YW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURh
dGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRl
OTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFD
YWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxh
dGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIp
IGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAK
aW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNi
ODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNw
cApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEo
R0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9y
ZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdE
SU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBz
aXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRh
YmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVj
dChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25E
YXRhLmgKaW5kZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2Uz
YjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2Nh
blNtYXJ0UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBs
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0
Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1v
dmUoYnVmZmVyKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBj
b25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURh
dGEoKSBjb25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0
b21EYXRhKCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1h
Z2U+IG1faW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4
NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVy
cm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewot
ICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRz
IGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9k
YXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBp
ZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3Vv
dXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAg
ICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5
RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uMWM4NzFm
NGQ1NjQ5MWJmNzc1ZTg1MDBjMTZkMGJiODk0ZDU0ZTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIo
anBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzEx
XSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2Zp
bGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5m
bykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIg
bWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0
KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5k
YXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUp
LCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7
CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7Cisg
ICAgcmV0dXJuIGJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2
LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFn
ZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUx
ZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNh
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYg
VVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAy
ZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5MWQz
NjM1YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlw
ZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewog
ICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlw
ZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAg
QVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5z
aXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBl
cy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsK
IAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0
byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRl
TlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5n
ID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNl
dFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51
bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5n
ID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNl
dFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0K
IApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
CiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNl
dE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
OworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVn
aXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1f
cGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2Up
CiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VS
VCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRv
IHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAg
ICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JN
SU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRv
IGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAq
KXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQ
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAg
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9h
cmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5n
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NU
WUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVk
Q3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0g
b3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBl
cygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02
MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRp
b25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQ
cmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3Vz
dG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0
byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3Jl
YXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9
IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0
ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFn
IGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJv
dmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJk
IHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRh
dGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcg
YGRyYWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcg
Kiljb2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZToo
TlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAg
ICAgaWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFz
dGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcs
NyArNzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2Fy
ZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVj
dEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2
MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNj
MzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3Im
IGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVi
b2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRG
aWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJs
LnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3Jh
cHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcg
cmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpv
cHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAt
MzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0
JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5
cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAg
IHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAg
dGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5
MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlh
NTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3
ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3Ry
aW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xp
ZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0
YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCld
OworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50
RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsK
IAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0
b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bh
c3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVh
ZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsK
ICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0
ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4Zjll
MWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBs
YXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5
cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpw
YXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0
KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhb
ZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJP
ZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYg
bwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlm
IChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8g
ZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBp
ZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlw
ZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5
cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxh
dGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAg
ICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpA
QCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRX
cml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEg
PSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYg
KGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9h
cmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAg
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUo
cGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVE
YXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0
ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBl
XTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJu
IGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZl
TUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3Jt
VHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAg
IE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFp
dGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlm
IChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRv
IG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+
IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURh
dGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAg
IGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIx
MWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1
MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0
YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7
CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERl
c2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUz
ZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEz
NywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAg
Ly8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRh
dGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRo
b3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRl
ckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIp
KQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1
LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRh
KCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxv
Y2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEt
PmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURh
dGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRh
ID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEu
dGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDBjOTA4
MTdjNGU5YjQxZjM0OWE0MWFlNjRiNzE5MDZiOTUxZWI4OWEuLjYyMzY0ZDcxM2M5NWE5Zjg0M2M3
ZDI5YzAxZjBkZWI5YWU2ZDE3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6
bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkg
Y29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAg
IGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0
YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXgg
ZTlkMzQ0M2Y4YjVjNjgyNDQ2NjU2YzE4ODA1NjU3Y2MyOWQyZDgzNy4uMTA4MjgxMTMxZjgzZTk5
MzcwZmM1MDk3ODMzY2M1MGVlOGFkYmRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgc3RydWN0IEVuY29kZWRGaWxlRGF0YTsKQEAgLTIz
Miw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4m
IGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1No
YXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJl
dHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3
YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUx
ODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGll
bnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRp
ZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IGY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5
MjUzNjk0YWEuLjg4ZGVkZmE0NWMzZjRjNDNhMzgxNTI4MGRhNWE0MWUyNjk3NWI3MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6
ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAgICAgIAogICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6ZGlkUmVjZWl2ZURhdGEoaGFuZGxlPSVwKSAoJXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGhhbmRs
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgp
LT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CiAgICAgfTsKICAgICAKICAgICBpZiAobV9t
ZXNzYWdlUXVldWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2
ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZj
ODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEs
OCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERh
dGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0g
ICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJl
c3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAg
ICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAg
LTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAg
ICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51
bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0
aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VT
dGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAK
KwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0
ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
ZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFz
a0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNr
LCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRv
IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0
byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBB
VkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwg
d2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUg
d2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgog
ICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBh
dXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
PCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIg
PSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEu
Z2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIs
IHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsg
KnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0
cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0Rh
dGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25U
YXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBA
IHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEt
PnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dp
dmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChi
eXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49
IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1
ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBp
ZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3
ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERh
dGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0
YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAog
ICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2lu
ZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRh
Lm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5n
ZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
IGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0
b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcw
MWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJl
c291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVm
PFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8
fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVP
cGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3Zl
KGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0
YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxl
Z2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vz
c2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5
MTMzZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBh
cnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRs
ZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5h
cHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5k
KGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAg
d2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUg
ZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5n
IGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5k
YXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0g
bm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3Rh
cnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAg
IG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0
YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhl
IGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAg
bV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsK
ICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRl
eCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5
YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBA
QCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVI
YW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rv
d25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMz
YTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5
NjdkZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5
LDggKzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNl
aXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9y
Q2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpz
aW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdU
Rk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZv
aWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVz
dCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggMGZiNDUwMDcyZmEx
MDQyMmY2YTlmZTQzMmMzODFkM2QxOTYxM2U2MC4uM2NhMjA4MjJjMDMxOGE1NDkxMTE4Njc1ZDI3
Yjg3OGRkMTgzZmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgv
U2hhcmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDJiMzEyODU4NzAzMDNk
MDliMDI0NTM2NWQ2MWFiODkxMTExZGFhYjUuLmFhY2MzN2NkMjg3MjgwZjFiZTAwODc5NzM1MWE5
OGJmOGJjMWJlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTk3OCw4ICs5NzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJ
bWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29u
dGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgp
KQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAK
QEAgLTEwMzAsOCArMTAzMCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29u
dGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8v
IFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVu
OwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAo
ZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxl
KHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDAp
OworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2Vl
ZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0
ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRC
dWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3
MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAo
ZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBHZXRG
aWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJy
b3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0
ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwg
Ynl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkK
LSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9
ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9IGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRi
YjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJi
MGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxB
U0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIg
PSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9u
c2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgp
KS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygi
dmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyAr
MjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6
OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVT
dHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAg
IFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3Vj
Y2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0
YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vu
c2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSku
c3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhy
ZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxp
dCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxp
ZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2
NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4
YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsK
LSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYs
MTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3Jp
cHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlw
dEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1
ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5n
ZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkp
KTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYw
LDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3Jp
cHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAg
IHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVy
LT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJu
IG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIu
Z2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAog
dm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBp
ZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0
ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRh
KCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVm
ZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4z
N2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlw
dEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZm
ZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9
CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1
ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBu
dWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
IW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVy
IHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRh
aW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25z
dCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4K
IH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRC
dWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcAppbmRleCA0MzNkOWUxYTQ1YzI5ODg1NDJiMDVlNzRiNDcxN2E3NzA1NzI4YmI2Li4y
YTcxMjU0NzE4ZWFlZGY1MWE0NDdlY2U2MmM0Y2Q3MTZiYjA3NWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0zNCw3ICszNCw2
IEBACiAjaW5jbHVkZSAiRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJXT0ZGRmlsZUZvcm1hdC5oIgogI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
IgpAQCAtNzgsOSArNzcsMTMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNM
b2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsK
LSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhKQorICAgICAgICAg
ICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEudGFrZUFzQ29udGlndW91cygpOworICAgICAgICBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGNvbnRpZ3Vv
dXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAg
IH0KQEAgLTExNywxMCArMTIwLDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmICht
X2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAg
ICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgbV9kYXRhLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRh
MWU4NjNjNy4uZGFiNzNmYzdiMWE5M2VkNGUzZmViMzFkNjcwOThkOTliNTE3NmEzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRlck9wdGlvbnMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zNiw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3Ry
dWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAg
ICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxw
dHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5k
ZXggOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRlNTI0MC4uMGJjZDk3NmVkYTlk
NGE3ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGll
bnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJv
ZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsm
XSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZl
Rm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3Rk
OjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1
YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4
ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1
ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlz
YWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkg
ZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6
TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6
Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggZTBjZGM3MjM0YzU0YTEzZGY3MGE2ODA1YzI4MWI5NDgwNTQ1YWUy
Ni4uOWIxMTJiOWRiMmNkODRkMDMyZjU5ZGFmYThlOGUzOGUwNzBlNTNmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3ku
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlN0cmluZ0FkYXB0b3JzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5o
IgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTIwOCw3ICsyMDcsNyBAQCBSZWY8
QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8gRklYTUU6
IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBz
ZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7CiAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0g
c3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3RE
YXRhKCk7CisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlKCktPmV4
dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5v
cm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6Olllcykp
OyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBp
bmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOSAr
MjE3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlw
ZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAg
IGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVs
bHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2VBc0Fy
cmF5QnVmZmVyKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRU
aW1lb3V0KHVuc2lnbmVkIHRpbWVvdXQpCkBAIC03NDEsNyArNzM4LDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9
IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25z
ZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxw
dHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIucmVzZXQoKTsKICAgICBtX3Jlc3BvbnNl
Q2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOSArMTA2Miw3IEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4p
CiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRh
LCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAg
ICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIAogICAgIGlmICghbV9lcnJv
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAwNDg0NjI2YjJlNWRmZGRh
N2NiMTZjNGY1NTIyZGVmODRjNGFjMTg2Li4yZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJh
MmQ4MDM3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJl
SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDUsNyArNDYsNiBAQCBjbGFz
cyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2Rl
cjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0y
MzcsNyArMjM3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25z
ZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsK
IAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZm
OTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4
MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApA
QCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4
bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAg
ICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFt
ZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4u
ZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApA
QCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkp
CiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJl
NTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNv
cmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBy
ZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxl
IHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRy
OworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8q
IHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRh
LT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBl
NTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi4wYjlmNDlkMzY0YzI1OTVl
MjIzYjMxMTRkZWFmY2VlOTJhNDAwZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBA
IHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VC
dWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9u
c2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29y
a0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwog
CkBAIC0zMDYsMTAgKzMwNiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBj
b25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygp
IHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhLmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3Qp
KQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmVtcHR5KCk7CiAgICAg
fQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7
CkBAIC03MzQsMTYgKzczNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAm
JiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQog
ICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVy
aW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwog
ICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVS
ZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291
bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYm
IG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxs
cHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9u
c2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxw
dHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGlmICht
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2Nl
ZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9k
aWZpZWQKQEAgLTg2OSwxMCArODY5LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkg
Z3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmll
cyBpbiB0aGUgY2FjaGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAvIDg7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZl
ci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmln
aW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CkBAIC04ODAsNyArODgwLDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXAKICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBi
dWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1
ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIG1fYnVmZmVyZWREYXRh
LmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVy
SWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTA5LDExICs5MDksMTEgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAg
ICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0
YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVm
ZmVyZWREYXRhLmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2Ugewot
ICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBz
aXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEp
OworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEuZ2V0KCksIC0xKTsKICAg
ICAgICAgfQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmlu
aXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KQEAgLTEyNTksMTIg
KzEyNTksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmly
ZWQoKQogICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xv
YWQpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fYnVm
ZmVyZWREYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0s
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEuZ2V0KCkg
fSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7
CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyODks
MTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNo
ZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRy
eVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0g
ICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+
Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hl
KCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZSht
X3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFz
Q2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2Nh
Y2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBX
VEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0o
YXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3Jr
TG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRh
YmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVk
Qm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcu
LmM0MjM0NjUxYmE5MjhiOTVkOGM2ZjU3YmUyNWM1ZjIxMTg5ODlmM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFF
bmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVm
ZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7
CkBAIC0yNDAsNyArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVm
ZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsK
KyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1f
Y2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0Nv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5k
ZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uM2E1NTE3NDkwMWQ0
Nzg5OWMxYzAyZDBkMjdhODg4YTdjYmRhNWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAg
ICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggMWU3OGMyY2VmYTE1NDg0MTA0MDYwZjNiMTlk
YzUwZTZjYjhmMWViNC4uNWM0YzhlNzFkNGRkMzgzNWMxZDU3MjJiODFjYzdiNTk4NDBlOGFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VD
YWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
aW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgy
NzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVy
LT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZm
ZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5k
ZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApp
bmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5
NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNv
bnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRh
IGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBS
ZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3Rv
cmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hl
OjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3Jk
KTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3Jk
LnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiBy
ZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5
ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0g
ICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0g
bV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEo
KSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3Rp
bWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkz
Li5kNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRS
ZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlm
IChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAK
ICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVk
ZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQ
cmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAg
Y29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0Owot
ICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXpl
KCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9
IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAg
ICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlm
IChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkg
JiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2Nh
Y2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0p
OwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qg
c3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJs
ZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9j
YWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3Bv
bnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBs
ZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2
MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2Ew
OWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcg
Kzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNw
b25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2Nh
Y2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAKaW5kZXggZTY3ZTA1YmE4NDc4YTU4MTgzMGUzOTcwNjhiMzJmYjA4ZDkxYjdlZC4u
ZTY1YjJlYTgzOGIwODE4M2M5NmI4MzEyMGIxZmVmMTU2YmI4YzA5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRS
ZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9
CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1f
Y3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVz
KCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0g
YWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQo
KSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNj
MGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjI5ZjcxZDdlNmRjNzUwZWYxOWYzMjg2MmM4
OWI3MTg1ZTAzYmY4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVm
ZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7
IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2Rm
MTgzMmU5Zi4uZTljZDg3MmY4ZDQ0ZjE1ZTBlZTM3YzczNDkyYjJkODAyYWM5MDcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMzksMTgg
KzM5LDE5IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1
ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0g
ICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1
ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDog
MDsgfQpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAK
IHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlh
ZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRN
ZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6
ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+
ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmlu
ZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4
NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0
aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVt
UGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNp
ZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNo
aXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEw
ZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29u
c3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRh
KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJj
ZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0
YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hp
dmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2
MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAg
LTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZv
bnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAg
Ly8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRl
ciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBh
dXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9u
dEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7
CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUlu
Q29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVl
ZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2My
YmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAg
IFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7
CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVk
QnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZj
Y2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsMTUg
KzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIo
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2Vs
ZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBb
c2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxl
UmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1
YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25z
dDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5k
IGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
CiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJl
ZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJk
NDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
aXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVm
ZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQ
dHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFy
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNB
bmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29u
c3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAg
QVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBl
czsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBl
bmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVy
LCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRh
dGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERl
Y29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVj
b2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7
CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEu
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7
CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dp
dGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVy
IDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRy
KCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0
LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1l
bnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIs
IGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAo
YnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2
YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRh
LnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsy
OTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdU
Rk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsg
V1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisK
K3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0z
MDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4g
ZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNl
bmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIo
ZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjky
YTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUy
MWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xv
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xh
c3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3
NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZm
ODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
CkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3Vt
ZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hh
cmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBj
YW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJD
b3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2
ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRD
b2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZv
cm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMK
ICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxw
dHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBz
dGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAg
ICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0
YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3
NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5
ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1
MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiAr
MzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNs
b3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFiOWRkYzdhNDYxOGZl
ZDQyMmVjMzg5NzQwMzUuLjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3MTlhMWE2MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXRE
YXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlv
bjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0
RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJv
b2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXRE
YXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1
bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5j
dGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4
IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4
YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1
OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2Zp
bGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0
byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEw
IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1l
bnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBj
b250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVk
UmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBp
ZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYTcyZDBkMmM5MmQ3ZGVkNDVlMGU0MTBi
NDFkY2I4ZmI0ZGE1YWU4NS4uM2ZiZGYxNDcxZWZmOWE1MzZkYzk5MzNhYTQ0YTA5NmI5NGVkMmJi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3Qg
V2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQp
CiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hp
Z2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxp
Z2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBp
bWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hs
aWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwog
CiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkK
ICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdo
bGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGln
aGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKQEAgLTIyMjEsNyArMjIyMSw3IEBAIC0gKHZvaWQpX3Jl
cXVlc3RSZXNvdXJjZTooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShOU0RhCiB7CiAgICAgX3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CiAgICAgICAgIGlm
IChlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihi
dWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5p
bCk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
LCBuaWwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIG5pbCwgZXJyb3IubnNFcnJv
cigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIw
Yjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQ
b2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBp
bnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlv
bl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAo
bGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0
aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihs
ZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2Rj
OWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2
MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcg
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkYmVhMmU5NzI3NzRlMjY5NjVi
MmRiYjJhNzM1ZS4uYmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRjZDZjNzdiOGY2ZGE1ZjViOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5k
QXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgaWYgKG5vRXJyICE9IEF1ZGlv
Q29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZyZWdpc3RyYXRpb25zKSB8fCAhcmVn
aXN0cmF0aW9ucykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMg
PSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRp
b25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgewogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVnaXN0
cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMu
Z2V0KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdpc3RyYXRpb25EYXRhIH0p
LCAwKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSB9KSwgMCk7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJj
YWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2
LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0
ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0
QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUo
KV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBm
b3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0
NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVS
TFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3Rl
Ym9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEg
PSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBh
cmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hp
dmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJv
YXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
W3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2Ut
PmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1h
Z2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAq
KXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0
NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBl
ZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBk
YXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9t
aXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9t
aXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0lt
bWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
U3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpE
T01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAq
ZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlm
IChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIu
Z2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5n
cmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFs
KTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpH
cmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXgg
YzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUxNjY2NmM1YTMxMTcy
Yzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1
c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFn
ZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
Ym9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNv
cmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
YWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVu
dGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDlh
ODE2ZmRiMzE4M2ExOWI2NzllODc3MDNhMGY0NDBlNWFiOTA5MDMuLjcyM2NmZTViNzI3NjE1ZjZl
ZDE4YjVmMjVkMWU4MGRiNzMzMWY5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xMTgxLDcgKzExODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJ
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVt
ZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9v
bCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lk
IGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFk
ZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5lZDhjYjY1M2VjZmRkMTM0NzNlZTFkMmFmNTBiYWE3
YTZmN2ExMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcApAQCAtMTg3LDEwICsxODcsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1f
ZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5
bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE1LDE0ICsyMTIsMTEgQEAg
YXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6V2Fp
dGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRy
dWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3lu
Y0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKKyAgICBpZiAoaXNTeW5jKCkp
IHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLnNpemUoKTsKKyAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEudGFrZUFzQ29udGlndW91cygpLT5kYXRh
KCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9u
c2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7
CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hl
bWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVz
b3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBh
NDdmMmMxMzA4NTI2Ny4uZGQ2YjcyNDEwYWRkNGVmNjMxZDI4MDY5ZTE0YTNmMmEwMGM1Y2NiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtNDMsNyAr
NDMsNiBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2
YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0
NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVj
dGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJy
YXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2
ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVv
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFy
aW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0
ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdi
YzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9j
b250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJ
SW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5V
TEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNzVjYjc1MTJjY2E2NzQ3NGE1NTQyNGFkM2Ey
OGNmNmM3ZWUwYWNkNS4uNGM4NjI3M2MzZmFjYWEwYTY0MmU5Zjc1YzRkNmJkZjQxYTUzYTI0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC0zODQyLDcgKzM4NDIsNyBAQCAtIChCT09MKWNhblBlcmZvcm1B
Y3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAg
ICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFs
bEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAg
ICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
YnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjYyNSw3ICs2NjI1LDcgQEAgc3Rh
dGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigp
ICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1OTYs
NyArNzU5Niw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRB
c3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9T
VFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQg
Zm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVE
YXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShV
SUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVz
ID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hh
cmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVj
dCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGY4
MGM4MjQ5ZGE0NjdiOTQyMDM1ZTQ2MDZlODk5YmNiNjRlZGJjNmMuLmJhOTk1ZmI5ZTA2YmY4ZGRh
ZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdl
UHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KaW5kZXggZWFmN2UwNzlhZTQxZjdhZGUzZmM4Y2FmNWQ4ODFmMmNhMWJhMjM3NC4uMWIz
ZmU4Njg5ZjE3OTU3NTA2NjczMDQxYjFlNmQxYjczNjZkMTM5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAg
U3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdl
UHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRl
OWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNz
IE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1
Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3Rl
Ym9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bh
c3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1U
d29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Jiwg
Y29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFi
MDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVh
MGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0
LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0lu
RWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXIt
Pl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIo
V2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjQy
LDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRvIGRh
dGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJvYXJk
RGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07
CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAgICAg
ICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAgICAg
IHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
QnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7
CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5
MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAg
LTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2ls
bFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50
LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShy
YW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7
CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAg
V0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
UGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+
c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50
c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVz
KCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYz
NDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0
cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rp
b24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAg
dm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5h
bDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1l
bnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9v
bCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQx
NDY4Yy4uYTM0ZTIxMmQwN2FmMmZmNTczZTFhOGEzNDBlYzFkM2ZjZWI0MmExYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVx
dWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRC
dWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5j
ZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERh
dGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7
CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwot
ICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5z
aWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBy
ZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRp
Z3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRo
b3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNp
emUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAg
fQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJ
KHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9B
UEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygp
LmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwv
bWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAx
N2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhl
NWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChm
aWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNp
emUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgp
KTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZp
bGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQyY2MzZWIyODgw
Y2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4uOThhNmUyZTdiNTdlNTIzMThmNDJjOGNkMTdlNGYw
ZGUwNTA5NDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODEsNyArMjgxLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRs
ZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNh
YWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIy
MGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29y
a1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdl
J3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVy
Y2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkp
KSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50
ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciks
IGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxv
YWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGRjNTZkMmM2NmVkODZiOTYy
OTUwYTM0ODIwODNlMzQ1OGIzMmI1MmMuLjA4Y2ZiYjU1MGVkY2I1NmM1OTk3YTA0MzZjMjk2NTNl
ZjBlODAzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCkBAIC00MDMsMTAgKzQwMyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9h
ZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAg
aWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3Rh
dGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBp
ZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5h
cHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5hcHBlbmQo
Ynl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzNyw3ICs0MzQs
NyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFs
U3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFu
dWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLnJlc2V0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjYsOCBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRh
Y2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4p
IHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRl
ID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21h
bnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVh
bFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVh
bURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0Myw5
ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAg
ICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0g
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisg
ICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFu
dWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNl
Z21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAg
ICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6
OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLjczMjc0
MWQ5NWVlNmEyYjY1NmYzZDhjMDhjOGFmZmJhN2UyZmFmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMjUyLDcgKzI1Myw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3Ry
ZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVy
cm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0
YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fbWFudWFsU3RyZWFtRGF0YTsK
IAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hv
dWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5
NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93
YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlm
ICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURh
dGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9u
c2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAg
ICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAg
c3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDgg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51
bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmlu
aXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3Qg
U2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRG
aW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIw
NzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3
NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBA
IHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAg
ICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpG
b3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURh
dGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1
MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBt
X3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBh
c3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4
IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5
ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcg
Kzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0
ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJS
ZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4u
OTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWlu
UmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJl
c291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92
aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5j
ZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXgg
ZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uNmYzZjU2NmM1MmYxZTM5
ZGVmMDBiNWYzMTlmZWJhZTY2NzhhMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3Rl
Ym9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBG
aXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1
ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92
ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5
cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxs
YmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNv
bnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMzI0LDcg
KzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6
U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5k
bGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVu
dGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIw
Li4zZmYzNTU4MDhlMWQ2ZWIyYWUzMmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1
ZmQxM2M3NTRlMTAuLjc5NTYyNmIwNDg2MjIwZjlhMzA5ZGIyZmI3MjVlMDRiMjIyNTRhM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NSw3ICs0NCw2IEBAIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAg
ICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZm
ZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KIHsKIH0KIApAQCAtNTcsMTAgKzU1LDEwIEBA
IHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2J1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHdlYlBhZ2UtPmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUobV9maWxlTmFtZSwgbV91dGkpOwogCi0gICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIp
OworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQpAQCAtNjksMTMgKzY3LDEyIEBAIHZvaWQgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNs
ZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUobV9idWZmZXIudGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1
ZmZlci5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVl
c3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2Vl
YzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li4yN2FkMWM1MjAyNjYwMWU3YzQ5ZWQx
ODc3N2VlYWZmNjBjZDE5YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAg
ICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDlj
MmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25z
ZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVm
ZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2Vi
RHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsK
ICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1
dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEg
KilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAg
ICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVm
ZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1v
cnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQy
N2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAt
MzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJl
c291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVy
biBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBX
ZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA2MGY4NGE0NWMzODAz
NWYyZGNlOTI1Y2JlZTJjMzE5OTJlNjQwMzJmLi4zY2I1MDYyNGJmMGQ3YTgxMTAyZjdjODU0NGIz
NDFkYjk2NjI3YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBD
b21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9h
cmRUeXBlKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2
ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBi
ZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRh
UmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0lt
YWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICop
bWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYx
NmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3Rl
QWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBj
MmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBi
MjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyAr
NDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQg
V2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1l
bnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
aW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRh
OWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2
NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2
NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3
ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9y
VHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjli
ZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3
YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEK
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Q
cml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFt
YWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVz
b3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWlu
UmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0
MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hp
dmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlz
cGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAq
cGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVy
XS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEg
PSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURh
dGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhE
YXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2Uo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjVi
MTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0
IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRl
c3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmpl
Y3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAg
ICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRX
aXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAo
IWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBiMDhjMWQyMWNmOWYw
NGU2MTFiNTk1ZWRlM2NiNjVhMTdjNDk5NzllLi5kM2I1MTZjNDFhOTBlN2ZhNTdkYWQ5ODkxZDQ5
YTMzOTE0OGEzNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29k
ZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0
cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWlt
ZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAg
TlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2Up
IHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7
CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVU
eXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291
cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1l
TmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVz
cG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5Oldl
YlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkg
Zm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVy
bCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpt
aW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1l
S2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9w
cml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwK
QEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBl
bmNvZGluZyA9IFBBTDo6V2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVk
QnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2Rl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEo
KSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1
cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRh
ID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0
YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0
YzZmMDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1l
bW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
TWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFz
c0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgp
CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09N
UHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhk
ZjYxMjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFj
MTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICsz
NSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVi
bGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0
cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBw
cHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAg
ICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4u
YzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFy
Y2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICgh
Y2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdl
ZWZjMS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6Ondp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUK
IHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFl
NjllZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVk
aXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwog
CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsg
fQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYy
YTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVh
NWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0x
NzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29w
dF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4g
RV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2Uo
bV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0
dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQg
V2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1l
bnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApp
bmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJh
MTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAog
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBC
U1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkK
IHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAg
ICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpA
QCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8g
SVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAg
IC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8g
cmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0
IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRh
LT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5z
aXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
TmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBt
aW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2Zh
N2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0
OGY5YmZjZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJj
ZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitX
ZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVh
bSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIw
NjU0MThmMjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2Qx
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBA
QAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBhOGU4NzFiMGFmMWEzNGIwNTcyMDAxYjNjYTM3OWQ2MGI5MTA1ZTI5Li44MjJkMDBj
NmZlNDEzYjcxODcyZjFlZTlmNjhmMjM5ZTM5YzRmOWUzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjgg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVk
QnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZy
b20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAg
cmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAog
ICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0
byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3
YjIxMmM3Y2E0NjguLjhmMzJhYmM4ODAxZDUxODg4ODIzNWVmZmJkMGNlZWE3NzdkZTNjOWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1MiArNDMsNDcgQEAgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0
aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9l
eGlzdGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7
CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmco
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1
b3VzKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAg
ICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFi
dWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScs
IGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVm
ZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7
CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVm
ZmVyKQpAQCAtOTYsMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVh
dGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFy
IHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUi
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRh
MCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3Ry
bGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRl
c3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVy
LmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRl
bmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhw
ZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQ
RUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRh
KCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNiwxMCBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21l
bnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjAp
KTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHZl
Y3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWls
ZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBB
U1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MHg0MDAwOyArK2kpIHsKQEAgLTE1MSwxNyArMTQ2LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEs
IG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmlu
YXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhh
Yml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0
RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Cisg
ICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRh
dGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAg
IEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRf
RVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChj
bG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAg
IGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAq
IDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5z
aXplKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgp
OworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdl
dCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7
CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShs
ZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIu
dGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAg
Ly8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXpl
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVp
bGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhMCwgc3RybGVuKHRlc3RE
YXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29w
eSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkp
OworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRp
ZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdl
dCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVu
ZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAg
IGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHko
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0
ZWQpCkBAIC0xNzUsNjAgKzIwNiw3MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4g
czEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2Un
LCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdr
JywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0
byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwor
ICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZm
ZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
OCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJj
ZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBn
aGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJj
ZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCks
ICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwog
ICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZl
cihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wu
ZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwg
YnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0
YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBn
aGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5z
aXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRh
QXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1h
a2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29u
dGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAg
ICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
Y29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBh
dXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1
dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAg
IEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEt
PmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2En
LCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydh
J30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdj
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZl
Y3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpi
dWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0g
fSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdl
dCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRv
SGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9
OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAg
ICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAg
ICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQ
RUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI5MCwx
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7
CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkg
JiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAg
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzEzLDE1ICszNTUsMTcgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAg
ICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytp
KQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgZGF0YSwgMjU2KTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7
CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAx
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNTgsMTYgKzQwMiwxNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
KHN0ZDo6aW5fcGxhY2UsIHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hl
Y2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4o
c2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRl
eHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAg
ICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVm
ZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVD
VF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJl
YWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkK
ICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2lt
cGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwot
ICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNp
bXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQot
ICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQ
RUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFk
NzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMw
YjNkMzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0IEBA
IHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhw
ZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEg
XSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZv
ckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgp
OwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3
b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxs
b0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhl
bGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIg
c2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdl
dCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1
YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVn
ZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGls
ZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1l
bnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUg
KGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50
YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9u
ICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RC
eXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0
byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRv
RGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446700</attachid>
            <date>2021-12-10 03:14:50 -0800</date>
            <delta_ts>2021-12-11 04:16:05 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211210221447.patch</filename>
            <type>text/plain</type>
            <size>519423</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRmMDIyNzUwMTQ3ZDYx
Y2FmNGI4NGQ4OGVhZmY4NTRmNzBlYzRhZS4uOTJlMzVhNzE5MTllZTVhMGFlMGI5NmU1NjhkNDMy
NDk0OGMxYWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAg
YW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1
bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1h
ZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0
IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBh
cmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBB
cmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xl
IHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVu
IGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVu
IHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdl
CisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEg
Y2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8t
b3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAg
ICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2Yg
YSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAg
ICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJz
aW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFu
Y3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUg
U2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFu
ZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAg
IEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVy
YXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNo
YW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3Jhcnkg
bWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
IGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBj
aGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBp
cyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVu
bGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUg
bWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2Jz
ZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBO
ZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFk
ZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0
ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5k
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
Q0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJ
RkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhE
YXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJD
b3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFz
c2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29u
c3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6
Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhU
YWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZh
bGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhD
b3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxl
Ojpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFi
bGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRM
YW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNj
cmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERh
dGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
bkZ1bmMpOgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2Vi
Q29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZmU0OGI0YmYwYzkzMWZiZTFmYmQ1NDE3Nzc0YzVh
Y2M2MmQ0MGIwLi42YWM5NjMwOTBiMTJjMzlkNGU3YTllOWNhZDM1ZjJjOWIyMTM2YTc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAg
ICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpi
dWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVt
ZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb3B5IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyIGVycm9yIHdoZW4g
ZmFpbGluZyBpdHMgU2VydmljZVdvcmtlckZldGNoVGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGQwODQ0OWMxNDkyOTA0ZGY4ZTM0ZTkyZmMxNzVlYzhiNGI1YWZjYjguLjgxNzk1
MTIxMTNiYzY4M2Y5YmFlNDhhMWVhZWE4MjI5OWU2M2M0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAK
KyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtE
T01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNv
dXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06
CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJ
dGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFd
KToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTItMDkg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVh
ZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxl
cyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTg0MGRlMTE2NzcxOWEwNjM5YjhhMjFiYmRhZTlkODRl
ZjdkODkyYS4uOWVlOTNiOTE1MzMzZWQyOGRhYmQxNDJhMGI5NDA5OWMyNTQzMjFlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTAxICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVm
ZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAg
ICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpN
ZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAg
ICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRh
KToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3Jl
YXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDkgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAg
PGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEy
MDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFmZjgz
YzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUK
ICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAgICBh
dXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAg
ICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5n
Ojpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPiht
X2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4o
bV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4
IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5ZTIw
NGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlw
ZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1Jl
cHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6
Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2
MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2UzOTA4OTI2ZThlZjVl
OTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdl
L3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRv
IGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwg
aGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMo
W1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAg
ICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25V
c2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44
YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0
ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCBy
ZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEp
OwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0s
IFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAg
ICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi40MmZlOGZk
ZmQ0OWQxZTYwYThkY2YxMWMxMmYyZmIwM2UzNDY4OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6
OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRp
b24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0Lmdl
dCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1l
Qm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwg
cmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9
IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1v
dmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksMTUgKzI5OSwxNSBAQCB2b2lkIERPTUNhY2hl
OjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNl
Qm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAg
ICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCBy
ZXNwb25zZSwgZGF0YS50YWtlQXNDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQog
fQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYm
IHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0
LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VC
b2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkg
bXV0YWJsZSB7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAog
ICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZm
ZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5n
ZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBy
ZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNl
LnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNl
LCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygp
KSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAg
IHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92
ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZv
aWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChh
dXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEt
PmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBk
YXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJv
bWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXND
b250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0
YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQy
NzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcy
LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBj
aGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdp
dGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVl
c3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhj
ZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0g
Y2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVz
aW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3
ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYy
ZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9u
c2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VC
b2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBb
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAg
ICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFi
bGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxw
dHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6
UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJv
ZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEp
IC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0g
ICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
LT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAg
fSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICBy
ZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFi
MGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJm
YTE1NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9n
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1
ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRj
aChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhh
c1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNv
bnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+Owor
dXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9y
bURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xh
dGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVz
cG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJk
NTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5
L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkg
fTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAg
IGlmICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpT
T046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVy
LnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0Fy
cmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3
M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgy
OTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEs
NyArNjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEs
IGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAg
IGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7
CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5k
YXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBC
dWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5
VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVk
aWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0g
c3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZm
ZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZm
ZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBjMDQ3MzEyODRmNjc2YWE1YzUwZjk0
MGJlNGY2NjE3MjVkOGJmOGFjLi5kNjViMjdiZmU4YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3MmQ2
MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0y
MzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVy
JiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5
KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVX
aXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJ
ZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhl
ciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6
Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJl
dHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0
byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNy
ZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0
LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBG
ZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9y
bURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6
OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJv
ZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VS
TFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFM
OjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCks
IFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1
cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZl
ckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVm
ZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVM
ZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRk
cmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmlu
ZGV4IGJhZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQz
ZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8
Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFr
ZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYg
ZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIzOTdh
YzU1OTNiNDRiNTM5ZDNlNjcxZTQzY2U2ZGIuLmZhZGU2M2U0YmU0OWY0ZDE5MzlkMWRiOGFlMTMy
MTgxYWQwYTlhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9k
eUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21p
c2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygp
OwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBp
ZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0g
UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBl
LCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9
IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBl
LCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6
IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBm
b3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8g
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQor
ICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250
ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwyNiAr
MzI2LDI0IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVu
ZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAg
ICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEp
OwogfQogCi1SZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0FycmF5QnVmZmVyKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0
YWtlRGF0YSgpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgcmV0dXJuIEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBtX2J1ZmZlci50YWtlKCk7Cit9CiAKLSAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9i
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOwot
ICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKK1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlQXNBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1MSw5ICszNTEs
NyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6OmV4
Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZmZXItPmV4dHJh
Y3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZNb3ZlKGRhdGEp
LCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVm
ZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzYwLDggQEAgU3RyaW5n
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0g
ICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZUFz
Q29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRG
cm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0
OwogfQogCkBAIC0zODMsMTAgKzM4MSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0
Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxG
ZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3Vy
Y2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1
ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZSht
X2J1ZmZlci50YWtlQXNBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYx
MjY0M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRl
YzZkOGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsg
fQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwog
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0
ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAg
ICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBS
ZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdl
NzNlOTAwZDNmODQ4ZjY0ZjIuLmI5MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZj
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29u
c3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAg
LTQ0MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNl
RGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAg
IHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUo
Zm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAg
IHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RG
TW92ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKaW5kZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4uMzc0
OGM4ZjU5MjcyOTMwYmJjMmQxNjY2YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7
CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURh
dGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAg
ICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRo
UGFkZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4u
NjEzN2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMw
Ni4uODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRG
aWxlU2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0
ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6
OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIg
PSBidWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRl
Y29kZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsK
ICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFj
OTMxMmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xh
c3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAg
YXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgy
LDEzIEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0
IElEQktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJz
aW9uKTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBl
bmQsIElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNj
Nzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1
MTAxMTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXpl
SURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNl
cmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6
ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEz
NjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZv
JiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9z
cWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7
CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRo
KCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNy
ZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24i
X3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEz
ODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEg
bm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQs
NyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFz
SW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0g
ZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3Rv
cmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVj
b3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmpl
Y3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBk
YXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBi
ZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygp
KQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNl
ZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5j
ZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBp
biBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9u
TW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYy
LDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9i
amVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIx
MjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2Uu
bG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0
YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7
CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11
bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVL
ZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlw
ZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERC
OjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUw
OCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAg
IGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1p
bmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2Vy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZv
ciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFu
Z2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBl
cktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9z
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4
NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJ
REJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSht
X2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJl
bnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1
cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2Io
Y3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChr
ZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5j
YzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1
ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1Jh
dywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlz
UmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1
ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYg
KG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZm
NjgwM2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVz
c2FnZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBb
Jl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNl
aXZlUmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNo
YW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdh
ZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjI3YTZkNzAzMzRjYTMyMDZhOTRlOTE5OTQzMzYz
N2M0YTMwNTJlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1f
c291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVz
ZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2Up
IHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVS
TChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jl
c291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRo
aXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9k
ZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsK
LSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAK
ICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlk
YXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9
IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxs
KCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21v
ZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZUFzQ29udGlndW91cygpLmdldCgpLCByZXNv
dXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3Vy
Y2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2Rh
YTNlMTQ4NzdhMGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3
YjA2MzJiZDFlNmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBw
cml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9k
ZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7
CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVk
N2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQs
NyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUo
V2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7
CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0g
ICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUs
IG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7
CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5k
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVD
b3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRh
MWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApA
QCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VP
blN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwo
Z2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBb
Jl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
LmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYz
MTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01
MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFt
X2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5z
T25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNP
bmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0g
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09u
bHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCks
IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2Ny
aXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAg
IHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAg
cmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9j
YWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0g
bV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVy
OworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIg
bV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNo
IHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggYWViNGI2Y2M1MGExMjZjOTgzMGQ2
MDZhYmIwYzNhOGM2OWE5YzMxZC4uM2M1ZWE5Yjg5YTljOWU5MDM3MGI5OGRmNTI4NTYzMDY0OTkw
MDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcs
NyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25j
YXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Zm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYg
KG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVu
dEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Mg
PSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAt
MTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJh
c2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1t
ZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVm
ZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0
YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgy
NjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4
NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
Rm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRT
ZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVk
ZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcg
KzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2Vs
ZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBm
b3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTVi
OWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5
YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1
LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudElu
Zm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxT
dHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRk
aXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1
ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBl
NjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNz
IENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0
dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21w
b3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFj
ZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29s
IGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5m
byBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4
LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBh
ZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7
CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwog
ICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5
YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMz
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3
YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEs
MTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5m
b250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBh
cmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmli
dXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNL
ZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcg
cmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0
YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllF
UyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZv
cm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZv
cm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6
Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwg
VmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBv
dXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVt
ZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgp
LT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRh
KTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYg
KGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRh
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9h
cmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNl
bGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAg
cGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9u
SW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFh
cmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJl
c2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBz
ZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQg
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3
IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAg
IHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3Ro
KSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0
aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVu
Z3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1
ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAg
Qk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFT
b3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0g
cmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8
IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAg
ICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQ
cmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVU
eXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlF
UzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4g
ZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBp
ZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVu
YW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAg
ICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAg
IGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgp
LCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVt
ZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFk
YTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0y
ODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNo
bWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0
cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAg
ICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50
PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiBy
ZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0
YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291
cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAg
ICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAt
MzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAg
ICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291
cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyAr
MzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudElu
c2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxN
YXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZy
b21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5v
bk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRG
OChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNo
aXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQs
IE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlz
dFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93
TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9j
dW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJm
cmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAg
ICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgo
c3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1
YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1l
TWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkg
fTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hp
dmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1
aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZy
YWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0g
Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAg
aWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBA
IGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhm
cmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5
YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIy
NzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBh
c3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBj
bGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1h
Z2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJ
bldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICgh
YXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXBy
ZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTog
VGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkg
YmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3
cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0
aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlz
IG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVm
NDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMx
ZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
QEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJz
ZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50
cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3Vs
dC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3Vs
dC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVu
dERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkp
OworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRl
IG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpA
QCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZU
UERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAg
c3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3Rh
dGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwog
ICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1v
cmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhl
CiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhl
biAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmI5OTc2
YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5OWI0ZTdjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzMsNyArMzMsNiBA
QAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAg
bV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLnNp
emUoKTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhh
c0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNv
bnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7Cit9CisKIHNpemVf
dCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOwor
ICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlmICgh
bV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBw
ZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsK
IAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0
byBidWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIHNpemVfdCBk
YXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAg
ICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVm
ZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9k
YXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMo
KSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdk
YTU5MDhkNy4uMDRiMzU1MDczMzdjOGI4NjFiMzgzZDg4MTNkYzAzZjJhMzg5MTcyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEw
MywxMCArMTA0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQg
c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1w
ID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3Qg
eyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAg
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRS
ZXNvdXJjZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0ZTNkYWYxYWRlNDcz
MTg3OTViYWJhZjg1MmMyMzYyYjM5OTQ5YmRkLi5lNThiY2MyYWE3ZjgxNGQ5NzdmZjdkOGYyNjIz
YzM3ZWNiYTdjMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBA
IGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAg
ICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVy
KHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFt
ZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAq
cmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNhZDk1
OWE4ZTZmMmMyYmY3MGUxYWVlMTQyODc0NTlkMDY2MTIuLmEzYzYwYzNiNjk2YTgzZDgzMWQ4OTdm
ODE2N2EzMmJlMjM3MzcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJv
b2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
ZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+
ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8g
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRl
eHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRh
dGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1
YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
QEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJj
ZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJl
c291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3
NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVm
bGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVm
ZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2Fk
ZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVu
dEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwg
ZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGNm
NmNjZjJiZDA4OTI1MGM2MDNmZDA0Yjc0YzNlYzhjMGU0OWM0ZjEuLmZkZmQwZWFhZjNhNTAxOGQ5
MDBiYTFhNmQ3YTQ4YWU1NzMyZjM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcApAQCAtMTYwNSwxMSArMTYwNSwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjpt
YXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2
ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1h
aW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJj
aGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRh
ID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNl
dE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1l
LT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgp
LCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFy
Y2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURl
bGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVu
dExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNl
ZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Myw3ICsyMjUzLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVM
b2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXpl
KCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3Rh
cnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4
IGY3ZjNmMzg0NGYxODQ0N2JlOGRkN2I4MmQzYTQ0MzUwMDIyMTY3NjIuLmEwMGUxNGE3M2IwZTk0
NmEwYTM3NTdiOTMxN2NiMGY0MmQ0ZDlmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
OwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBz
dHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7
CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
QWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFy
Y2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZl
RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNj
aGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICNlbmRpZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8
QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJj
aGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJj
aGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVu
dEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2Vi
N2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBA
IC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5n
Lm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50
aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGQ2ODhkODBhOWJk
ODg4ZDI5YWI5MDZlNjQ2NzA2MDE3Y2ZiNjhhNGYuLjExZjY3MDJkMWY2OGZkZWJhZTRhZWEzNTI2
NmUwMmY4NDE3ZGUyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRT
ZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZp
bmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRl
c0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9p
ZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3Vs
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDZj
NWVlM2E5YjMxYWU4Yjg0ZGI5MjBiNjZlYmYyMTRmMjZlYzlhZDYuLmU5MWM4ZjYwZDNhOThhOWVi
OGRhM2NlNmI0NGZhZDJiYzNlYjU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMzEwNiw3ICszMTA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9
KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZl
dGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0
SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1f
ZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6
OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGlj
eSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE1NCw3ICszMTU0
LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRl
cigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVx
dWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdS
ZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
ICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFs
bGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAg
ICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VM
b2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAo
aXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZjNDZj
YWUwMjBlMmYzYWMuLjljM2Y3NGM0MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3MTk4MmU5MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENh
Y2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
IGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01X
cmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAt
NzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNz
IENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRp
b24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJy
ZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5l
d0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93
bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxv
cHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCog
PSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3Rk
OjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLmI4NDkxYWIzMGU0OGM3
MzE2Yjg4ODFiYmQzOWNmMDRhMWM0ZjZiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmLmg+CkBAIC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0
YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICBtX2RlZmVycmVk
UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE3LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9s
aWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVk
IGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwyNCArMzMzLDI0IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9s
aWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0
YVBheWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAg
ICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9y
ZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOworCiAg
ICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsK
KyAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgICAgICBtX3Jlc291
cmNlRGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKworY29uc3QgU2hhcmVkQnVmZmVyKiBS
ZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNv
dXJjZURhdGEuZ2V0KCkuZ2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVz
b3VyY2VEYXRhKCkKIHsKICAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5jbGVhcigpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5lbXB0eSgpOwogfQogCiBi
b29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAgLTU3MSw3
ICs1NzAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGgg
dG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBl
biBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9j
YWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxs
YmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRl
cigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0
PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0
aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJi
ZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjM3ZDY2N2Q4Mzc2ZDAwZGE3ODk0
NjJkY2NlMWFkYjMzNjg4OWZkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdl
dCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAg
ICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMjgsNyBAQCBwcml2YXRlOgogCiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmln
aW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Jlc291cmNlRGF0
YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJk
ZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4
ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0
aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uMzQ0Y2E5
ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0ZmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQot
ICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAq
bV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNs
ZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jl
c3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVz
cG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFk
YzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3
OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAg
ICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25z
ZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5p
ZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsK
ICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3Jp
dGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFz
b24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2Vk
LiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmlu
ZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2Qz
MjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2
ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291
cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
RnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAg
Ly8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFy
ZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3Vy
ZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBh
dGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJj
ZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNo
cm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAg
IGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVz
b3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1h
eWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1
bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRp
Y2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUg
b3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChi
dXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBn
ZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBA
IC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9u
Q2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAgICAg
cmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBD
bGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNo
YXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNv
dXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUy
Y2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0
MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNh
Y2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYg
QEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7
CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5
YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9y
RXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29s
IG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291
cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
KTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRD
YWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1
ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1
MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVz
b3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVy
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0
YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43YjJm
YjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAg
bV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsK
KyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNj
NDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMz
ZDFmYzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBy
ZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChkYXRhLCBwYXRo
KSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291
cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1LDcgKzgxNCw3IEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2Us
IHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBhdGgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50LT5l
eGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRyeVN0YXRlbWVudC52
YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgLy8gRGlkIHdlIHN1
Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/IElmIHNvLAogICAg
IC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5
IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1w
dHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJj
ZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMTEzLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25D
YWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdl
SUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5J
bnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
YWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAg
IGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVu
dC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLmY1
ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05
MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0
YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0
YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VE
YXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXks
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8g
UmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJj
ZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0
eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNl
IHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2Up
IHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0
eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAg
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lX
ZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkp
OwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwx
MyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qg
b2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0
byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYm
IENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJ
RCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVz
b3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNy
ZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVz
cG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRh
dGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNv
bnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVm
PExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCks
IGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3Qp
IHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZl
ciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAh
PSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQg
Q0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBs
aXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBA
QCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3Qg
Q0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3Vy
Y2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYg
KCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2Vi
QXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0
cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENG
RGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0
KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJj
aGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90
IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAg
ICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAg
ICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBA
IC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlv
bmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAg
ICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYs
NyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9u
c2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8g
aGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUs
NyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJv
bVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0
KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhl
IGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8K
ICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1l
c2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJh
bWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0
aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNo
aXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi45
OTNjMmI4ZTgzMGRjM2Q3NWM1YWQzMTliYmFmZTlkZjQ1YzUwMTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTE2
Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9m
IGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5
IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0g
c3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcu
ZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
aHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMp
IHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCBy
ZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5n
ID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5h
cHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAg
IG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250
ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAg
YXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFM
ZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRl
bnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVk
RGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAg
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6
ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6
ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFz
ZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0g
dHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCBy
ZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1I
VE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNp
emVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAg
IGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29k
ZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0
aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAg
ICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBs
aW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7
CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAg
ICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIp
LnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEo
KSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICBy
ZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2Rj
YWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjY2NWU2OWNhNzcxNGU0NDlhZmU0Y2E2OGE3MjQx
NTIzMGQxMDliMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5k
T2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAg
ICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgp
OwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVy
LmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0x
NTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNl
TmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19F
UlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RG
TW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAg
ICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hh
cnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFk
ZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFz
Y2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikg
aW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgp
LCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgp
LmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250
ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewog
ICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQg
d2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFBy
aW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAg
ICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250
ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpA
QCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250
ZW50LnRha2VBc0NvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAg
ICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250
ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNv
bnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAg
ICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
YmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToK
LSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29u
dGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFy
dC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29u
dGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVs
YXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBt
ZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0g
dG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDRm
MjI4ZThkMDM4OWI4YjhjYjdmNDE0ODZmZGI3ODFjOWJmNjViZDIuLjk3Y2Q0ZGZmZDE4OGMyODEx
MWZkNjlhYzBkYmEzMzhhNjczMzM1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0
MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAg
IG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAg
IG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1
NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVj
NzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3Mo
Y29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQq
ID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAg
dm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRj
YzZhMGJjZjAwMGJhOWIxNzZmLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMw
NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHls
ZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAg
ICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0
aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVp
dGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRT
dHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQg
a2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAo
ZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0
IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNr
Tm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAg
Ly8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQg
aW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRk
ZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQw
ZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0K
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURl
Y29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY5
YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAg
ICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0
aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExv
YWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUs
NyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0
CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAK
LWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRh
KQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFl
cnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3
cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRl
cywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsg
JmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcg
PSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZm
ZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rp
b24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNo
ZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGlu
ZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2Fj
aGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5m
b250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
CmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjE1NGRiOGNi
YWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
dGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBi
b29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRh
RnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQm
KTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBs
YXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9s
ZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wg
ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3Vy
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRl
OgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03NCw3
ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTlj
MTE0OWJkYTY5NGUwZTZmNmI1NDIuLjdjMDFjOGNjMjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdl
ZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
ICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAg
IG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApA
QCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJ
bWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xh
c3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2Zm
SW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1h
Z2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5l
ZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8
ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAo
IWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVz
b3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRh
VG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0
RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7
CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2Vs
ZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0
byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAgRW5j
b2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAo
bV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4
IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLmQ1MTNlMTZjYmE1YTk3
MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdl
SGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFz
UmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAK
LSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAg
ICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNv
ZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAg
IHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92
ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5S
ZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJu
YWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBT
aGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgz
OTU2MmYuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4MDQ0ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5n
ZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBT
a2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2Un
bGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1f
aW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7
CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShk
YXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9p
bkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3lu
Y2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRz
IHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVy
aW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVm
ZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAg
ICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgp
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFs
RGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXgg
ODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMw
OWFkZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3Jl
SFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4g
bV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3Qg
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRG
aW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNlNDQ2ZmI5MTc0ZmY2
ODIwMDAxMTRhNzJhM2UyYTAxMGU3ODEwODguLjU1Njk2NDNjZDVlNjg5N2EzYzU4ZmI0NjIzNDU0
NmYwNmRhMGFhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNr
Tm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50
LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJp
bmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0
Niw3ICszNDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MTUsNyArOTE1
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVw
bGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNv
dXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1
ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI5LDggKzky
OSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRC
dWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdC
dWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VT
aGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZj
MDM1YmMyNzguLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsOSAr
MTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVz
b3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNv
dXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJl
c291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
Z2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1Nl
bnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQog
CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAj
ZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRX
aXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5l
ZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2Fk
ZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRo
ZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4u
YjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiAr
NTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZH
RG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
Y3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRo
ZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50Ojpj
cmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1f
ZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdl
YWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2Ey
MjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThl
OThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlw
dERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7
CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAg
ICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
KTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAg
fQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVy
dFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1f
Y29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9u
dC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwog
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2IwNjI4
NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0
ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXli
ZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21T
dHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRl
ZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9u
dDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBT
VkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxj
b25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNTRlNjc2Y2U1MGIwOTZiNTYwN2MzYzAzMGY3ZDlhY2Mw
NWM0ZmE4OC4uMWRmNWM0YjE3ZWVlYmNiNGU0YmJmZTRhZjg4OTFhZGVjYjZhYjk2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5
NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBt
X3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYw
NzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMyYzdl
NjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIy
OTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uNTQyNjZkZDkwODE5YzM0ZTkx
NTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJh
Y2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6
OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9
IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAg
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlz
KTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRk
Li5mNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAg
IHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4
MjYxNWQzNDAwYy4uYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNv
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9
CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgp
LCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRh
dGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmco
ZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFj
ZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5MTBiOWVm
YWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1MmNm
ZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdhMDdj
YjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYp
OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVk
QnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Cisg
ICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2Vk
U2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
Zik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2b2lk
IHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlc291
cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdk
ZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBhIHJl
c291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3QuCiBz
dGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRC
dWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hl
ZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0
b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0YSA9
IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxl
QmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9u
c2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBfQ0ZD
YWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hlZFJl
c3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAotdm9p
ZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVy
JiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKIHsK
ICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZv
clJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJlc291
cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi5mZjQwYzQx
NmNjNjE2ZTkyYjEzMDdiYWJiN2UzNDNiMzdlNTQ2MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgpAQCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQ
cmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2
YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZl
cnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1f
Y2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRl
cj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9D
b252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uMjNj
OTcyNDJiYjlmYjc1M2ZhYjc0MzdhZjdlMDhhMDlkYTk2MjFmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjksNyArNjksNyBA
QCBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExPRyhOZXR3b3Jr
LCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAlbGQuIiwg
YnVmZmVyLnNpemUoKSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmFwcGVuZChidWZmZXIpOworICAg
IG1fb3JpZ2luYWxEYXRhLmFwcGVuZChidWZmZXIpOwogICAgIG1fY29udmVydGVyLT51cGRhdGVN
YWluUmVzb3VyY2UoKTsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xv
YWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25z
ZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEuZW1w
dHkoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0Nv
bnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZl
cnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNv
dXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29u
dmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEuZ2V0KCkuZ2V0KCkpOwogfQogCiBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1
YWIxMzVhYTYwMzMzY2YuLmEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4
X3Q7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDJjZDE5YTExMGIyYjg2OTIzZjQ2MzEyOTlkYTM1NTA2M2M4YmI1MTEu
LjljOTAwYmU4ZjRjNTIxMTQ3NTY2MzAxOTExYmI5M2IwY2UzN2E2YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTk1NSw3ICsxOTU1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlz
aGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUg
bG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hl
bgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcAppbmRleCAxNjVhYTgwNThhMDM5MGI0NTE1NzlhMTQ3NjFiZDg2Nzk0
OTM2NDMzLi4wMWUxNmRkOThmNGRmMGNlYjIxZGY5MDhkMWY0MGM2MjRhYWU0YzI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQg
UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVz
KCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUlu
Y2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1
Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNv
ZGUodGV4dCwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgIG1f
cmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFBB
TDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJM
cy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyAr
MjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5v
bmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBBTDo6VGV4dEVuY29kaW5nIHRleHRFbmNv
ZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0
ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUo
Y3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkg
fSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRv
U3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICAg
ICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGlt
YWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdU
Rk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVz
cG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVz
b3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgK
aW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZjYmU3Yjhk
YmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNl
IHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVj
dG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZi
Nzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcx
ZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBA
IHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVO
YW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5k
ZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0
YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFy
ZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2Vw
dGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewot
ICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwx
NSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxv
YWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5k
aW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAg
ICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUu
ZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RG
TW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1f
ZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6
ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRs
ZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUz
NTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQz
OGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
ZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgK
QEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29k
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBk
b3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0
YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0
OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBA
QCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBj
bGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0
IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdl
YkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0
Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRh
SW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9y
PFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNs
aWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRP
cmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBp
bWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRp
ZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNp
ZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3Ry
aW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVu
dERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50
RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBh
ZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVz
dWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmlu
Z0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFk
VHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hl
Y2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5
NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAK
QEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21E
YXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNo
YXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJl
bnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1l
T3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVi
b2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29k
ZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcg
QEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0
ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIu
ZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMu
LmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAg
LTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9y
aWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3Rv
bURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYp
OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2
ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4
NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVi
b2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlv
bkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFt
ZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJj
ZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVy
RGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9v
bCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0
OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1h
dDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0
cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2
ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3
LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBh
c3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZv
Owogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6
CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFz
dGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYg
ZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0
ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJp
bmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNi
MzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uOWViNGJkZGYwN2NmNjE2NmE1
ODYwYmFjMDc0NjI2ZDI5NWFjYjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIlByZXZpZXdD
b252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCIK
LSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02NSw3ICs2NCw3IEBAIGNvbnN0IFJlc291
cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0
YS5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2Uo
KQpAQCAtMjIxLDggKzIyMCw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGll
bnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIEFTU0VSVChtX3N0YXRlID49
IFN0YXRlOjpDb252ZXJ0aW5nKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZygqdGhpcyk7CiAKLSAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAm
JiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgaWYgKCFtX3ByZXZp
ZXdEYXRhLmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKKyAgICAgICAgY2xpZW50LnBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEuZ2V0KCkp
OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChj
bGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQsNyArMjMzLDcgQEAgdm9pZCBQcmV2aWV3
Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQp
CiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZpbmlzaGVkQ29udmVydGlu
Zyk7Ci0gICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkpOworICAgIEFTU0VSVCgh
bV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3ByZXZpZXdFcnJvci5pc051
bGwoKSk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0
aGlzKTsKIH0KQEAgLTI1Niw3ICsyNTUsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVn
YXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIGlmIChkYXRh
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2aWV3RGF0YS0+YXBwZW5k
KGRhdGEpOworICAgIG1fcHJldmlld0RhdGEuYXBwZW5kKGRhdGEpOwogCiAgICAgaXRlcmF0ZUNs
aWVudHMoWyZdKGF1dG8mIGNsaWVudCkgewogICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRl
ckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRj
ZjhjZTJiLi5mMTRkZTFkOTE0YTRjYmNhMTVhNzVkNmQ1ZTVlMGRjYjRjNGE5Zjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CkBAIC00MSw4ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBz
dHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTE3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wcmV2
aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6
VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2Vk
QXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJi
Li5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudElu
Zm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0
cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRk
aXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5
YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVkLi5lZDMwZTg0OWRkODE4MzhmOGM3MzNmMTNkYjZjMzdj
Mzc4NDhmM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAg
LTM3LDMxICszNyw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewotICAgIGFwcGVuZChkYXRhLCBzaXpl
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOwogfQogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsK
K30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKK30KKworUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkgPSBk
ZWZhdWx0OworCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVE
YXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5z
aXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBhcHBl
bmQoV1RGTW92ZShkYXRhKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNp
ZiBVU0UoR1NUUkVBTUVSKQpAQCAtNzMsMjYgKzk1LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzEwOSwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZl
Y3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpj
b21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1
ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5j
ZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwg
TyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5l
ZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUo
KSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAg
ICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25z
dF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXpl
KCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAg
ICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9z
aXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VS
VChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17
Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERh
dGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25z
dApAQCAtMjAyLDEwICsxOTQsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6
OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9z
ZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVu
dHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVu
dHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVu
dC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXpl
ICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMTkgKzIwNSwxOSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRh
LCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXpl
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9
IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NF
UlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250
aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CiB9CkBAIC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3Np
emU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21l
bnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykK
LSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2lu
UG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1f
c2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50
LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVy
biBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVm
ZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21l
bnRzOwpAQCAtMzUzLDEyICszNDAsNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAgIH0K
IH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAotewotICAgIGF1
dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgp
OwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5
Q29uc2lzdGVudCgpIGNvbnN0CiB7CkBAIC0zNzIsNDEgKzM1MywxMiBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9F
TkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEo
KSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAg
IFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1
cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0
Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHTElCKQotICAgICAgICBb
XShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCks
IG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtdKGNv
bnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgotICAgICAgICBbXShjb25zdCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKLSAgICAgICAgW10o
Y29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBwcm92
aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1f
aW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7Ci19
Ci0KICNpZiAhVVNFKENGKQogdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRT
b29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNo
YXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKLX0KLQogYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKIHsK
ICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCkBAIC00NTYsNyArNDA4LDExOCBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6
ZSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQor
eworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKwor
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZm
ZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAg
IG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1
ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNv
bnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAg
bV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAg
OiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGlu
ZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5
VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwg
bWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNl
Z21lbnQtPmRhdGEoKTsKK30KKworV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB7IGRhdGEoKSwg
c2l6ZSgpIH0gfTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworI2lm
IFVTRShDRikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR0xJQikKK1JlZjxEYXRh
U2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30K
KyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21l
bnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5k
aWYKKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6
OmNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERh
dGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0
IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAorI2lmIFVTRShDRikKKyAgICAgICAg
W10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBVU0Uo
R0xJQikKKyAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRf
ZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVS
KQorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCisjZW5kaWYKKyAgICAg
ICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7
IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CisgICAgKTsKKyAgICByZXR1cm4gc3RkOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOworfQorCitib29sIERhdGFTZWdtZW50Ojpj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsK
K30KKworc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1Mzgs
NjYgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAg
IHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpKTsKK30KKworU2hhcmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3Bl
cmF0b3I9KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVy
KSB7CisgICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitTaGFyZWRCdWZmZXJCdWls
ZGVyJiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oY29uc3QgU2hhcmVkQnVmZmVyQnVp
bGRlciYgYnVpbGRlcikKK3sKKyAgICBtX2J1ZmZlciA9IGJ1aWxkZXIgPyBidWlsZGVyLmNvcHko
KSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgbnVsbHB0ciB9OworICAgIHJldHVybiAqdGhpczsK
K30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFsaXplKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQoreworICAgIEFTU0VSVCghbV9idWZmZXIpOworICAgIC8vIFdlIGRvIG5v
dCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hh
cmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAg
aWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKKyAg
ICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXBwZW5kKGJ1ZmZlcik7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OnRha2UoKQoreworICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCitSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCit7
CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKK30KKworUmVmUHRyPEFycmF5
QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAg
aWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVs
bHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKK30K
Kwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIoKQoreworICAgIGlmICgh
bV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30K
KworU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2Vn
bWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAg
ICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwg
bV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5T
ZWdtZW50KQpAQCAtNDg5LDI2ICs2MTEsMTYgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIHsK
IH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zaXplOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6
ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlv
bldpdGhpblNlZ21lbnQ7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewot
ICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdt
ZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0g
bV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkg
eyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyBy
ZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9
CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5v
dWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNjQ2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIu
c2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLmQxMGIwZTU0
OWE5OWZiMjU4NjAwMjRmNjhlOGYwMDExNzhkM2QxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4K
ICNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTYyLDE0NiArNjMsMTI1IEBAIGNsYXNzIERlY29kZXI7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBE
YXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2Ug
aXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBj
b21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFT
ZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRG
aWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBw
ZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAg
ZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1h
cHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rv
cjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5T
QXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2Vu
ZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgp
IGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsK
LSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRpZgot
CiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0
ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVz
PiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBk
YXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5v
dCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5k
IGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRo
aXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4K
LSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0
b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQot
ICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwg
dGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBp
cyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBj
b3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlC
dWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZl
ci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7
Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
eyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFy
KCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhf
dCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYm
KTsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11
dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAg
IC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2Vn
bWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qg
c2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lm
IFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAg
ICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBG
dW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9V
TkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2Vu
ZGlmCisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAg
ICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250
YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRh
U2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90
PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQot
ICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJl
ZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFi
bGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CisKK2NsYXNz
IFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+
IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBV
U0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYK
KwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5k
aWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVE
YXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5
aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBT
aGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RE
YXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBT
aGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91
dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29u
c3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICBib29sIGlzQ29udGln
dW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQorCisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNo
U2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4m
KSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYg
cHJlZml4KSBjb25zdDsKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdt
ZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7
CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsxOTAsMTU3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZl
Y3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVn
aW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVu
dFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5l
bmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzT25l
U2VnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAogICAg
IC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRp
bWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9u
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAK
ICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90
aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVs
dDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3Rl
Y3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERh
dGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxz
ZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChk
YXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShD
RikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShH
TElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NU
UkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQg
Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBhbGwg
dGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIg
Y2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAvLyBDb21iaW5lcyBh
bGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0
ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBn
ZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBE
YXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBt
dXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBB
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8g
ZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1l
dGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZl
ciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGlj
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBl
bHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChz
dGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKwor
ICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5
VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VO
REFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdM
SUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNv
bnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1No
YXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRl
ZmF1bHQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0g
ZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXImIGJ1aWxkZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVpbGRlciA/IGJ1aWxkZXIuY29weSgp
IDogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBudWxscHRyIH0pIHsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgeyBpbml0aWFsaXplKFdURk1vdmUoYnVmZmVyKSk7IH0KKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoc3RkOjppbl9wbGFjZV90
LCBBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXImIG9wZXJhdG9yPShTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3QgU2hhcmVk
QnVmZmVyQnVpbGRlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXIm
IG9wZXJhdG9yPShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAg
ICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKwor
ICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHko
KSB7IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorCisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29w
eSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxT
aGFyZWRCdWZmZXI+IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpl
eHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY2LDIzICszNDgsMjQg
QEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKICAg
ICByZXR1cm4gY29weURhdGEoKTsKIH0KIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAg
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6
ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVk
QnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgc2l6ZV90IHNpemUoKSBjb25z
dDsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25X
aXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVk
QnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQogICAg
IGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5E
QVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAj
ZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBj
b25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1f
c2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5n
Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJp
bmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5
NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgog
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5v
d1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAg
ICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5p
bWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3
b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWlt
ZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRp
ZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3
ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEy
ICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlT
dGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rl
ckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENG
KENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0
aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0
cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4
IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3
MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVk
RW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2Rl
Qnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwog
ICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIx
N2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uNDdjMTBmOTgwMjM0YzlhYmM2MDg0
ZWMyMTA0NTZmNmIxNTQ4MTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcApAQCAtMzUsMjMgKzM1LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CisgICAgQVNT
RVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGFwcGVuZChkYXRhKTsKIH0KIAogLy8gVXNpbmcgRm91
bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24g
b2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZv
dW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1f
c2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVy
biAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11
dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNl
Z21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7Cisg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7
CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjksNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENG
RGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRh
R2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRl
MjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIx
MSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5
VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3Rh
dGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1
ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxv
Y10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9u
VXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hl
Y2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjk4MDU0N2I4
Y2M0YzRhODhjYTE1NWNiYjE3ODIwYWY4NWUyZGM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEg
QEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNl
Z21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXpl
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJ
bnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC05NSwyNyArOTUsMjYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5T
RGF0YSAqZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJuIGFw
cGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9j
YXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09u
ZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
YWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVCht
X3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50
c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAg
aWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZp
bGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0
YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3Vy
Y2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNSw3IEBAIFJl
dGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QK
ICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50Ojpj
cmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJl
ZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBz
aXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcx
MWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4
MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpT
T04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24g
eyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpT
T04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApp
bmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4
YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBp
ZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERh
dGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1
b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0
YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXpl
ID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkK
IHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJ
bml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5m
aXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAg
IC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAo
IWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICBy
ZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7
CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1
dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtl
eUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5n
KCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0
YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGlu
aXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5
SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJy
YXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9s
bG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElE
cy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9m
IHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5
SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0
YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNl
NjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGlu
aXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUo
a2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJp
bmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0
YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25E
YXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgp
OwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQx
YTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5k
QXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29k
aW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZl
cigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVj
N2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVh
ODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2Rl
Qm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkz
ZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4
MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNv
ZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hF
bmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9
PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdf
dmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0
ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjEx
ZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0
cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1
YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdC
eXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0
ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCks
IFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
ZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkp
OworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRl
cmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykp
KTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQ
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBA
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQo
KSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3YzQ4NzhhYmVl
MTAzZmJhZjIxZjU3MC4uMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
b250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVu
dGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMp
CitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsK
ICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERh
dGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA3NDQyMDA0ZjAwYjVkYmEyN2YzYzMyZTY2N2IzNmJj
Y2Y3ODUxNGNkLi40YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwgSW52aXNp
YmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsID0g
SW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVu
dGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
b250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRl
eCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNl
NjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGlu
dGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZv
bnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBj
b25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQg
ZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAK
ICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRh
dGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBp
dGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1v
cnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4
MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4g
TW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcg
bWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RG
TW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2Rl
bDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJs
KQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmlu
ZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwg
bV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYx
MTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRm
MzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
aApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5n
LCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcs
IFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYs
IFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwog
ICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwg
MSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWlt
ZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRy
PE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92
ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVy
bCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2
ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBi
NmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYg
dmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
KTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00
OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zm
c2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsK
ICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlm
IChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcg
QEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQx
Nl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0
ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXpl
X3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcg
QEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRC
dWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1Nm
bnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQog
ewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgz
LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1
aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsK
IH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAg
ICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1Nm
bnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAg
ZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0
NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThm
MmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dP
RkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3Ig
Y291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZl
cnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0
ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdP
RkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBz
Zm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1
cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywg
Y29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMg
Y29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNl
dCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxT
aGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5
NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhk
NTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09O
IG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9Igog
ICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpz
b24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFy
c2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmlu
ZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2
YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09O
VmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcg
dGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkg
fTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5
LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRp
b25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlv
bkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tk
TmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZF
KEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFU
eXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3No
U3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEt
PnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwog
ICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0
aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpO
U0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAt
NzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhw
aXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8m
IGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAg
ICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25D
bGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25z
LmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVj
dG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
ODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAg
aWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNz
Q29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBj
b250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5
bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVl
c3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07
CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
LCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1
cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJl
c3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVz
cG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgp
LnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNv
bnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3Ry
ZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxl
bS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVu
dEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSog
ZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygp
IHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlm
aWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJh
Y2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAg
Zm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlT
ZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZp
ZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0p
IHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0
ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5p
c0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlS
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50
SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFr
ZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgp
IGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNv
bXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNE
YXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0g
cmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNl
cnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0
b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+Owog
ICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0
OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5
SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmlu
Zygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJw
YXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9h
ZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdU
Rk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0
cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1
ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURz
Rm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNv
bnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0
byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVz
dERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50
SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBX
VEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRh
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1v
dmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJl
cXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUg
ewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNh
dGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1
dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwog
Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3Qo
KS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVz
dERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50
SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRh
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihl
cnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVz
dERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNk
YmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURl
Y29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRC
dWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkp
CiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lv
bjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAK
ICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5n
ZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9S
SVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlG
b3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRD
b250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRd
OworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxE
YXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpp
bmRleCAxYTQzYzdkZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEzLi5hYmQ4MWU1ZjNj
MWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBA
QCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygp
CiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNl
Z21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBw
ZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VT
aGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3Mg
PT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRT
dHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFt
RGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYy
OWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJj
NzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5
N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0
MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAK
ICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0
Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQ
dHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0y
MTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmlu
aXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1f
YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcg
KzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQg
PSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpN
b2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJl
c3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAg
IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsK
KyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmco
KTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0
ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3
YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0
OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0
LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9u
dEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2
N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMz
ZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZE
aWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdl
dEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9u
LCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0
aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5m
byk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBp
ZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyAr
MjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlI
aW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZE
YXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0
Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0
aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRl
bnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8g
T24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5
IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAv
LyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZE
YXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8g
cmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCks
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVE
ZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgp
LCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRl
ciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRh
LmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxi
YWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZm
ZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBw
b2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlz
IGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAg
ICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwg
MCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNl
IH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3Zp
ZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRh
LnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNv
dXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRl
ci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRl
eCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlm
YzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcg
KzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wp
CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwor
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9j
dW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhk
MWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxh
dGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90
aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250
LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2
Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90
KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVp
bnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVy
ZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3Bw
CmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4
NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBs
YXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENG
VHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0
CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJl
dGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQo
KSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2Fi
MmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJh
cnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGlj
IEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVl
VHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIu
LmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAm
JiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFu
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQu
Z2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRG
YWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJy
b3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJiYWVhNWI4NDViZGVmYmI2
ODZmZTI1MjU5MzMuLmI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkgQEAgVmVjdG9yPHVp
bnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4g
eyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25l
ZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZh
aWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZDgy
Y2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5MjM5YmI3ZjBkOGZi
ZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIs
NyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJv
b2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQg
bWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5
KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7
CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwog
CiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYm
IGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFk
MTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEw
YzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2
b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJl
YWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIu
ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVy
RGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRo
aXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwg
VGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4MjRkZmMxYzM4MWE1
ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3ZDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY2OSw3
ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUco
InNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6
ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAg
ICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1E
VU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERh
dGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAg
ICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0
RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUo
KSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAz
Zjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgz
MjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNp
bmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFy
a3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVu
dE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRy
LCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFy
a3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAg
ICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAg
ICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2gg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2Vy
RGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3No
KSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9y
KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJr
dXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVt
ZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0
RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9
IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxv
YWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3
NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1YzFlYzQ0
MWFmNzE5NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxf
TE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5
LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0
YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRl
ZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0
byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQ
YXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0
cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAg
OiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lm
TmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVk
KHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5h
cHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzYsMTAg
QEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1
bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAg
ICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9w
YXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsg
fQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Bh
eWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1
cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0
CiAgICAgewpAQCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5j
Il9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxv
YWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFm
NGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3Jp
cHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9s
ZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4
dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVm
ZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThi
OWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWVi
MjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBj
cmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFj
Lm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNj
ODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFj
Lm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1
bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0
TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9j
dW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0
ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXgg
NWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1Zjkz
Y2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJs
ZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNv
dW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07
IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZh
bHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3Jy
ZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3ND
b3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGlj
c0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaElu
Zm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNo
YXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZz
ZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0Nv
cnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAK
LSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZl
Y3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25z
dAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJs
eVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpA
QCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJh
c2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9
IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1h
dGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAg
ICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0
cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFy
aWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAg
fQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykg
Y29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNz
ZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBo
QXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1i
bHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0x
NzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBl
OjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZl
cnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250
YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1h
dGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNv
bnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNh
bCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGlj
YWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291
bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBt
YXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENv
bnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBz
dHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5
cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAg
IGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhW
YXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9
IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4z
ZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1
YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBw
cml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9u
dF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNh
OGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEy
Njc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0
eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9U
X01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkg
fCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwg
KCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3Qg
VCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXpl
X3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxp
ZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBz
aXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwg
c2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3Qg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgot
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7
CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9m
ZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFz
IHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9z
aXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0
ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBv
c2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
Y2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4g
Y2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxp
ZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBj
b25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3
ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBF
TkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFz
ZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgs
IHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRl
eChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFi
bGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAg
ICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4z
Y2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVu
ZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4g
Zm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRU
YWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNl
ZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJl
bmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250
TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9u
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBm
b250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXpl
X3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVh
ZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEu
ZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQog
CiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0
aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkK
K1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkK
IHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5h
bWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5
ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
Owogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhf
dCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5
UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJl
c291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFl
YmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlw
ZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZz
ZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4o
YnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3Zl
cmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9
CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9u
U3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxl
QmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8g
T3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVy
IHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAK
LSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9u
cyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9
IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJs
ZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29r
dXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50Owog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1
cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3Vu
dCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgs
NyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJ
bmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExp
c3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBM
b29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0
dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9m
ZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0
dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90
IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291
bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZm
ZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1
cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3Bl
blR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7
ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0p
ICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0
cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVh
dHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29u
c3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJl
VGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVh
dHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4
W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFu
Z1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJs
ZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAt
Mjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAg
T3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAg
Y29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVu
VHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAs
NyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2Ny
aXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQg
fHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3
IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsK
ICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVs
dExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlw
dChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEg
QEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBm
ZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7
CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIs
IHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBM
b29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZz
ZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlw
dExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlz
dCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlz
dE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFu
Z1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlw
dExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0
cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0g
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVy
ZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBA
QCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7
CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFw
PEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlw
aD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZl
YXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZl
cnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUg
OiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5
cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6
OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVh
VGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVW
ZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQg
Zm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVh
VGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3Bl
blR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBp
ZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5U
eXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VC
VGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxl
PihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1
ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGlj
IFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0g
Y3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1
Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVm
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xh
c3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5n
czsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
bnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZl
YXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9y
bURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzEx
MmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBT
dHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNy
ZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9X
aW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRj
Njc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAog
ICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpv
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZj
YjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNm
N2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5
LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVj
dDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMs
IC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xk
Rm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdl
dEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShz
aXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwg
KFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBv
bGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rp
b25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmlu
ZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkw
YzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJl
cGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShi
dWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZl
cik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29u
c3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgp
IHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2lt
YWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4
Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAg
ICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9u
ZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRh
dGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBj
b250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRp
Z3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+
YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3Rh
dHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBt
X2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNp
emUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4
IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjFjODcxZjRkNTY0OTFi
Zjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2
ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1ww
JzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdf
ZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0g
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9
IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAg
ICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5n
dGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2Vy
U2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0K
IAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVy
biBidWZmZXIudGFrZUFzQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYs
NyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVy
OjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVH
SW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1
M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01T
KQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRk
ZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1
MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFr
ZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAo
TlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0p
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpj
b250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBp
ZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJj
aGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
OwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsK
LSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkK
KyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUw
MSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4o
Y29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRl
bVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9h
cmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1
dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMu
c2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5
cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVz
W2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ld
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ld
XTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1J
TUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICgh
aXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUg
PSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURh
dGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1J
TUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uu
c3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcm
IG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRf
VEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRD
dXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAg
ICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEo
KSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewog
ICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0
eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJv
cC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBj
YW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBh
cmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2Ig
YW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3Zl
cmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FU
eXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJl
dHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgo
TlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQg
bnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNv
dW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJk
MTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1
MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikK
IAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0
b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJp
bmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8
cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1l
LCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUlu
ZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRl
bUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2Miw3ICsz
NjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwg
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAo
YXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0
ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRl
eHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNV
UkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5
ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFj
NmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
V3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVu
dC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29u
dGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVu
bGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0t
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxl
c3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5z
ZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJk
SXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0
cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQog
CiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRi
OGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1
Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1h
a2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2Fy
ZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29w
eV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygp
IGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAg
ICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRh
ICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEu
b3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRh
Lm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
dHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0
YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0
YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAg
YXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3
ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVi
b2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0
b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNl
cmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERh
dGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9h
cmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFtt
X3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0g
W21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAg
aWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VD
b3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBl
Rm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3Rl
Ym9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAg
LTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRh
ICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEg
PSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01
MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQ
YXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0Rh
dGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgp
IGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTcz
YWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVm
NTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0
YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li5jNzFh
YTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEz
Nyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRo
aXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBp
dCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2Nr
aW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0
ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwxMyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0g
ICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1v
dmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsK
IH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCAwYzkwODE3YzRlOWI0
MWYzNDlhNDFhZTY0YjcxOTA2Yjk1MWViODlhLi42MjM2NGQ3MTNjOTVhOWY4NDNjN2QyOWMwMWYw
ZGViOWFlNmQxNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aElu
Qnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGU5ZDM0NDNm
OGI1YzY4MjQ0NjY1NmMxODgwNTY1N2NjMjlkMmQ4MzcuLjEwODI4MTEzMWY4M2U5OTM3MGZjNTA5
NzgzM2NjNTBlZThhZGJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxv
YlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBGb3Jt
RGF0YUVsZW1lbnQgewogICAgIHN0cnVjdCBFbmNvZGVkRmlsZURhdGE7CkBAIC0yMzIsNyArMjMy
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4m
IGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9h
bHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVh
bSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRl
eCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2
N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZl
RGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFh
Li44OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJl
Y2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVj
ZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgx
OTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAy
OWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAs
IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShy
ZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0
IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1
NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6
ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3Mg
UmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNl
c3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBS
ZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBI
YXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1
ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBv
cmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2Fk
aW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNr
KQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVz
SW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3Qg
UGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVk
Q29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJT
aXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJs
ZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0
aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qg
d2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwg
a25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAo
IWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZm
ZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2Uu
YmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5i
dWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNr
KTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBn
aXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0
YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayks
IGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdl
bmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRl
UnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsK
ICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVy
SW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4
ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJT
aXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZm
ZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcg
QEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVk
Q29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVy
LT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBG
SVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3Vs
ZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBj
aGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5h
bFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJs
U3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5i
dWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZl
UmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5
ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZToo
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3Jl
OjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9u
OltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0g
ewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUo
KTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAo
aWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVs
ZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEy
Li5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNs
b3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChw
cm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0
aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5k
KSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0
aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgot
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVu
ZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRs
ZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3Vu
ZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5k
KSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwg
ZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1
ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3Ig
ZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgot
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVy
LnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAg
IG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBl
ODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRi
N2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBD
dXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZp
bGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNl
NWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDks
OSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1
ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCku
ZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RG
TW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3
b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5
ZmU0MzJjMzgxZDNkMTk2MTNlNjAuLjNjYTIwODIyYzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4
M2ZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1
ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRC
dWZmZXJQT1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQog
ICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAyYjMxMjg1ODcwMzAzZDA5YjAyNDUz
NjVkNjFhYjg5MTExMWRhYWI1Li5hYWNjMzdjZDI4NzI4MGYxYmUwMDg3OTczNTFhOThiZjhiYzFi
ZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CkBAIC05NzgsOCArOTc4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxl
Q29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAg
ICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDMw
LDggKzEwMzAsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29u
c3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0
aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAg
ICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRh
dGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmls
ZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAg
ICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdy
aXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVI
YW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJl
dHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1
ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5
ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUo
ZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAK
QEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsK
ICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9S
ZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAg
ICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZp
bGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0
OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2
NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
CkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVz
cG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9u
c2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZm
ZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEo
KSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Bv
bnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQo
JyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJl
c3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBA
IHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmll
dyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdW
aWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6
IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVj
dG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcg
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2Ut
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsK
IAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0
Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1
NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7
CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAog
U2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNj
cmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVy
IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6
OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBT
dHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVy
Ojpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZl
ciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5i
ZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2Ny
aXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1
dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwg
Y29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
aW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdm
OGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNj
cmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9i
dWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7
IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZl
cjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9i
dWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1Npbmds
ZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENv
bnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
aW5kZXggNDMzZDllMWE0NWMyOTg4NTQyYjA1ZTc0YjQ3MTdhNzcwNTcyOGJiNi4uMmE3MTI1NDcx
OGVhZWRmNTFhNDQ3ZWNlNjJjNGNkNzE2YmIwNzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2lu
Y2x1ZGUgIkZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ck9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlICJXb3JrZXJH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTc4
LDkgKzc3LDEzIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykg
ewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAg
IGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlm
aWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgICAgIGNvbnRp
Z3VvdXNEYXRhID0gbV9kYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1
b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShjb250aWd1b3VzRGF0YSk7
CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCku
dG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkK
ICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0x
MTcsMTAgKzEyMCw3IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9j
Y3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9k
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEs
IGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAK
IHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcu
LmRhYjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgpAQCAtMzYsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIEZvbnRM
b2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAK
ICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEz
OGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgxMDll
NjI2M2Q4MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNs
aWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVz
cG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRh
QW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0
cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2
NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dT
Y3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmls
ZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVz
Y3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUs
IHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZp
bGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0K
IAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IGUwY2RjNzIzNGM1NGExM2RmNzBhNjgwNWMyODFiOTQ4MDU0NWFlMjYuLjliMTEy
YjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJT
dHJpbmdBZGFwdG9ycy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC0yMDgsNyArMjA3LDcgQEAgUmVmPEJsb2I+IFhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogICAgIC8vIEZJWE1FOiBXZSBqdXN0
IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBp
dCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwog
ICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhj
aGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOwor
ICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZSgpLT5leHRyYWN0RGF0
YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVz
cG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0
LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZN
b3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDkgKzIxNyw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlC
dWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5
YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJl
c3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDAp
OwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlQXNBcnJheUJ1ZmZl
cigpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCh1
bnNpZ25lZCB0aW1lb3V0KQpAQCAtNzQxLDcgKzczOCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmco
KTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVu
dCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAg
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNW
YWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDkgKzEwNjIsNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAg
ICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYg
KCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMDQ4NDYyNmIyZTVkZmRkYTdjYjE2YzRm
NTUyMmRlZjg0YzRhYzE4Ni4uMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJkODAzNzc1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQ1LDcgKzQ2LDYgQEAgY2xhc3MgQmxvYjsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFz
cyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIz
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVu
dDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBT
dHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4
NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3
ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciog
dXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wg
cmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBn
bG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5j
YW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5
ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3
ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAg
ICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4
MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZp
ZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVy
ID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgp
IDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJi
ZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3Mi4uMGI5ZjQ5ZDM2NGMyNTk1ZTIyM2IzMTE0
ZGVhZmNlZTkyYTQwMGZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMg
dm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwog
ICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVy
LmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25z
ZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0
cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMzA2
LDEwICszMDYsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xv
YWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNh
bmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3Bh
cmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YS5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5lbXB0eSgpOwogICAgIH0KIAogICAg
IE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzM0
LDE2ICs3MzQsMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgJiYgbV9yZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAq
IE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAg
JiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9i
dWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVk
RGF0YS5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUg
PSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAK
ICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVp
cmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3Bv
bnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9idWZmZXJlZERhdGEucmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVs
dGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBt
X3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBA
IC04NjksMTAgKzg2OSwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBp
biBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhl
IGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1f
Y2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwor
ICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUo
KSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0
Y2goKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5z
aXplKCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKLSAgICAgICAgbV9idWZmZXJlZERh
dGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCAr
PSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVk
KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTkwOSwxMSArOTA5LDExIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVm
ZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0
YS5nZXQoKS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAg
aWYgKG1fYnVmZmVyZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmICghbV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0
dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAg
ICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7CiAgICAgICAgIH0K
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291
cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU5LDEyICsxMjU5LDEy
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAg
ICBBU1NFUlQobV9idWZmZXJlZERhdGEpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAot
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZlcmVkRGF0
YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVm
ZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjg5LDEyICsxMjg5
LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgp
CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFz
Q2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAg
ICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRS
ZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3Jl
KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25z
ZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1h
cHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgp
LCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hh
cmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li5jNDIzNDY1
MWJhOTI4Yjk1ZDhjNmY1N2JlMjVjNWYyMTE4OTg5ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIApAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERh
dGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXJlZERhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0
YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQw
LDcgKzI0MSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1Rp
bWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdp
bGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBj
ZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4OTljMWMw
MmQwZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1f
Ym9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4
ZjFlYjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2sm
Jik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAg
IHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAg
ICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhl
ZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIw
N2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgp
KQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRh
KCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYy
NmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVm
NjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAg
LTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNv
cmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5Owog
ICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNv
cmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0g
ZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0p
OwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2Rl
KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAg
cmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3Jh
Z2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25z
ZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5i
b2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2
YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmICht
X2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNp
emUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVm
ZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAs
IGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uZDQzYzA4
OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2Us
IFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNw
b25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVs
bHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9v
bCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMw
NDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1f
Y2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRF
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBt
ZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNp
emVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRy
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0K
IApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRD
b21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3Rv
cmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
Y29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAg
ICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgog
ICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1
bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRy
eSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RG
TW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkg
PSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0
MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1
ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
OworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5
OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3Bw
CmluZGV4IGU2N2UwNWJhODQ3OGE1ODE4MzBlMzk3MDY4YjMyZmIwOGQ5MWI3ZWQuLmU2NWIyZWE4
MzhiMDgxODNjOTZiODMxMjBiMWZlZjE1NmJiOGMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAg
LTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFV
Ukwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAgICAg
bV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJlbnRS
ZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAg
IGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1Jl
ZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsKICAg
ICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBl
YTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4yOWY3MWQ3ZTZkYzc1MGVmMTlmMzI4NjJjODliNzE4NWUw
M2JmODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+
IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEu
c2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3Zl
KGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYu
LmU5Y2Q4NzJmOGQ0NGYxNWUwZWUzN2M3MzQ5MmIyZDgwMmFjOTA3MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTM5LDE4ICszOSwxOSBA
QCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5
KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RG
TW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAg
ICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0K
LSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAg
LTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4
IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdm
NmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0
dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5Ojpj
cmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRh
U2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7
CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcx
YmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4
YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3Rl
bSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXpl
KCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
c2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFS
V0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291
cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmlu
ZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1
OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQg
cmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQq
IGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0g
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2Fy
Y2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwog
CiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4
IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3
MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCAr
NTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURh
dGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24g
cmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qg
c2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2Nh
bEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAg
ICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250
aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rp
b247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZh
Mzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2Zi
NTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
CkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNF
X0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9m
IHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlm
CiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9Owor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkg
fSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNi
ODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBA
QCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVk
QnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYg
eyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBS
ZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAg
ICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNl
OjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2Yw
YzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBT
aGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0
ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+
IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMz
NzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsx
OTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsK
ICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUp
IHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJl
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hh
bmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0
eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0y
NDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBk
ZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZl
Y3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAg
Zm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERP
TUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVu
Y29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJl
Y29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVl
OwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAg
ICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQs
NyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikK
QEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2
YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8
ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9y
bURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBA
IHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlk
ZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUo
aWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBz
dGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8
fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
eworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitz
dGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
cHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikg
fHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICsz
MTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNj
cmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIs
IGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3
NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYy
Nzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgz
Mzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5
LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVy
PFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRS
ZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1
bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBh
YzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4g
QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9u
dFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAg
ICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBk
ZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRh
OWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEw
MywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5
ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAg
T0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNF
bmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1h
Z2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsK
LSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFj
aG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcAppbmRleCAzNmE2ZjRmYjA3ZjBhYjlkZGM3YTQ2MThmZWQ0MjJlYzM4
OTc0MDM1Li4yZjQ0OGE3NjM5MjdlMDJlY2MxNTk3NTYwMmM5MDFiNzE5YTFhNjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25z
dCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ygogewog
ICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48
Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25z
dCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxi
b29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2
Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEy
YzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBi
b29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBl
ciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50Ojpj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdy
YXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5
cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dl
YlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGE3MmQwZDJjOTJkN2RlZDQ1ZTBlNDEwYjQxZGNiOGZi
NGRhNWFlODUuLjNmYmRmMTQ3MWVmZjlhNTM2ZGM5OTMzYWE0NGEwOTZiOTRlZDJiYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5
Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6
OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAg
ICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQg
PSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdo
bGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmls
XSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxs
b2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlm
IChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFw
cEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAg
IFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0Lmdl
dCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5y
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5h
dGVkSW5BcHA6Olllc107CkBAIC0yMjIxLDcgKzIyMjEsNyBAQCAtICh2b2lkKV9yZXF1ZXN0UmVz
b3VyY2U6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
TlNEYQogewogICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3Iu
aXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBuaWwpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsLCBuaWwsIGVycm9yLm5zRXJyb3IoKSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAz
MjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBw
b3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0
aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9n
ZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+
IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7Cisg
ICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFl
ZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2Vl
MzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAg
ICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0
aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVn
YXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
LT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcyNzc0ZTI2OTY1YjJkYmIyYTcz
NWUuLmJlMTQzNzBkZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRhNWY1YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29t
cG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBvbmVu
dEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJhdGlv
bnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRD
RihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFk
b3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRh
dGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsK
LSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1l
QXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7Cisg
ICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICB3ZWFr
VGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVn
aXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgx
NGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJv
b2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6
aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAg
ICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUo
KV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMg
b2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRE
YXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpb
dHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0
NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3Jl
OjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhm
aWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsK
IAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2
ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5n
ZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFz
dGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRh
KCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAg
ICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9y
bURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBA
IE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3Rp
bmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAog
ICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUg
ZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1
ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYg
bwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBb
TlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5v
cmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nl
c3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAg
ICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZv
ckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2Zj
MzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJh
YmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAg
LTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVt
ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
YXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFz
VmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0
ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hv
d0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3Vi
bGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5YTgxNmZkYjMx
ODNhMTliNjc5ZTg3NzAzYTBmNDQwZTVhYjkwOTAzLi43MjNjZmU1YjcyNzYxNWY2ZWQxOGI1ZjI1
ZDFlODBkYjczMzFmOTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTE4MSw3ICsxMTgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4s
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNl
bGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAg
IFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3Rp
dmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0
N2JlZjA1MWQ4MGMxNmJkMS4uZWQ4Y2I2NTNlY2ZkZDEzNDczZWUxZDJhZjUwYmFhN2E2ZjdhMTAx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAg
LTE4NywxMCArMTg3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50
ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkK
LSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAg
ICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNSwxNCArMjEyLDExIEBAIGF1dG8gV2Vi
VVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+
IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OldhaXRpbmdGb3JS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwotICAg
IAotICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAg
ICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5k
YXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCisgICAgaWYgKGlzU3luYygpKSB7CisgICAg
ICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLnRha2VBc0NvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXpl
IH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJv
ciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0K
IAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0Rp
ZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9h
ZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMw
ODUyNjcuLmRkNmI3MjQxMGFkZDRlZjYzMWQyODA2OWUxNGEzZjJhMDBjNWNjYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTQzLDcgKzQzLDYgQEAg
Y2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5j
TG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2
ZTA2NzhjMzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5Njdh
YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRD
aGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lk
IHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRv
TGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGlj
eSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJ
Rm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBh
MTAyNTA4Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAt
MzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25E
aWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZp
ZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVm
ZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+
IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0
YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxM
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IDc1Y2I3NTEyY2NhNjc0NzRhNTU0MjRhZDNhMjhjZjZjN2Vl
MGFjZDUuLjRjODYyNzNjM2ZhY2FhMGE2NDJlOWY3NWM0ZDZiZGY0MWE1M2EyNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQpAQCAtMzg0Miw3ICszODQyLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9y
V2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0Fy
cmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJv
YXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5J
dGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21Q
YXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5n
ZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAg
IHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY2MjUsNyArNjYyNSw3IEBAIHN0YXRpYyBCT09M
IGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmln
aW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTk2LDcgKzc1OTYs
NyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdp
dGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJT
aGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNo
YXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxl
cyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBO
R1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBm
aWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQ
TkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6
c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3
OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0OWRh
NDY3Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdk
YjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5Ojpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmlu
ZGV4IGVhZjdlMDc5YWU0MWY3YWRlM2ZjOGNhZjVkODgxZjJjYTFiYTIzNzQuLjFiM2ZlODY4OWYx
Nzk1NzUwNjY3MzA0MWIxZTZkMWI3MzY2ZDEzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBX
ZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQor
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4
IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3
MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBs
ZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RG
OjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERy
b3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdl
YkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBj
MGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0g
KHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdE
ZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGlu
Z0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Om1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6
Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIs
NyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5F
ZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBl
ID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JS
YW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAg
ICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAg
ICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJv
YXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0
eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAg
ICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJl
MDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRv
UGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFn
ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlm
IChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlS
ZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygp
KTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8
QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVt
LT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3
OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5v
dGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBh
Z2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAg
Ym9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21l
bnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3Zl
KSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmEz
NGUyMTJkMDdhZjJmZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2Vi
UGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJl
ZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRh
dGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVh
Y2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlm
IChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAg
ZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNo
YXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNo
YXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVm
ZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlp
bmcoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJl
bGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAg
IG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0
KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29k
aW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkp
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUw
M2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3
ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAg
LTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpj
cmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAw
KQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBt
b2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwor
ICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMw
NzJhMzlhOTg5NTVmZDQ0MzAuLjk4YTZlMmU3YjU3ZTUyMzE4ZjQyYzhjZDE3ZTRmMGRlMDUwOTQw
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJl
c291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4
MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90
IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkYzU2ZDJjNjZlZDg2Yjk2Mjk1MGEzNDgy
MDgzZTM0NThiMzJiNTJjLi4wOGNmYmI1NTBlZGNiNTZjNTk5N2EwNDM2YzI5NjUzZWYwZTgwM2Vm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtNDAzLDEwICs0MDMsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9p
c0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1h
bnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21h
bnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5
dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBs
ZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MzcsNyArNDM0LDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0
YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVh
bUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05MjksOCArOTI2LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVy
ZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAg
ICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51
YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJl
YW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLmdl
dCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDMsOSArMTI0MCw5
IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKIAogICAgIC8vIERl
bGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgICAgICBh
dXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7CisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWRE
aWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5z
aXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAog
ICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRl
eCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi43MzI3NDFkOTVlZTZh
MmI2NTZmM2Q4YzA4YzhhZmZiYTdlMmZhZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbHVnaW5WaWV3QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3Bv
bnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAv
LyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUg
cGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYy
OGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAg
ICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAg
bV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3Qm
KSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwot
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7
CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2
N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wg
bV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxz
ZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+
LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAg
IGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApp
bmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQy
NDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApA
QCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdl
LCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJk
VHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1
NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFm
Yzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0
ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAo
V2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3
NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9h
ZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY0MWE3MGVm
NWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYyYTEuLjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVm
MzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBA
IC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFt
ZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hl
Y2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAg
ICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMo
KS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVy
cmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8g
bWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50Lgog
ICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTMyNCw3ICszMjQsNyBA
QCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9h
cmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2ZmMzU1
ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVz
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFk
VGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5n
IHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0
ZTEwLi43OTU2MjZiMDQ4NjIyMGY5YTMwOWRiMmZiNzI1ZTA0YjIyMjU0YTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNp
bmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDUsNyArNDQsNiBAQCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRp
IHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9CiB7CiB9CiAKQEAgLTU3LDEwICs1NSwxMCBAQCB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
bV9idWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICB3ZWJQYWdlLT5kaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1f
ZmlsZU5hbWUsIG1fdXRpKTsKIAotICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAgICBt
X2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRGaW5pc2hMb2FkaW5nKCkKQEAgLTY5LDEzICs2NywxMiBAQCB2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOwor
ICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KG1fYnVmZmVyLnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXIucmVz
ZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dv
cmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNk
ODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uMjdhZDFjNTIwMjY2MDFlN2M0OWVkMTg3NzdlZWFm
ZjYwY2QxOWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3Qg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRi
NmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVt
ZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VS
TFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+
aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6
ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6
ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hp
dmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5n
ZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8g
YXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNo
aXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2Jm
NWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICsz
NDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURh
dGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rl
ci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6
OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNjBmODRhNDVjMzgwMzVmMmRjZTky
NWNiZWUyYzMxOTkyZTY0MDMyZi4uM2NiNTA2MjRiZjBkN2E4MTEwMmY3Yzg1NDRiMzQxZGI5NjYy
N2JkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAog
ICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7
CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhh
OTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0
ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRF
eHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2Vu
dGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEg
PyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYy
Njc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0
aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lk
IGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAog
ICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAg
ICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhj
b25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3Bv
bnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2Qy
YTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0
NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwg
b25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2Vi
S2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0
YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEz
ZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBA
IC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkz
ZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdh
Zjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFz
dGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQo
KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThk
MGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2Yjdk
YWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShf
cHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291
cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDku
LjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChO
U1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdX
ZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFy
Y2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNl
ZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2
YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAg
ICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJz
ZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6
IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpp
bmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1
NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0
LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1
ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAg
ICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxl
bmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0
UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggYjA4YzFkMjFjZjlmMDRlNjExYjU5
NWVkZTNjYjY1YTE3YzQ5OTc5ZS4uZDNiNTE2YzQxYTkwZTdmYTU3ZGFkOTg5MWQ0OWEzMzkxNDhh
MzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2Rlcjoo
TlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5j
b2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQo
KTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRh
PiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0g
bmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAg
ICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAg
ICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJl
c291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4
dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsK
ICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7
CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJj
ZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpX
ZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5
OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUg
Zm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVj
dDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBA
IC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+
Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgs
NyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2Rpbmcg
PSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciog
Y29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxs
cHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29k
aW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3Jl
RGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYx
OWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJl
YW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0
cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1v
cnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBy
ZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMw
YWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAog
Y2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsK
IAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2
T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwog
CiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcg
bV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3Bw
CmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4
MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpk
YXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
Y2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
Y2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5
YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEu
LjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkg
ZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZv
aWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2
b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIw
Y2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3
NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJl
YW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBF
Q1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1v
cnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1h
a2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFT
b3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVz
ZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBh
NWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQz
ZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQg
V2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1l
VHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAg
YXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChT
VUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwx
MSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0q
IGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhN
RTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmln
aHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVj
dG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChk
YXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwg
JnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAg
ICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0
PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWRE
YXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVy
bCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUs
IHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1Yzhi
MGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2Yx
NWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBA
IC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJl
c291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3Vy
Y2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1v
cnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3
OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xh
c3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0
aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YThlODcxYjBhZjFhMzRiMDU3MjAwMWIzY2EzNzlkNjBiOTEwNWUyOS4uODIyZDAwYzZmZTQxM2I3
MTg3MmYxZWU5ZjY4ZjIzOWUzOWM0ZjllMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1j
b250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84
NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAg
TW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29y
ZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2Nh
NDY4Li44ZjMyYWJjODgwMWQ1MTg4ODgyMzVlZmZiZDBjZWVhNzc3ZGUzYzllIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQzLDQ3IEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50
c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3Rpbmdf
ZmlsZSIpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFT
U0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChi
dWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxl
UGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9U
X05VTEwoYnVmZmVyKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsK
ICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXND
b250aWd1b3VzKCkpOworICAgIGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVD
VF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgp
ID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEo
KSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChi
dWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5z
aXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNUX1RS
VUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5k
QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5k
KCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21w
KGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXIt
PmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUo
KSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAg
LTk2LDEwICs5MSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0
YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0YTAsIHN0cmxl
bih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0
RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIp
KTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltd
ID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29u
Y2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgw
LCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJs
ZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTExLDEwICsxMDYsMTAgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJh
eUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgV1RGTW92ZSh2ZWN0b3IwKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VR
KDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsg
KytpKSB7CkBAIC0xNTEsMTcgKzE0Niw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29w
eSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0
LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1
cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2Us
IHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVz
dERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEsIGxl
bmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxk
ZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUg
dGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRf
RVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9u
ZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBF
WFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1
aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICog
NSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxk
ZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7
CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
MS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBF
WFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQg
U2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8v
IEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERh
dGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVs
bCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVy
Mi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAg
RVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAt
MTc1LDYwICsyMDYsNzAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydh
JywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAn
ZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307
Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMy
KSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90
PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0g
eyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywg
J2onLCAnaycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVy
ID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAg
IGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWpr
bCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7Cisg
ICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0g
Y29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgp
LCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVj
a0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5k
YXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwg
a2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+
c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gy
LnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNp
emUoKSwgImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0
cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVy
ID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQot
ICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJl
dHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQp
KTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZm
ZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZl
cjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1
ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2In
LCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAn
ZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsg
J2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwg
eyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgp
KTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAn
YScgfSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmlu
ZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2Uo
KTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVD
VF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRl
ci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShi
dWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjQ5LDE2ICsyOTAsMTcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWls
ZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxk
ZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTMxMywxNSArMzU1LDE3IEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiAgICAgdWludDhf
dCBkYXRhWzI1Nl07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkKICAgICAg
ICAgZGF0YVtpXSA9IGk7Ci0KICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIGRhdGEsIDI1Nik7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgICAg
ICBjaGFyIGMgPSBpOwotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmYywgMSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZjLCAxKTsKICAgICB9Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQpAQCAtMzU4LDE2ICs0MDIsMTcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6Omlu
X3BsYWNlLCBzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxk
ZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRl
eHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAx
KTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVp
bGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1
bmtzSW5NdWx0aVNlZ21lbnQpCkBAIC00MDYsMTcgKzQ1MSwxOSBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiAgICAgfTsK
ICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQs
IHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0
KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgRVhQRUNUX0VRKGJ1aWxk
ZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gNSkKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOwotICAgIEVYUEVDVF9FUShz
aGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Cisg
ICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNo
ZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBi
MjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZk
N2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMg
dm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBO
U0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFy
cmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWws
IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNo
YXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5i
eXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChA
WyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Indv
cmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0
YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxk
ZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9E
YXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENG
RGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRl
bXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAg
ICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2Vn
bWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKilo
ZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAg
ICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxl
bmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3
b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEu
bGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRD
b3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAg
ICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRh
OmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0
aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZl
ci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVy
LnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVD
VF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBl
Y3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNy
ZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5
dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0Ai
ZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBF
WFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446701</attachid>
            <date>2021-12-10 03:19:18 -0800</date>
            <delta_ts>2021-12-11 04:16:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233442-20211210221916.patch</filename>
            <type>text/plain</type>
            <size>136853</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiYWZmMWUyYmEwODQ5
MDdmYjcyNmUzOTkwYzk4N2E0MTFmYzJlMC4uOTJlMzVhNzE5MTllZTVhMGFlMGI5NmU1NjhkNDMy
NDk0OGMxYWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY4Y2QzNDNiNWQ0ZDNjODYzOGEwYWU1
NWFjOTVlODZiMDJlNWE2MWYuLjZhYzk2MzA5MGIxMmMzOWQ0ZTdhOWU5Y2FkMzVmMmM5YjIxMzZh
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJV
UkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxT
dHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwppbmRleCA1OWNkNDg3YWFkYzE4MGEwMDhkNmFkN2M3MTUyNWE4MzdlZTJh
OTRkLi45ZWU5M2I5MTUzMzNlZDI4ZGFiZDE0MmEwYjk0MDk5YzI1NDMyMWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDEgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVp
bGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uNDJmZThmZGZkNDlkMWU2MGE4ZGNmMTFjMTJmMmZi
MDNlMzQ2ODkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyArMzc1LDcg
QEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9u
c2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVj
ZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5n
ZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNl
aXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMs
OSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURh
dGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSks
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkg
fSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAzN2I4Mzg2YTc4YWU4NzVkYzI1
NjNlYmNiMmE3ODg4NWQzMGJhYzQ0Li5mYWRlNjNlNGJlNDlmNGQxOTM5ZDFkYjhhZTEzMjE4MWFk
MGE5YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRo
VHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25z
CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51
bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7
CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAg
LTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0
cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRh
YmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29u
dGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFk
YWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29u
dGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0
YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZUFzQ29udGlndW91cygp
OworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNl
KSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJl
YW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMjYgKzMyNiwyNCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXpl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZm
ZXIpOworICAgIG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIs
IDApOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgp
OworfQogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7
CitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0K
IAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUxLDcgQEAgUmVmPEJsb2I+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBW
ZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5
cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0
cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBi
bG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAg
cmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRh
KCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQpAQCAtMzYyLDggKzM2MCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2VBc0NvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVU
RjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0K
IApAQCAtMzgzLDEwICszODEsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1
bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hC
b2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsK
LSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0g
ICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZm
ZXIudGFrZUFzQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6Omxv
YWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNi
YTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhi
YjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkg
Y29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAg
ICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQo
KS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVm
UHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRy
PEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggNzVkZWFk
M2I5NjBiYTliYzUyYWNjNzIxZThhOTFjYjg0MjBhNjZmYS4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5
MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQog
CiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1f
ZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9y
ZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0
U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAog
ICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENs
aWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMK
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVCht
X2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAg
ICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3
ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNv
bXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFz
ZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtl
QXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJj
ODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVh
ZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IGQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMuLmI5
OTc2YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5OWI0ZTdjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzMsNyArMzMs
NiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXND
b250ZW50KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAg
ICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVy
LnNpemUoKTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYg
KGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92
ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7Cit9CisKIHNp
emVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OworICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlm
ICghbV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgp
KTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAg
YXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAg
ICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXIt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
aW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uMDRiMzU1MDcz
MzdjOGI4NjFiMzgzZDg4MTNkYzAzZjJhMzg5MTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEwMywxMCArMTA0LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3Rh
bXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAg
ICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9
CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgp
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAg
IHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRl
Y29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwog
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJ
bmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDJmMmU4MmMy
YjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMzZTRhYWJkNmEuLmI4NDkxYWIzMGU0OGM3MzE2Yjg4ODFi
YmQzOWNmMDRhMWM0ZjZiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBA
IC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygp
CiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxw
dHI7CisgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE3LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAg
ICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1
ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEucmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRj
aFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwxOSArMzMzLDI0IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRX
aG9sZVJlc291cmNlKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291
cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5n
ZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEo
KQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVl
NDJiOTE3Li4zN2Q2NjdkODM3NmQwMGRhNzg5NDYyZGNjZTFhZGIzMzY4ODlmZDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNl
cygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0y
MjcsNyArMjI4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJl
Y3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4
NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1
YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAg
ICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9Cisg
ICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRl
bGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5k
RGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vi
c3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVl
YjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA5Njk2ZGUxNzZk
MTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5Li5jNzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNl
NTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRh
dGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlm
ICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
IHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRy
eVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAg
Ly8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/
IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBh
IHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1
bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAg
ICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVz
b3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZh
ZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi45OTNjMmI4ZTgzMGRjM2Q3NWM1YWQzMTliYmFmZTlk
ZjQ1YzUwMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2Ug
dXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBD
UkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4g
aXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsK
ICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0Zjgo
KTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAo
YXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVh
cigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZl
OjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywg
IlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJc
biIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2Np
aVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcu
ZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFs
bHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5n
IHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRh
dGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7
CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShk
YXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWRE
YXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWRE
YXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5h
cHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCgh
c3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUg
bm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhl
IGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2
LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEo
UGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29k
ZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3Qg
bGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1M
aW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0
YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVu
Y29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBt
aHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4
aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmlu
ZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERh
dGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0g
ICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCmluZGV4IDczMzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYuLjY2
NWU2OWNhNzcxNGU0NDlhZmU0Y2E2OGE3MjQxNTIzMGQxMDliMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBh
cnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7
CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAh
ZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9
IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0g
TUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWlt
ZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVz
IGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQot
ICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQu
YXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9y
KCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlm
IChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgw
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgp
IGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAo
c3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50
LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVI
ZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJl
YWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBp
biB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYg
dGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4i
LCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDEwICsxOTMsMTAgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlQXNDb250aWd1b3VzKCk7CiAgICAg
c3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNl
IE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0
RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERh
dGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1LDExICsy
MDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVv
dGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpC
aW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5k
YXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBh
cnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggODRhYTcyZGYxOTYwM2ExOWZhYzhmMmQwZDc0
MjljZmI4ZDU3ZTc3My4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFl
NWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3Qg
QXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25z
dCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAuLjlkMmRjNzM2
NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQz
N2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMw
MjQxN2U0ODRhMjVjYy4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsNyAr
NjQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50
KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAwYjdlZDliZjFjNjA5OWY1NzVhYWIzMGU5NTM0
MWYxNzZmODExODZkLi4xNTRkYjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRh
RnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgw
ZWZjMDU3MGFkYzg5ZS4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00Njgs
NyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1f
dXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVw
ZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJh
Y2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU1NSw3ICs1NTUsNyBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
dXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAg
IGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
aW5kZXggNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNS4uZDUxM2UxNmNi
YTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7
IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBl
IHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZl
clVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURh
dGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBk
YXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJ
bnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJl
ZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDg3MzFlYjgyY2I4ZWYwMWFkM2Ix
NDdkOTAwOTFlOThmOTkyNGJkMWMuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4
MDQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRh
dGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAg
IHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3Rl
ZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRp
bmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBA
IHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVt
ZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91
c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bp
bm5pbmcgYSBydW5sb29wLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJh
NjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7
CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwg
Q3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXll
ZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0
ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
aW5kZXggZGZiYTc2MWNiMDU4NjRmNTQyNDUyM2JhMzdjZDU1YzYwMDVkZWVjMC4uNTU2OTY0M2Nk
NWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lk
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRy
aWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5k
ZXggY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1Ny4uMjE4ZDc0ZjI3NzZh
OTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAg
dm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJy
b3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAKaW5kZXggZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0
NjE5ZS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0
byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUz
ZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBA
IC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBiOGIzMGI3ZTA4
MmNjYzE4ZWM1M2IxNjBhNzhkNmY5YTI4MDFmMmM4Li4xZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFm
ODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlw
dEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRj
YTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcw
NjlkOWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKaW5kZXggYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYS4uNTQyNjZk
ZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2Fj
aGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+
ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIo
ZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXgg
ODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3ODMyMWVkYzdj
YTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCmluZGV4IGMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAuLmI5YTY1
ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRj
ZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0
IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRi
OTRhMi4uZmY0MGM0MTZjYzYxNmU5MmIxMzA3YmFiYjdlMzQzYjM3ZTU0NjAwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRl
ckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0
YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8
UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9h
ZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2Vk
UmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3
ZWYyYTU3MzQuLjIzYzk3MjQyYmI5ZmI3NTNmYWI3NDM3YWY3ZTA4YTA5ZGE5NjIxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAg
LTY5LDcgKzY5LDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRo
IHNpemUgJWxkLiIsIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQo
YnVmZmVyKTsKKyAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZl
cnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZm
ZXIoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3Jp
Z2luYWxEYXRhLmVtcHR5KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVz
cG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0Nv
bnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNv
bnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZl
cnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERh
dGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdl
dCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRiZGRm
MDdjZjYxNjZhNTg2MGJhYzA3NDYyNmQyOTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRl
ICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBAQCBj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1f
cHJldmlld0RhdGEuZ2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFp
blJlc291cmNlKCkKQEAgLTIyMSw4ICsyMjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJl
cGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQo
bV9zdGF0ZSA+PSBTdGF0ZTo6Q29udmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5p
c0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29u
dmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlm
ICghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdE
YXRhLmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFo
YXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBAIHZv
aWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVu
dCYgY2xpZW50KQogICAgIH0KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hl
ZENvbnZlcnRpbmcpOwotICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlQoIW1fcHJldmlld0RhdGEuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3
RXJyb3IuaXNOdWxsKCkpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29u
dmVydGluZygqdGhpcyk7CiB9CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVy
dGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAg
ICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlld0Rh
dGEtPmFwcGVuZChkYXRhKTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAogICAg
IGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0
MGQxOTBiYTY0Y2Y4Y2UyYi4uZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRhOWY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgpAQCAtNDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
Q2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCBlYWM4NDE4M2NhM2Q5YTQ2NDg3OGM2YzQ4ZmNlMDIyMGFkZDQ3OWFlLi5lZDMw
ZTg0OWRkODE4MzhmOGM3MzNmMTNkYjZjMzdjMzc4NDhmM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUzOCw2ICs1MzgsNjUgQEAgc2l6ZV90IERhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2lt
bXV0YWJsZURhdGEpOwogfQogCitTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWls
ZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
Cit9CisKK1NoYXJlZEJ1ZmZlckJ1aWxkZXImIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
PShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlcikgewor
ICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisgICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGluaXRpYWxpemUoYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworU2hhcmVkQnVmZmVyQnVpbGRlciYg
U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3I9KGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIm
IGJ1aWxkZXIpCit7CisgICAgbV9idWZmZXIgPSBidWlsZGVyID8gYnVpbGRlci5jb3B5KCkgOiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IG51bGxwdHIgfTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aW5pdGlhbGl6ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICAvLyBXZSBkbyBub3Qgd2Fu
dCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1
ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgLy8gb25jZSBjcmVhdGVkLgorICAgIGlmIChi
dWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSB7CisgICAgICAg
IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGFwcGVuZChidWZmZXIpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWls
ZGVyOjp0YWtlKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0NvbnRpZ3VvdXMoKQoreworICAg
IHJldHVybiB0YWtlKCktPm1ha2VDb250aWd1b3VzKCk7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZl
cj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIGlmICgh
bV9idWZmZXIpCisgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIs
IDApOworICAgIHJldHVybiB0YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cit9CisKK3Zv
aWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVm
ZmVyKQorICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cit9CisKIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+
JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1f
cG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggN2Q4N2QzOTdhMzJkYTExY2EwNjIyYzA0NTk3
MDZlOTk4OTdiODNjMi4uZDEwYjBlNTQ5YTk5ZmIyNTg2MDAyNGY2OGU4ZjAwMTE3OGQzZDEzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw2ICsy
Nyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTczLDE5ICsxNzQs
NiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsg
fQogICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVu
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLSNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0j
ZW5kaWYKLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRh
UmVmKTsKLSNlbmRpZgotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwotCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CkBAIC0yNDEsNiArMjI5LDIwIEBA
IHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCiBwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRz
IGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhl
IFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9z
aXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwpAQCAtMjY3LDExICsyNjksNiBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2Fs
bCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgotICAgIC8vIFdo
ZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxl
dGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAg
ICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIGRlY29kZXIoKSBjb25zdDsKQEAgLTI5OCw2ICsyOTUsNTIgQEAgcHJpdmF0ZToKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIH07CiAKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlcihTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1aWxkZXIpCisgICAgICAgIDog
bV9idWZmZXIoYnVpbGRlciA/IGJ1aWxkZXIuY29weSgpIDogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
eyBudWxscHRyIH0pIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBpbml0aWFsaXplKFdURk1v
dmUoYnVmZmVyKSk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoc3RkOjppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykKKyAgICAg
ICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKSB7IH0KKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShTaGFyZWRC
dWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQg
YXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7Cisg
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAg
ICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVs
bCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0Vt
cHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVm
ZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKSB7IG1fYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGln
dW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJy
YXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxp
emUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVC
dWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGlu
ZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYg
KGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCmluZGV4IDY4YjA4OTRjYzg1NmVmNTIyNzAzNDM3MDI5YjI2YzViM2RkNTkyNTQuLjQ3
YzEwZjk4MDIzNGM5YWJjNjA4NGVjMjEwNDU2ZjZiMTU0ODE5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYg
ZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRhdGEpOwog
fQogCkBAIC02OCw3ICs2OSw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRh
dGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAg
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9
KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAppbmRleCAzODI5OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgz
MjAwZjdiLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wg
aXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAog
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlp
ZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlk
Q291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBp
bml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4g
a2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gY29udGln
dW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRvKiBkYXRh
ID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CkBAIC0yMjYsMTcgKzIyNiwxNyBAQCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpz
b25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFr
ZSgpOwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1J
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdl
Yk0gaW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXpl
KCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVy
biBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmpl
Y3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNTEsOCArMjUxLDggQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGEKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5
KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgp
OwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RN
RmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYw
ZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2
MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVu
dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1
ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCmluZGV4IDMyYzVhNjY4YTE2YWU0OGVlZThjOWQzOGRiZmYxMzMwNWZkYWMwYjEuLmI2
ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsx
NjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVu
dDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQpAQCAtMjEzLDEwICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0
KCkpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIp
OworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBE
YXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg3LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAK
LXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2
UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5
ZWRkNzkzM2YzN2M0NTFmMzJjNTAuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1YzFlYzQ0MWFmNzE5
NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
NTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdl
YmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1Rf
TEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5
c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBw
ZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJz
ZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hh
cmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2Fk
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5
c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVk
KHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+KCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQt
Pm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFy
c2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzYsMTAgQEAgcHVibGlj
OgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQog
ICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3Bh
eWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0
KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0
ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpA
QCAtOTAsNyArOTQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVt
SWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNTY0NzEyMDAxNjdhM2ZiZDRl
NmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0Li4xYzg3MWY0ZDU2NDkxYmY3NzVlODUwMGMxNmQwYmI4OTRk
NTRlNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3ICsyMjIs
NyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2Vy
KQogCiBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAg
IGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBt
YXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2Vy
KG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19k
ZWNvbXByZXNzX3N0cnVjdCogaW5mCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRl
clNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAg
ICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXIt
PmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1
ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
cmV0dXJuIGJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFm
NzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIz
N2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFM
b2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwog
CiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNj
cmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1
Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcs
MTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8v
IEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRh
LCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91
dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJE
ZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwx
MyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgp
CiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2Nr
IH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5h
cHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRh
KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9
IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRh
a2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2Yy
YmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAg
ICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFs
UmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkK
ICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRh
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0
cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRC
eXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VT
dGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNl
c3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0
YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJl
dGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFz
a0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJl
c3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9v
bCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4g
cmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJl
Y2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVx
dWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExl
bmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVm
ZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0
IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNu
J3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRp
bCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUg
Y29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVk
Q29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0g
ZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAg
ICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0
KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBp
ZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNU
b1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQ
dHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAg
IGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwg
YnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9
IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2Vi
Q29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAg
YXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAg
ICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZl
ci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVy
LT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNp
emUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExl
bmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
IChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7
CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4g
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJl
LgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsK
ICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5i
dWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VU
b1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1
NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7
CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAog
U2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNj
cmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVy
IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6
OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBT
dHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVy
Ojpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZl
ciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5i
ZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2Ny
aXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1
dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwg
Y29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
aW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdm
OGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNj
cmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9i
dWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7
IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZl
cjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9i
dWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1Npbmds
ZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENv
bnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
aW5kZXggZThiYzM5NzlmOTNmNDNkZDRmZmVkM2JlMDVlNjE3NmRkN2EzN2Q3ZS4uMmE3MTI1NDcx
OGVhZWRmNTFhNDQ3ZWNlNjJjNGNkNzE2YmIwNzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2lu
Y2x1ZGUgIkZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ck9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlICJXb3JrZXJH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTc4
LDE1ICs3NywxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcp
IHsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwot
ICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7
Ci0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChj
b250aWd1b3VzRGF0YSkgewotICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5m
cmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3Vy
cmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhKQorICAgICAgICAg
ICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEudGFrZUFzQ29udGlndW91cygpOworICAgICAgICBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGNvbnRpZ3Vv
dXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhKQorICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTEyMSwxMCArMTIwLDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
ICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9k
YXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgbV9k
YXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVl
YmM1YzZlMDRhMWU4NjNjNy4uZGFiNzNmYzdiMWE5M2VkNGUzZmViMzFkNjcwOThkOTliNTE3NmEz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zNiw3ICszNyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC03Niw3ICs3Niw3IEBAIHBy
aXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVu
dCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9j
b250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKaW5kZXggZTBjZGM3MjM0YzU0YTEzZGY3MGE2ODA1YzI4MWI5NDgwNTQ1
YWUyNi4uOWIxMTJiOWRiMmNkODRkMDMyZjU5ZGFmYThlOGUzOGUwNzBlNTNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xp
Y3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlN0cmluZ0FkYXB0b3JzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTIwOCw3ICsyMDcsNyBAQCBS
ZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8gRklY
TUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFy
ZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRh
ID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJh
Y3REYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlKCkt
PmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6Olll
cykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBi
ZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgs
OSArMjE3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVz
cG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNl
VHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUo
bnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2VB
c0FycmF5QnVmZmVyKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0Ojpz
ZXRUaW1lb3V0KHVuc2lnbmVkIHRpbWVvdXQpCkBAIC03NDEsNyArNzM4LDcgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGlu
ZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNw
b25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51
bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIucmVzZXQoKTsKICAgICBtX3Jlc3Bv
bnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOSArMTA2Miw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShk
YXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgot
ICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIAogICAgIGlmICghbV9l
cnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAwNDg0NjI2YjJlNWRm
ZGRhN2NiMTZjNGY1NTIyZGVmODRjNGFjMTg2Li4yZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4
NmJhMmQ4MDM3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0
dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDUsNyArNDYsNiBAQCBj
bGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBA
IC0yMzcsNyArMjM3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNw
b25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCA1NzdkNjU2ZTY3ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxLi4wYjlmNDlkMzY0
YzI1OTVlMjIzYjMxMTRkZWFmY2VlOTJhNDAwZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMDYsMTAg
KzMwNiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJv
eEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1l
dGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
LmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0
d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzQsMTYg
KzczNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAmJiBtX3Jlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIp
CiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBp
c01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRh
LmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdl
YkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAg
IC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
IGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBz
cGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBh
cnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlG
b3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2
OSwxMCArODY5LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNh
c2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2Fj
aGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNo
ZS0+Y2FwYWNpdHkoKSAvIDg7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5z
aXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAg
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgp
KQogICAgICAgICByZXR1cm47CkBAIC04ODAsNyArODgwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXAKICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUo
KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVu
Y29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTA5LDExICs5MDksMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG8KICNlbmRpZgogCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJl
cGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJl
ZERhdGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3lu
Y2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdl
dCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKCFtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQ
YXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUu
Ci0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAg
ICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEuZ2V0KCksIC0xKTsKICAgICAgICAgfQogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VM
b2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KQEAgLTEyNTksMTIgKzEyNTksMTIgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogICAgIEFT
U0VSVChtX2J1ZmZlcmVkRGF0YSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCi0gICAg
aWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEuZ2V0KCkgfSwgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyODksMTIgKzEyODksMTIg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBz
ZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9u
ZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTog
U3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZSht
X25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVk
Qm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVu
dFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCksIFts
b2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLmM0MjM0NjUxYmE5
MjhiOTVkOGM2ZjU3YmUyNWM1ZjIxMTg5ODlmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVk
RGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhOwog
ICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyAr
MjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7
CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZv
ck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBk
YzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNl
aXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAg
ICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1
Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAg
IC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAg
ICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEw
MjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXIt
PnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAg
ICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVF
bnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkp
IHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBj
YW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2Fj
aGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1f
cmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jl
c3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlk
Q29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRi
MmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1
MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAt
NzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZjk0ZGU5
MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OC4uZWQ4Y2I2NTNlY2ZkZDEzNDczZWUx
ZDJhZjUwYmFhN2E2ZjdhMTAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKQEAgLTE4NywxMCArMTg3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9u
VHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92
ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNSwxNCAr
MjEyLDExIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
blR5cGU6OldhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgbV9jb21w
bGV0ZWQgPSB0cnVlOwotICAgIAotICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRh
ID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNp
emUoKSB9OwogCisgICAgaWYgKGlzU3luYygpKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gbV9z
eW5jRGF0YS5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNE
YXRhLnRha2VBc0NvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0Nv
bXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0g
ICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQ
YWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4
IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmRkNmI3MjQxMGFkZDRl
ZjYzMWQyODA2OWUxNGEzZjJhMDBjNWNjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3MgRnJhbWVJbmZvOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTE1LDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVy
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
bV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5j
RGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fc3luY0RhdGE7CiAKICAg
ICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZh
bHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCBkYzU2ZDJjNjZlZDg2Yjk2Mjk1MGEzNDgyMDgzZTM0NThiMzJiNTJjLi4w
OGNmYmI1NTBlZGNiNTZjNTk5N2EwNDM2YzI5NjUzZWYwZTgwM2VmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDAzLDEwICs0MDMs
NyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAg
ICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpI
YXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0g
ICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwot
Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAg
ICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00MzcsNyArNDM0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0g
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YS5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI2
LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0
cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6Rmlu
aXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBp
ZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisg
ICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLmdldCgpOwogCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDMsOSArMTI0MCw5IEBAIHZvaWQgUGx1Z2luVmll
dzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAg
ICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFu
dWFsU3RyZWFtRGF0YS50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVt
ZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBt
X21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2
YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi43MzI3NDFkOTVlZTZhMmI2NTZmM2Q4YzA4YzhhZmZi
YTdlMmZhZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5WaWV3QmFz
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlciBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlz
IHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJp
bmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWlu
dGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRl
eCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIw
ODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9u
c2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVy
QnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBT
aGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9u
KG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmICht
X2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZl
cikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYg
KG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4
NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0
Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJD
b3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNw
b25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2gg
eyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzk1NjI2
YjA0ODYyMjBmOWEzMDlkYjJmYjcyNWUwNGIyMjI1NGEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQ1LDcgKzQ0LDYgQEAgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAg
ICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkgfQogewogfQogCkBAIC01NywxMCArNTUsMTAgQEAgdm9pZCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fYnVmZmVyLT5p
c0VtcHR5KCkpCisgICAgaWYgKG1fYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgd2ViUGFnZS0+
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1lLCBt
X3V0aSk7CiAKLSAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9idWZmZXIuYXBw
ZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNo
TG9hZGluZygpCkBAIC02OSwxMyArNjcsMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdl
LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci50
YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwo
KQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiB9CiAK
IHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZi
YzI2YzA3Y2I1M2RhODcuLjI3YWQxYzUyMDI2NjAxZTdjNDllZDE4Nzc3ZWVhZmY2MGNkMTliMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1f
ZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApp
bmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJh
MTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAog
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBC
U1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkK
IHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAg
ICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpA
QCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8g
SVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAg
IC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8g
cmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0
IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRh
LT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5z
aXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
TmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBt
aW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGMyMDNiMTExYjRhODljYTI0ZGZkNzI3Y2NhZWExZThhZGQ3MDdmMDUuLjgyMmQwMGM2ZmU0
MTNiNzE4NzJmMWVlOWY2OGYyMzllMzljNGY5ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYmFh
ZTI3YTk5OGZmZDY5MWMxMDZiODg3MTU1NmJkNGYwNTIyYzIwMC4uOGYzMmFiYzg4MDFkNTE4ODg4
MjM1ZWZmYmQwY2VlYTc3N2RlM2M5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
QEAgLTc0LDI0ICs3NCwxNiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKICAgICBFWFBFQ1RfVFJVRSghbWVtY21w
KGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwot
ICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZl
ci0+ZGF0YSgpKTsKLX0KLQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKV0pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwg
MSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxk
ZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQ
RUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05OSwxMCArOTEsMTAgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERh
dGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNo
YXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNl
LCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0
RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIs
IHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVj
dGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEo
c3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1
ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTE0LDEw
ICsxMDYsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
TGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHZlY3RvcjAp
KTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFw
cGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRf
RVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAw
OyArK2kpIHsKQEAgLTE1NCwxNyArMTQ2LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
b3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMg
dXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVj
dHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNz
ZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0
ZXN0RGF0YSk7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1
aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwog
ICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNp
emUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQs
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBhdXRvIGNsb25lID0gc2hhcmVkQnVmZmVyLT5j
b3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFT
U0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBj
bG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1
LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6
ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOwor
ICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVu
Z3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRh
a2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8v
IGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxk
ZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0
YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHko
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZm
ZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQo
KSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQo
dGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIy
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBi
dWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7
CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVk
KQpAQCAtMTgyLDE5ICsyMTAsMjEgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVE
YXRhKQogICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKIAotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoczMpKTsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVm
ZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRT
b21lRGF0YSgwKTsKICAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAg
YXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CiAgICAgYXV0
byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJj
ZCIpOwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwpAQCAt
MjAzLDYgKzIzMyw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAg
ICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZm
ZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwogICAgIGNo
ZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVy
KGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKICAgICBFWFBFQ1RfRVEo
Z2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CiAgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gx
LnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCks
IGwuc2l6ZSgpLCAibCIpOwpAQCAtMjExLDE2ICsyNDIsMTggQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGdldFNvbWVEYXRhKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykK
IHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBj
b250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRv
JiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7
CiAgICAgfTsKICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
LCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7
CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAn
ZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VR
KCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywg
J2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsg
eyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAn
YScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
IH0gfSkuZ2V0KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0p
LmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKQEAgLTIzMCwxMSAr
MjYzLDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0g
ezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1
dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+
dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVm
ZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVy
LnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAK
QEAgLTI1NSwxNiArMjkwLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7
IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwot
ICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBF
Q1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsK
KyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0z
MTksMTUgKzM1NSwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNs
dWRlU2VwYXJhdG9yKQogICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBkYXRhLCAy
NTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hhciBjID0gaTsKLSAgICAgICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAgICAg
fQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKQEAgLTM2
NCwxNiArNDAyLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtE
YXRhKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxl
VGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0g
ICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxk
ZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVY
UEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQpAQCAtNDEyLDE3ICs0
NTEsMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5r
c0luTXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBzaW1w
bGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
KwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBFWFBF
Q1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDEpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsK
KyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBs
ZVRleHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1w
bGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQppbmRleCA4NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3Li44YmZi
ODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00OCwxNiArNDgsMTcgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJy
YXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
LSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxk
ZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5n
ZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxs
b0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAg
IGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1
ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXIt
PmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZE
YXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxs
b0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CkBAIC02OSwzMiArNzAsMzIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5T
RGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQo
KGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBD
RkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBA
WyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6
ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUlu
dGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVm
ZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkK
ICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgp
IGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5T
VUludGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAg
ICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAg
d2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0Vx
dWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBv
c2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRv
IGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAg
ICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6
ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNF
cXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2Rpbmdd
XSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446871</attachid>
            <date>2021-12-11 04:16:23 -0800</date>
            <delta_ts>2021-12-11 04:35:39 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211211231618.patch</filename>
            <type>text/plain</type>
            <size>545990</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhOTA4Zjk3ZGNlOWZi
YmU5ZDQwN2ZlYWQ1MDUxNmRjYzQ1M2ExYS4uYTQ0OGNhZmNlZDcwOGVmY2RjNmU1ZmVmNWU3MWQ0
Y2MwNWY1MGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAg
YW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1
bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1h
ZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0
IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBh
cmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBB
cmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xl
IHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVu
IGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVu
IHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdl
CisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEg
Y2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8t
b3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAg
ICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2Yg
YSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAg
ICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJz
aW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFu
Y3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUg
U2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFu
ZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAg
IEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVy
YXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNo
YW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3Jhcnkg
bWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
IGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBj
aGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBp
cyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVu
bGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUg
bWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2Jz
ZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBO
ZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFk
ZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0
ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5k
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
Q0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJ
RkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhE
YXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJD
b3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFz
c2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29u
c3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6
Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhU
YWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZh
bGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhD
b3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxl
Ojpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFi
bGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRM
YW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNj
cmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERh
dGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
bkZ1bmMpOgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0aW9uIGFjY2Vzc29y
IG9uIEF1ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwN2NmYzc4YzdkMWY0MDg1
MzhmNjk0YzE0NTlhYWU0M2I3MTI4YmMxLi45MGFlM2JjOTVkY2ZhMDhhOWExN2ZkNjRhMDg0NWMy
YTI1OTViYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJl
c291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZl
ck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVS
TCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNo
YXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgor
ICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVz
b3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVz
QW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVi
b2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxl
Y3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0
b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92
aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmll
dzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hP
cmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNo
YXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
ck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlblN0YW5kYnkgY29uc3QpOgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0
aW9uIGFjY2Vzc29yIG9uIEF1ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGYwZjk3OTc4MDg2ZjhmYmJmOGYwYTY0OTcwNDgyMTBiNWU3M2ZkYWMu
LmVmZmJjNGJmMDNhZmIyZjY5NDdlY2E5MGJjNDkzMDM1YmU5NDZiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAg
ICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFy
ZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNl
IGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEt
MTItMTAgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDE3MwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDc5NDdlYmEyMmEyNTdjOWJkODRhOWZiNjZjMWEyNDg2NmM5YjIx
YjYuLmMyNjUzNmI0ZWRiYTlhN2UxYThmMzAzOGM3N2FjZWY0ZTI2Yzg3MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lOjpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBm
cm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAg
IHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5
U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAg
ICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAo
V2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6Cisg
ICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTA5ICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBgRE9NUGFzdGVBY2Nl
c3NDYXRlZ29yeWAgdG8gY29udHJvbCB3aGljaCBwYXN0ZWJvYXJkIHRoZSBXZWJQcm9jZXNzIGlz
IGdyYW50ZWQgYWNjZXNzIHRvIHdoZW4gcGFzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
Y3BwCmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLjViYTA4
YmZiMTUwY2MwMWRlMGJkMzFhMDJlMDBhZmE5MzM4ZWYxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxDb250aWdvdXNTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4IDJiNjI2Mjg0MTliMDljYmI2
OTU1MjE1YjBkNWQ3ZDczYzBiMzc0NGQuLjliNTllYjVjYzQ5NTdmMDMzNjY3NTgyZTg2NTNhYzA3
NGZlOGYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEy
ZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFm
ZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZO
ZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmlu
ZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5
ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1l
VHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJ
bWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBO
R1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxv
Yjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21h
Yy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNh
NTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi4xNTdjNWY1MmMwMjZiZmFhOTc2NGVj
ZDI1MDQyM2IxNWQxODYzM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10g
aW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcw
NmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAs
NyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJv
ZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9
IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAg
fSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1
bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4
IGU2Y2MxYWFlNzgzYTUyMDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjQyZmU4ZmRmZDQ5ZDFl
NjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxs
KFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9IHRh
c2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJl
c3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVj
ZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQ
b3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcmVzcG9u
c2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNr
SGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCBy
ZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTI5OSwxNSArMjk5LDE1IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFs
bChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5r
ID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJl
Y29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNl
LCBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwg
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAKLXZv
aWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9u
c2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFz
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxl
IHsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9N
Q2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
c3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBX
VEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxl
KFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAg
ICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9u
c2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNo
dW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3Vv
dXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0
MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwg
UmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYm
KTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25P
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBT
aG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVj
b3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5
YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHko
Y29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJv
ZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewog
ICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0
IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJl
dHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZl
ci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQg
Y2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
LT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25z
ZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5
UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBb
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAg
IH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShj
b25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBE
T01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFm
ODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBA
IC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVR
dWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0
YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2Fj
aGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBS
ZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNw
b25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJv
ZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2
MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRh
dGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAg
ICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2
YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3Qg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJy
YXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUo
KSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIs
IFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50
b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRm
NzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWEx
N2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3Qg
QnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFs
ZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwg
bGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNv
dXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBh
aXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNl
c1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWly
LmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RG
TW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGMwNDczMTI4NGY2NzZhYTVjNTBmOTQwYmU0ZjY2
MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVmMjE5OTJiOWUxYWQwNWFjYTU0ZTcyZDYwNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsy
MzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVG
b3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1No
YXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1v
dmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBz
aGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRh
KFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBm
b3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2Jz
LgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJuICZj
b25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRh
ID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVh
dGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0
LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0
byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9k
eTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJv
ZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNv
ZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNo
UGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhF
bmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJj
aFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFk
MWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3
ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0
YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEg
dGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGM4NjVmN2RhMjM5N2FjNTU5M2I0
NGI1MzlkM2U2NzFlNDNjZTZkYi4uZmFkZTYzZTRiZTQ5ZjRkMTkzOWQxZGI4YWUxMzIxODFhZDBh
OWEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
ICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0y
NjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJl
YW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRh
ID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAg
IGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBl
LCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1
ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDI2ICszMjYsMjQg
QEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9i
dWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBz
aXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEs
IHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVy
biBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7CiB9CiAK
LVJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlC
dWZmZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fYnVmZmVyLnRha2UoKTsKK30KIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0
dXJuIGFycmF5QnVmZmVyOworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0Fy
cmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1MSw3IEBAIFJl
ZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpj
cmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFr
ZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjAsOCBAQCBTdHJpbmcgRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRl
eHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1
b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAK
QEAgLTM4MywxMCArMzgxLDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1l
UHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9k
eVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0g
ICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAg
IH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVy
LnRha2VBc0FycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2Fk
aW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5
NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIw
ZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNv
bnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAg
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCku
Z2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAg
ICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsK
ICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0
cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxG
ZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBk
M2Y4NDhmNjRmMi4uYjkzNDM5MmE5MDNkNGE1ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00
MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0
YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcg
KzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYg
ZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9k
eSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0
YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9k
eSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1
ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApp
bmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTky
NzI5MzBiYmMyZDE2NjZjNmFlYjU0N2ExYjVlZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAg
IHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lk
IHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5n
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQu
aAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJj
ZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdo
bGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxp
Z2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxp
Z2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5
NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWdu
YXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZl
ci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250
aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2Rlcigp
OwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRl
Y29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApp
bmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1
ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQ
YXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVu
Y29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAg
c3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwog
CiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURC
S2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5
NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVj
NGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
KTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXpl
SURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJL
ZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2
MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVj
dFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURC
KTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBh
dXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAg
ICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFu
IG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9Owog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXpl
SURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2
ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8g
c2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsx
Mzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVy
c2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4g
dGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4g
ZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNl
Il9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFi
YXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQog
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtl
eSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9i
amVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVj
dCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7Cisg
ICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlm
ICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlE
YXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2
Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0
b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
KyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAg
aWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktl
eTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5p
bXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBp
ZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
ICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5
IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2
NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0g
SW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkg
dG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBs
b3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgp
IDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50
IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBl
cktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
dXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1
cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMy
MWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVu
dExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJy
ZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRB
cmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpy
ZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50
QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3Bw
CmluZGV4IGZlYjFiOGZmZmI3Yjk0YzllN2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3
MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNlMGI4NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAg
ICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNz
YWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1l
c3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1Bl
bmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQu
LmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgs
NyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdE
YXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRS
ZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5k
aWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0
YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4
YTE0ZWIyMTIyNDA5YjFmODllMC4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1
MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VV
UkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwog
ICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAt
MTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0
IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2Ug
PSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBA
IC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1f
ZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAt
MTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlm
IChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNv
dXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsK
LSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQo
KSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1p
bWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRs
ZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3
N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJk
MWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9t
b2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBi
b29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0
TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0
MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5l
S2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3Jl
OjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBB
U1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXpl
X3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBz
aXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRh
dGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1
Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUs
NyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFt
aW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1
cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxP
YmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFs
T2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRl
eCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJm
NTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1
MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGln
dW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVND
SUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJ
SSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJ
KQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhh
c2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNo
ID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJu
IHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4g
eyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNj
cmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3Njcmlw
dEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAg
ICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
OTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3Njcmlw
dEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2Nv
bnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07
CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBhZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBj
M2E4YzY5YTljMzFkLi4zYzVlYTliODlhOWM5ZTkwMzcwYjk4ZGY1Mjg1NjMwNjQ5OTAwN2Q5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcs
NyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICAgICAgICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAg
ICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZH
Rm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxl
bWVudCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5l
cmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9t
UGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRP
VEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyAr
MTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFT
U0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJv
b2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJl
c3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVT
b3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0
KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nh
c3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIy
YThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJk
MzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgK
QEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFj
ZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0
OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNl
bGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdz
OwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250
VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBA
QCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3Rvcjsg
Ly8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1v
dGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4
MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uZjViZjJiNzI2ZTZhZTk2ODkzNTNjMGE3ZTA4YjQ1ZWZk
YTVkOTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIs
NyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZp
bGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZp
bGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMjgzMWNkM2ZhOWM2YTRmOWZmOWE5YTBlMjVjM2I0
MmU1MmQxYjY0ZC4uY2YzMmFiYzE4MjdmY2ViNTRhZDVlYTAxYmEwMmViMDFmMTc0ZjcwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDE1OSw3ICs0MTU5LDcgQEAgUHJvbWlzZWRB
dHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxl
bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9u
YWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRh
OworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxE
YXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFG
b3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBiMDMxMzZmZmNmMWY2YjM3ZTZiMDdh
YjYyMzJlNjFmNjZkZWU3NTg3Li44ZGE5ZmNjNjQxNmI2NzIxN2QxNzQ5ZWJiODk3ODA3ZTQ3NjEx
MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFy
Y2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRD
b21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9T
dGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsK
IGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUz
OCw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVi
b2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRp
bmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzUsNyArNTc2LDcgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFj
aG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBh
c3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5n
PiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAg
IHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZl
Y3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjIzLDEyICs2MjQsMTIgQEAg
cHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlv
blJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNl
bGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5X
ZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJp
bmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICop
OwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFy
dChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IGYz
MDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4NTZmOGQ4
NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3Ry
aW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVh
ZGVyLmgKaW5kZXggMDhhYTEyNDI2NjIwZjc2OTUzYTc5YjM0ZWRlNWY2ZGYwNTI3YjAxNS4uMWQ5
N2FjZDNjYzc5MTYxYjBhYzUwYzRiZjcwY2IxNTJmYzBmNDg0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTc4LDEwICs3OCwxMCBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNl
bmRpZgogfTsKIApAQCAtMTA1LDEwICsxMDUsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9v
bCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRE
YXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVh
MjRlYzIwZTRmMjFiZmEyNS4uNzRmZTgyODdlOGMzOTNiZTE3YTY3NjY1MzhkOWYzNGEwOTBiMzM0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmls
ZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12
b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgp
LCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZj
YjRkMTU4MTQ2MzViMjRkOTBiYjcuLmU3YTA3MWNhNDAzOWUwMWY0OGQwYjQ5OTUwMWVkNjRkZTYy
NmYwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1
YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4
NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3Jt
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1z
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmlu
ZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNB
dHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRl
ZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RP
YmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51
bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tl
eWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyBy
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVk
aXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVk
aXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2Fy
ZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmlu
Zz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0
RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUo
ZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRS
YW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6
Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwg
VmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJj
aGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBl
cy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEu
YXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIg
QEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0
ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50
KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVu
dC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50
YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1F
OiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMg
aW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMg
bm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJp
bmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJs
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsK
ICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5n
ZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRl
Z2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdl
KDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdl
KDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIz
YjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJi
MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
CkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50
Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlm
IChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAg
ICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAg
IGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAg
ICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAg
ICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1l
V2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciog
ZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVS
TCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
ICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0
ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxl
bmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhN
SU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMs
NyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJG
b3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAo
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9
IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3
YmVlMzRjOGM0NGI2NzllMjI3OS4uNDQwNTliZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3
MzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmlu
ZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hh
cmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0z
MDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0g
ICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1
ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7
CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVu
aXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVu
dCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJt
ZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZN
b3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5k
KHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50Pihm
cmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7
CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1l
KSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwg
b2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZN
b3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBA
IHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsKICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07
CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBB
bmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAg
LTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBl
eHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hv
d01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJl
dHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxs
KCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUm
IG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBA
IC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFz
aG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0
cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZy
YW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2
ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNl
LT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBz
dWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0
aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNh
blNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5n
IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGlu
YXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1l
bnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1h
cmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
V2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlm
IChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRX
ZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIs
NyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8
ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyArNjI2
LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpy
ZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICgh
ZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM5LDcgKzYzOSw3
IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
RihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRp
bmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgz
Myw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVm
ZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDMwMzZjZDMyZDZj
ZDgzMmMyMjAyODNhODQ0NWE4OTlhNWE2NmNhM2MuLmRmMDkxOWY3NWFjZjc5YTgzOTI4MzIxMTkw
YzVjYjJiYWY3NDdlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
QEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgpCiAgICAg
UGFzdGVib2FyZEJ1ZmZlciBwYXN0ZWJvYXJkQnVmZmVyOwogICAgIHBhc3RlYm9hcmRCdWZmZXIu
Y29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQo
KTsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLnR5cGUgPSBsZWdhY3lGb250UGFzdGVib2FyZFR5cGUo
KTsKLSAgICBwYXN0ZWJvYXJkQnVmZmVyLmRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250
RGF0YS5nZXQoKSk7CisgICAgcGFzdGVib2FyZEJ1ZmZlci5kYXRhID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdldCgpKTsKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBh
c3RlYm9hcmRCdWZmZXIpOwogfQogCkBAIC0yNTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVkaXRvcjo6
cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxl
bWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJj
aGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2Fy
ZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rp
b25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8g
aW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6
dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3NTIz
MDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRjYTgx
NGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVj
dG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9j
dW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGlu
ZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3Vs
dC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmls
ZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVj
dG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMg
aW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3Vt
ZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3Rv
cnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxh
dGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQ
RGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAg
IHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYg
c2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRl
bXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0
YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxl
YWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1
bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5n
cygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0
YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRlbXBs
YXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9yZSB0
aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVj
dG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2
NDMwZmUwZmY3My4uYjk5NzZhZjJlNGRkNDA5YTg5YzNhNDI0NDEzOWEzZTk5YjRlN2MwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02Myw4ICs2Miw4IEBAIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQo
KQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAg
ICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+
c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICByZXN1bHQg
PSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZmZXIucmVzZXQoKTsKICAg
ICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODAsMzcgQEAgdW5zaWdu
ZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAg
ICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAhIW1fZGF0YUJ1
ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZm
ZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJU
KCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXIt
PnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci50YWtlQXNDb250aWd1b3Vz
KCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmICht
X2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1f
Y29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29u
dGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
ICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29u
dGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0
ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4wNGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNm
MmEzODkxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9X
YWxsVGltZS5oPgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGlt
ZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7
IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1f
cmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZm
ZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAg
ICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBj
b25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpA
QCAtMTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5n
TmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJl
c291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmlu
ZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFmODUyYzIzNjJiMzk5NDliZGQuLmU1OGJjYzJhYTdm
ODE0ZDk3N2ZmN2Q4ZjI2MjNjMzdlY2JhN2MxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0
MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUo
KSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2Uo
KS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxz
ZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKaW5kZXggOWI1Y2FkOTU5YThlNmYyYzJiZjcwZTFhZWUxNDI4NzQ1OWQwNjYxMi4uYTNjNjBj
M2I2OTZhODNkODMxZDg5N2Y4MTY3YTMyYmUyMzczNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAz
LDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJl
c291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29u
dGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZy
YW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwog
fQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRh
Q29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRF
bmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVj
dG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBz
aXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJk
YTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
aWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VC
dWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50
LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAz
N2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZm
ZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRl
QWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3Jp
Z2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8g
aWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwg
ZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggY2Y2Y2NmMmJkMDg5MjUwYzYwM2ZkMDRiNzRjM2VjOGMwZTQ5YzRmMS4u
ZmRmZDBlYWFmM2E1MDE4ZDkwMGJhMWE2ZDdhNDhhZTU3MzJmMzRjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA1LDExICsxNjA1LDExIEBAIGJvb2wg
RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJl
c291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7
Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1f
cGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAg
ICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291
cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21t
aXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5z
aXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjQ5LDcgKzE2NDksNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vi
c3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjUzLDcgKzIyNTMs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250
ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1p
dHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1h
aW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCBy
ZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKaW5kZXggNTEyMjdiOTZkN2QxN2NhMDdlZTNiN2NmZjQxNjJmM2NiZTFhOTc1
Zi4uNmJkMzJmYzJlY2Y0NmFmN2NkOTM3OWE5ZDAwYzk5MTE2ZWI3YTZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3Rh
dGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIzNSw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYm
KTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MTIsNyArNjEzLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1I
VE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYzEwZDVjMWRiZWJlZjA1NTI4
NDNkZDlmYzBhNTMzZGRiNDc5M2E0Yi4uMDc2ZjM3ZGUzMjU5YTAzYzM4N2ExZTBkMmFmY2FlZDJk
ODI1OWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlD
aAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5j
aHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0
czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
aW5kZXggZmUzMmQ5NGU0Mjg2NTlkNWQ2MWRhYmE3MjE5OGViMTk1OWJhMjVmNi4uMGRhZjRjN2Fi
NjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIxMDM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lk
IHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBm
aW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMo
VGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFhZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNi4u
ZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2ViNTU0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNv
bnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRp
ZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkK
IHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIg
PSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50
KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7
CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBp
ZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3lu
Y2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAg
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMs
IGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMs
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAg
ICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhv
c3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQo
KS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAog
ICAgICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0
aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtl
OjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlr
ZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZWRlY2UxMmNkN2E5
NmZlYjkzNWMzMzQ2NmM0NmNhZTAyMGUyZjNhYy4uOWMzZjc0YzQyZGI4ZTdiYWU5NTQwNWY1NDBm
M2UyODcxOTgyZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYg
KzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9j
dW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURh
dGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRp
ZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZl
dGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZl
bnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25z
dCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3Rl
bVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRS
ZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIz
NS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAot
ICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgp
OwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMx
OCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55
IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0
LDI0ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25z
LmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJE
YXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1
ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXls
b2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+
YXBwZW5kKCpidWZmZXIpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7
CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7
CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25z
dCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkK
LSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRh
LmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIo
KSBjb25zdApAQCAtNTcxLDcgKzU3MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAg
Ly8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMs
IHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxl
bmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uMzdk
NjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtOTgsNyArOTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIHJlc291cmNl
RGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIyOCw3
IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291
cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYx
M2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywx
MSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJl
ZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFy
ZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVz
cG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgog
ICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQy
MGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhl
IHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJl
IGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBD
YWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNv
dWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5
MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNy
ZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxp
bmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiBy
ZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBh
IGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29w
eSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAg
ICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNl
LmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25D
YWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5v
cm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5v
dGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9y
IDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUg
bmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2Fk
KSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUg
ZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBp
ZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2Up
KSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAg
ICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkg
b25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAg
ICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4u
ZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAg
LTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1l
OwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5
YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3Qm
LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNh
Y2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFm
N2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlm
YzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0
YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0
aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0
aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1
MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVu
ZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAx
YjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5jNzcwZDc2NDEzNTA2NTJm
NWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3
ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJj
ZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRl
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRo
OwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRl
eHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2Ut
PmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAo
IWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50
KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEg
ZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVl
IHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlm
ICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7
CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJ
RChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJl
ZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hl
KHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVT
dGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAg
IGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5C
bG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0
cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcg
bG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0
ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAg
ICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQg
YnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7
CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0
byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAt
MTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5j
bHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYg
KCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0
YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgp
KSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwg
TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRh
LmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJl
c3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlz
dDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNw
b25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJl
c291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9
IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENG
U3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0g
Y3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9u
c2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1
NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7
Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwot
ICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNG
RGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7
Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yo
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRh
KDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7
CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBl
SUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMg
bm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFy
Y2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9u
YXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3Vy
Y2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJj
ZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAg
Ym9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJm
cmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBj
cmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJh
bWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJm
cmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6
OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBz
a2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0
byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgp
OwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8g
aXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgp
KQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9j
dW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAor
CiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNh
biBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2
ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJr
dXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2lu
aGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkg
KyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4
N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxB
cmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgp
IGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGgg
Pz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAg
QVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJp
bmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3Ry
aW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNv
dXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0x
NzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRl
TUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxu
Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRl
bnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAg
ICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAg
ICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxl
bmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFz
Y2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3Vs
ZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2gg
aXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAg
ICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAg
aWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAg
ICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgp
LCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxy
XG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgp
LCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJc
biIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29u
dGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lm
eWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0
aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6
ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3Ro
ID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgp
OwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSAr
IGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgi
XHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEu
ZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5h
cHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxl
bmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJv
dW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3Ry
aW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQo
YXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4g
bWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5k
ZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNjY1ZTY5Y2E3NzE0
ZTQ0OWFmZTRjYTY4YTcyNDE1MjMwZDEwOWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5
LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1
dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRC
b3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAg
ICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVy
OjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBh
cnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNv
bnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RG
TW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJl
YWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBs
aW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRh
YiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChs
aW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5h
cHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlm
IChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVv
dGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92
ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2Fz
ZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVk
IGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAg
ICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFk
ZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1
b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZUFzQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6
UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFBy
aW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVu
dC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJp
dDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250
aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29k
aW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhl
YWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAg
ICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJl
Zm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHAKaW5kZXggNGYyMjhlOGQwMzg5YjhiOGNiN2Y0MTQ4NmZkYjc4MWM5YmY2NWJkMi4u
OTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAK
LXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBp
ZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5o
CmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjY0YjE0ZDVm
NjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25N
YW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3Vt
ZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29k
ZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3
YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjlkMmRjNzM2NDgwMmQwZDYyYTY1
OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3Ry
aW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1l
VHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAg
IC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBh
bmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJl
dHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEz
ICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0
KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhl
IGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFy
b3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlm
eShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlr
ZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5l
cmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQz
N2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2Uy
NzFkMDc3NjMzYWU5NC4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAg
KzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGll
bnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0
YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDAp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5D
b2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCku
dG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkg
ewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVy
biBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVz
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAg
IFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMg
fTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7
CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZl
ciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZv
aWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMp
OwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQog
ICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0
YmVmNDIxMC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3Jt
RGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwg
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZv
bnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4
dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
OworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
ZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24o
KSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1
OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uN2MwMWM4Y2MyMzExNzg2YzYy
NGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtl
Q29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBj
cmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpz
aG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNU
aW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0
ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6
Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsK
LSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVy
biBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYg
KCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJT
KQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252
ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6
Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxk
IGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVy
dGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1
Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VE
YXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcg
QEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVk
KGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNm
NC4uZDUxM2UxNmNiYTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGlj
OgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0
aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBl
bnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdl
RGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERh
dGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAg
dm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkx
OTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2
NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAg
ICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVz
dGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9h
ZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9k
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXpl
ID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFT
aXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291
cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdl
IG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNh
bGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcs
MTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5n
UG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7
CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGlu
Y3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0g
ICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAg
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYg
KGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0
YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRh
LT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVT
RShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjli
Li41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEs
OSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAg
Ym9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBA
IC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jh
c2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZp
bmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
ICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3MmEzZTJhMDEwZTc4MTA4OC4uNTU2OTY0M2NkNWU2
ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGlt
ZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hl
ZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1
cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVu
Y29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5l
d0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1f
ZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07
CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNj
NTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uMjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5
NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lk
IGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAt
MjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAg
IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0
KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNU
b0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3
IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+
IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdp
bmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAg
ICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRo
cmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5Yjcw
NmEwYjFiMzMxZjJjODM5Li5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFjYTgyMjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29k
aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0K
IAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3Vt
ZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50
ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVy
bCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQt
PnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5MWFjOGIzNGQz
OTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRj
MzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50
PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXgg
YThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJm
Y2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAog
ICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2Nv
cGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5z
ZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50
KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdF
cnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAg
ICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90
ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZl
cnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQp
KQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9u
dCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQu
dmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5k
ZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQw
OTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZH
Rm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9u
dEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNW
R0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7
CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1
NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li4xZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFmODg5MWFk
ZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFz
aCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOwor
ICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDky
NGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFh
ZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi41
NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEw
IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAg
LTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2Fj
aGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENh
Y2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2Vi
MjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
QEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlS
ZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIq
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5
NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRl
N2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYgQEAgU3RyaW5nIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNv
ZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAp
OwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApp
bmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5jMDRkZDRmMTZj
ZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgU3Ry
aW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIw
YWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyAr
MzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hl
TW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3Rv
cmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdl
dEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0Yjkw
M2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNk
MjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5
IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdl
dCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVv
dXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7
CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNh
Y2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9u
aXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9y
OjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpT
ZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxC
YWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJh
Y2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0
b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxl
QmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmds
ZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQp
OwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdk
ZTk0Yjk0YTIuLmZmNDBjNDE2Y2M2MTZlOTJiMTMwN2JhYmI3ZTM0M2IzN2U1NDYwMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNyw3ICszOCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5h
bERhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFr
UHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hl
ZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nl
c3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRk
MDA5N2VmMmE1NzM0Li4yM2M5NzI0MmJiOWZiNzUzZmFiNzQzN2FmN2UwOGEwOWRhOTYyMWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
CkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIg
d2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+YXBw
ZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9j
b252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
QnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hh
c1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBt
X29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRv
IHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsy
MjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
Ojpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZj
b252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2lu
YWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQo
KS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVy
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggMTgxNzUzMWNi
Njk4YjhhNGVkYTI4MTBjYzQ2NmM4MTY5Y2IxNjNlYi4uY2VkNTYwOWMwMDVhNTM1MmIzM2QxMTk4
ZjQ1Yjk4YmE4NGE3MWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOSw2
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3ND
YXRlZ29yeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1
aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRG
cmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk4LDcgKzk5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9u
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNj
ZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCA5N2UwMWI1YzY5NzZkNjdmMGYzYmRmY2VkZWM2YWJjZjA0ODUy
YzQ0Li43Yjk2MWRiMDQwNGMxZDE5NzM2MDc0ZTRhOWQ2YzFkYzk0MjEyMjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTE5NzMsNyArMTk3Myw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0
eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBm
aW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4g
dGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5k
IHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1
dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0
eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMTY1YWE4MDU4YTAzOTBiNDUxNTc5YTE0NzYxYmQ4
Njc5NDkzNjQzMy4uMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2
b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVO
b2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRy
ZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50
LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rpbmcu
ZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAg
ICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgp
LCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0
LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJj
ZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYw
LDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQo
Q1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBp
ZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0
RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NF
UlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7
IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5j
b2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4
dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAg
ICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdl
KiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2Ut
PnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBt
X3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2Jl
N2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNv
dXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVy
KFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJj
MzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNl
ZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzks
NyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBm
aWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3Bw
CmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNl
ZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
IHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAt
NzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGlu
dCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1f
cGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAor
CiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBm
aWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5k
KFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlm
IChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRz
LnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25I
YW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlh
MjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBi
ZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGlu
Zy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRE
ZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtl
eSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCBiYTE3ODcyNDcxYWUy
ODY0Zjc3MDgyYzQ3ZDY3ZjI2M2VkNWRmOTU4Li41OTZhZmI4ZTkxODg4YzJhYTY3MmZjMGU1ZDA2
Y2I2NDQ5ZGVkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAt
OTMsNyArOTMsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFt
ZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDE0
NzY0MWRkYjY1ODg1ZTM5YTgzYzZhNDU1NTZiMWVhYTZiMzY1ZjcuLjRlMjc4MmQ5YmFjYjlkMDE5
ZDEyMDAyMGRmZjAxMTZlMjUyMzJkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
b2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIs
MTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47
CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5n
Rm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBh
c3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwog
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJ
bkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRV
UkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5
cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFt
ZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQzLDcgKzE0NCw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkQnVmZmVyIHsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICNlbmRpZgogICAg
IFN0cmluZyB0eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiAvLyBGb3IgcmVhZGluZyBmcm9t
IHRoZSBwYXN0ZWJvYXJkLgpAQCAtMTY0LDEwICsxNjUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hh
cmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXIm
KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEZE
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEYo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFC
dWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUg
PSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTgyLDcgKzE4Myw3IEBAIHN0cnVjdCBQYXN0
ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9
IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiAvKiB0
eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7CkBAIC0zMDgsNyArMzA5LDcgQEAg
cHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJvYXJk
SXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAog
ICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0LmdldCgpOyB9CkBAIC0zNDAsNyArMzQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5n
PiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVh
ZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5n
PiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1
ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRD
dXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVk
IGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4
OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8
PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5
cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAog
UGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5j
ZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyAr
MTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21Q
ZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2Rlcihi
dWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2
YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNiAr
MzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
IHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJp
bmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXgg
ZTc3OWRhZWFlNjU5NTM0MThkOTBjMTc1MDEyZDU4ZmI5NjhhNTAwYy4uOWIxZDRiOTVlZGZiZGZh
MDU5NTZhMzk5MDcxYWI5ZmQ5MTgzYjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFk
RmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIx
NjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYz
ZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVy
RGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFz
dGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47
CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRh
dGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGViNDFhNjhjYzVhZjky
MmU4ODJlYzI2OGVkYjJlOTkwNWY0M2MyNDQuLjUyNzBjNTk4NDM1NTEwNGY5MWE1Y2U1NDIyMjNi
NDQ5YzJiNTE4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9h
cmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmlu
ZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlw
ZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAwIGlmIHBhc3RlYm9hcmQgb3du
ZXJzaGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRf
dCBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBT
dHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXgg
NGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uOWViNGJkZGYwN2NmNjE2
NmE1ODYwYmFjMDc0NjI2ZDI5NWFjYjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIlByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIu
aCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02NSw3ICs2NCw3IEBAIGNvbnN0IFJl
c291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3
RGF0YS5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3Vy
Y2UoKQpAQCAtMjIxLDggKzIyMCw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9D
bGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIEFTU0VSVChtX3N0YXRl
ID49IFN0YXRlOjpDb252ZXJ0aW5nKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0
YXJ0Q29udmVydGluZygqdGhpcyk7CiAKLSAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHko
KSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgaWYgKCFtX3By
ZXZpZXdEYXRhLmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKKyAgICAgICAgY2xpZW50
LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEuZ2V0
KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVu
dChjbGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQsNyArMjMzLDcgQEAgdm9pZCBQcmV2
aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGll
bnQpCiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZpbmlzaGVkQ29udmVy
dGluZyk7Ci0gICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkpOworICAgIEFTU0VS
VCghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3ByZXZpZXdFcnJvci5p
c051bGwoKSk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5n
KCp0aGlzKTsKIH0KQEAgLTI1Niw3ICsyNTUsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRl
bGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIGlmIChk
YXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2aWV3RGF0YS0+YXBw
ZW5kKGRhdGEpOworICAgIG1fcHJldmlld0RhdGEuYXBwZW5kKGRhdGEpOwogCiAgICAgaXRlcmF0
ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgewogICAgICAgICBjbGllbnQucHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJh
NjRjZjhjZTJiLi5mMTRkZTFkOTE0YTRjYmNhMTVhNzVkNmQ1ZTVlMGRjYjRjNGE5Zjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CkBAIC00MSw4ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7
CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTE3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9w
cmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291
cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVj
MzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBA
IHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0
cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFm
YjI5YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVkLi5lZDMwZTg0OWRkODE4MzhmOGM3MzNmMTNkYjZj
MzdjMzc4NDhmM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTM3LDMxICszNyw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewotICAgIGFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOwogfQogCi1TaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1Jl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKK30KKwor
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkg
PSBkZWZhdWx0OworCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZp
bGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRl
ci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBh
cHBlbmQoV1RGTW92ZShkYXRhKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoR1NUUkVBTUVSKQpAQCAtNzMsMjYgKzk1LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIp
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZl
cikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVz
ZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRG
aWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzEwOSwxNiBAQCBzdGF0aWMgVmVjdG9yPHVp
bnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
Ojpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8g
dHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0
YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBh
bGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNp
emUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAg
ICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihj
b25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5z
aXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsK
ICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywg
bV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFT
U0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5l
ZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBj
b25zdApAQCAtMjAyLDEwICsxOTQsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
bV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2Vn
bWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2Vn
bWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxl
bWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFw
cGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9z
aXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMTkgKzIwNSwxOSBAQCB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VS
VCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRp
Z3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChk
YXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXpl
ICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBB
U1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9j
b250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0p
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50
ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CkBAIC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBt
X3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50
cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJl
Z2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUt
Pm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVt
ZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJl
dHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVk
QnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3Nl
Z21lbnRzOwpAQCAtMzUzLDEyICszNDAsNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAg
IH0KIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAotewotICAg
IGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVu
ZCgpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CkBAIC0zNzIsNDEgKzM1MywxMiBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAg
ICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRh
R2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHTElCKQotICAgICAg
ICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0
KCksIG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtd
KGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgotICAgICAgICBbXShjb25zdCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKLSAgICAgICAg
W10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBw
cm92aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7
Ci19Ci0KICNpZiAhVVNFKENGKQogdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHt7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKLX0KLQogYm9vbCBT
aGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QK
IHsKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCkBAIC00NTYsNyArNDA4LDExOCBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
c2l6ZSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNC
dWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOwor
ICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91
c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFw
cGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0g
TWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwor
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdT
dWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBd
LnNlZ21lbnQtPmRhdGEoKTsKK30KKworV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB7IGRhdGEo
KSwgc2l6ZSgpIH0gfTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKwor
I2lmIFVTRShDRikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR0xJQikKK1JlZjxE
YXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
K30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNl
Z21lbnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9Cisj
ZW5kaWYKKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21l
bnQ6OmNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3Qq
IERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1h
a2VWaXNpdG9yKAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAorI2lmIFVTRShDRikKKyAgICAg
ICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBV
U0UoR0xJQikKKyAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19n
ZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR1NUUkVB
TUVSKQorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCisjZW5kaWYKKyAg
ICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0
IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEo
KSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CisgICAgKTsKKyAgICByZXR1cm4gc3Rk
Ojp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOworfQorCitib29sIERhdGFTZWdtZW50
Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRh
KTsKK30KKworc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZp
c2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1
MzgsNjYgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFi
dWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpKTsKK30KKworU2hhcmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6
b3BlcmF0b3I9KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVm
ZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgaW5pdGlhbGl6ZShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitTaGFyZWRCdWZmZXJC
dWlsZGVyJiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oY29uc3QgU2hhcmVkQnVmZmVy
QnVpbGRlciYgYnVpbGRlcikKK3sKKyAgICBtX2J1ZmZlciA9IGJ1aWxkZXIgPyBidWlsZGVyLmNv
cHkoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgbnVsbHB0ciB9OworICAgIHJldHVybiAqdGhp
czsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFsaXplKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQoreworICAgIEFTU0VSVCghbV9idWZmZXIpOworICAgIC8vIFdlIGRv
IG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwg
U2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAvLyBvbmNlIGNyZWF0ZWQuCisg
ICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsK
KyAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXBwZW5kKGJ1ZmZlcik7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UoKQoreworICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCitSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygp
Cit7CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKK30KKworUmVmUHRyPEFy
cmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7Cisg
ICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
bnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsK
K30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIoKQoreworICAgIGlm
ICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
K30KKworU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRh
U2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQog
ICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAg
ICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRo
aW5TZWdtZW50KQpAQCAtNDg5LDI2ICs2MTEsMTYgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kK
IHsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zaXplOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAog
ewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9z
ZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50
ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCld
KCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkg
eyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcg
ZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNjQ2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZm
ZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLmQxMGIw
ZTU0OWE5OWZiMjU4NjAwMjRmNjhlOGYwMDExNzhkM2QxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8dXRpbGl0
eT4KICNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTYyLDE0NiArNjMsMTI1IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7Cisv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERh
dGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0g
ICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmls
ZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0g
ICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRy
PE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwot
I2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0
YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVm
KTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRp
ZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
Qnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5
dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRo
ZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJl
IG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkg
YW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9m
IHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJs
ZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0
YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBW
ZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
LQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdp
bGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZl
ciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFu
ZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJy
YXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1
ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29u
c3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0
aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNs
ZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWlu
dDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRl
ciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBp
bW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgot
ICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRh
U2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAg
ICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsK
LSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAg
ICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29u
c3Q7CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2VuZGlmCisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBE
YXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElC
KQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAg
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11
dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CisKK2Ns
YXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZm
ZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9y
PHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNp
ZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5k
aWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAj
ZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFi
bGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBj
b3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRo
ZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJh
Y3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhp
cyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0
aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
Y29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICBib29sIGlzQ29u
dGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQorCisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JF
YWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
KT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYgcHJlZml4KSBjb25zdDsKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFT
ZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsxOTAsMTU3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVu
dFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2Vn
bWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50
cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFz
T25lU2VnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAog
ICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikp
IHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0
aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5n
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7
CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVm
YXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3By
b3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAg
IERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBm
YWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVu
ZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRh
KSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVT
RShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVT
RShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZv
aWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBh
bGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0
ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAvLyBDb21iaW5l
cyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3Ig
YWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5
KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJs
ZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07
CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisv
LyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3Mg
dG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVk
IG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1
ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3Rh
dGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAg
ICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYm
IChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsK
KworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwg
TWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShG
T1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNF
KEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygp
IGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9
IGRlZmF1bHQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihTaGFyZWRCdWZmZXJCdWlsZGVyJiYp
ID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1
aWxkZXImIGJ1aWxkZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVpbGRlciA/IGJ1aWxkZXIuY29w
eSgpIDogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBudWxscHRyIH0pIHsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyBpbml0aWFsaXplKFdURk1vdmUoYnVmZmVyKSk7IH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoc3RkOjppbl9wbGFj
ZV90LCBBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXImIG9wZXJhdG9yPShTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3QgU2hh
cmVkQnVmZmVyQnVpbGRlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXImIG9wZXJhdG9yPShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsK
KyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25z
dCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0K
KworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1w
dHkoKSB7IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorCisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8
U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxTaGFyZWRCdWZmZXI+IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVy
OjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY2LDIzICszNDgs
MjQgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkK
ICAgICByZXR1cm4gY29weURhdGEoKTsKIH0KIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgot
ICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYm
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3
U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hh
cmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgc2l6ZV90IHNpemUoKSBj
b25zdDsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hh
cmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQog
ICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZP
VU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAg
ICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90
IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3Ry
aW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdm
MDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
bgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0K
ICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29y
ayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCks
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgp
KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+
bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRl
bnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2go
KSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5
Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2
LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJy
YXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9w
dENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3RE
aWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVs
bHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmlu
ZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4
ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktl
eWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5j
b2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFs
OwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2
NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uNDdjMTBmOTgwMjM0YzlhYmM2
MDg0ZWMyMTA0NTZmNmIxNTQ4MTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzUsMjMgKzM1LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGFwcGVuZChkYXRhKTsKIH0KIAogLy8gVXNpbmcg
Rm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRp
b24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9u
LUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4o
Jm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdt
ZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgp
KSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjksNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGlu
dE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25l
U2VnbWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21f
c2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYx
ZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAg
LTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVn
YWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQor
c3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJl
ZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBh
bGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0
aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyAr
MzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5
Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0
cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29h
Lm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjk4MDU0
N2I4Y2M0YzRhODhjYTE1NWNiYjE3ODIwYWY4NWUyZGM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUs
MTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdl
YkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
YXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0
YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilz
aXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBz
aXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0
YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBO
U1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAg
ICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdt
ZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVu
dCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2Vn
bWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNV
SW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CkBAIC05NSwyNyArOTUsMjYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KE5TRGF0YSAqZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJu
IGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRn
ZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50
b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VS
VChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdt
ZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNl
RGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNSw3IEBA
IFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29u
c3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246
MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJi
MDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYx
Nzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFz
IEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpz
b24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3
ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAg
ICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAot
ICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0
RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hT
aXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNl
bmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01h
cC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAog
ICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBp
ZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAg
ICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRh
KCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91
cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAg
IGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0Fy
cmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3Zl
KGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3Ry
aW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRh
dGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29u
RGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2Uo
KTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJN
IGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgp
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4g
a2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUg
Zm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5
IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5n
IG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAg
a2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEu
ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpz
b25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFr
ZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xl
dG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdj
YzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6
ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVu
Y29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1
ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5
ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzlj
NjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5j
b2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMx
MTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIw
YmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRF
bmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5p
c2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3Qo
KSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9
IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxH
Qnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4
MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0
IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdi
NzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4g
Ynl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXpl
KCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlz
KSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhp
cykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZp
bGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6
ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5n
ZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3YzQ4Nzhh
YmVlMTAzZmJhZjIxZjU3MC4uMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9y
aWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdp
biwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3cmFwcGlu
ZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA3NDQyMDA0ZjAwYjVkYmEyN2YzYzMyZTY2N2Iz
NmJjY2Y3ODUxNGNkLi40YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04Miw3ICs4Miw3IEBA
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwgSW52
aXNpYmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7IE5v
LCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFs
ID0gSW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9y
aWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRh
LCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApp
bmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0
ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBA
IGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBp
cyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91
bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlv
bkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmlu
ZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRN
ZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDJjZjQ0OGJlYTJmYTZhZTRk
NDdmOTY0MDAyYjNhOTA2YzAxMjkwNjcuLjY3NWUyNGI0MGFjN2FhZGU3NDA4NmYyNDJlYWQwMTUy
MjFjMDI0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hF
VkNVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hF
VkNVdGlsaXRpZXMuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFN0cmluZyBjcmVhdGVBVkNDb2RlY1Bh
cmFtZXRlcnNTdHJpbmcoY29uc3QgQVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAg
LCBoZXgocGFyYW1ldGVycy5sZXZlbElEQywgMikpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEFWQ1Bh
cmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTA6MjAxNAogICAgIC8vIDcuMy4yLjEuMSBT
ZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0IGRhdGEgc3ludGF4CkBAIC0yNTUsNyArMjU1LDcgQEAgU3Ry
aW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiAgICAgICAgICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5nKCkpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTU6MjAx
NAogICAgIC8vIDguMy4zLjEgSEVWQyBkZWNvZGVyIGNvbmZpZ3VyYXRpb24gcmVjb3JkCkBAIC00
MzYsNyArNDM2LDcgQEAgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29k
ZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogICAgIHJldHVybiBwYXJhbWV0ZXJz
OwogfQogCi1zdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29u
ZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUgZm9ybWF0
IG9mIHRoZSBEb1ZpIENvbmZpZ3VyYXRpb24gUmVjb3JkIGlzIGNvbnRhaW5lZCBpbiAiRG9sYnkg
VmlzaW9uIFN0cmVhbXMgV2l0aGluCiAgICAgLy8gdGhlIElTTyBCYXNlIE1lZGlhIEZpbGUgRm9y
bWF0LCBWZXJzaW9uIDIuMCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuaAppbmRleCBhZjc1YzYyZDExNTgwYWQwMzhkNzE3YmU5NGIzMzFkMzlk
ZGRhMjdhLi5lZGZlY2IyNmQ4OTQ2N2EyM2QxZjU3MWNiYzVlOTFiMmZhMzQ3ODVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCkBAIC0z
MSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb3VyQ0M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVj
dCBBVkNQYXJhbWV0ZXJzIHsKICAgICB1aW50OF90IHByb2ZpbGVJREMgeyAwIH07CkBAIC00MSw3
ICs0MSw3IEBAIHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5n
Vmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNl
QVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNv
bmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQ
YXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBAIC01NSw3ICs1NSw3IEBA
IHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7
Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNE
ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNl
SEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVIRVZDQ29k
ZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBEb1Zp
UGFyYW1ldGVycyB7CkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CiB9
OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBh
cmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVEb1ZpQ29k
ZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzli
ZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBj
NDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3Bw
CkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+
IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBV
UkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92
ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwg
bV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBh
ZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVS
TCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNo
YXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAg
U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEt
PnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwog
ICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAt
OTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
TW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92
ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1p
bWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmlu
ZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2Vi
Y2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3
T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0
aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zm
c2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwg
c2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJl
YWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwg
dWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVm
ZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFs
dWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWlu
dDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3
b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVy
ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZl
cnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQor
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0
b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHko
KSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1
ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUo
KSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsy
OTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAg
IGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7Cisg
ICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmlu
ZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZm
NGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBX
T0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxl
IHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBl
eGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSBy
ZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wg
Y29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNm
bnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEg
V09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQg
Zm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0
aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2Mw
MTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVu
Y29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5n
IGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUo
KSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1
ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3Jt
YXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IDE2
MTFiYWFjNDM3MGI1ZmM5OGEyOTIwNzcyMzVkNDVlMDJiNWQwYmEuLmZjOWFhOTlhNjlkZmFlODll
NjViMmFiM2FmNDg5MTQwNzY4NWZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1h
dERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFN0cmluZyBjb2Rl
Y0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8
Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZT
VFIoImF2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAg
ICAgICAgICAgIHJldHVybiAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25S
ZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAg
ICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1ldGVycyA9IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlv
blJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuICJhdmMxIjsKQEAgLTEyMiw3ICsxMjIsNyBAQCBTdHJpbmcgY29kZWNGcm9t
Rm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlv
bikKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0
YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJo
dmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAg
ICAgICByZXR1cm4gImh2YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3Jk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAg
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRl
cnMgPSBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0NvZGVjVHlw
ZV9IRVZDLCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFy
YW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9u
UmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRl
bnNpb25zRGljdCwgQ0ZTVFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRl
bnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAgICBhdXRv
IGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVF
eHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAg
ICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0
ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQx
MzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFy
c2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1
cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24g
eyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpA
QCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlh
bGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFs
aXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNp
ZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5p
dERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0
byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5p
dERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXpl
KCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBk
YXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0
aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRp
ZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1
dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10g
KGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9
KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNl
c3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNl
c3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFn
ZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAg
ICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAg
W3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAg
IFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VE
YXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFW
Q29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3
ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5T
RGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25D
bGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJ
ZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAi
UGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAg
ICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElk
ZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFn
ZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAK
ICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtl
eUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRl
bnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVl
c3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVy
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3RE
YXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1
Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBh
cHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNl
cnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEg
PSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRh
Pj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRh
LmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsK
LSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJp
bmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNl
dFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3Ry
aW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywg
cGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2Jq
ZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJl
bnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0g
a2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBh
dXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAg
ICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5
UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpj
b250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5
SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVl
c3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VE
X1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9
IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11
dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgog
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2Vy
dGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMu
Zmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElk
ZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5
UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpj
b250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVl
c3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFp
blB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5
UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5h
NTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVT
aGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0
aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpO
T107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xv
YWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9u
b3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQg
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVj
ZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlm
IChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQppbmRleCAxYTQzYzdkZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEzLi5hYmQ4
MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsy
MTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVu
dCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
ciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50
LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwg
ZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBh
cHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2Vy
U3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4
N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIy
OTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFp
blB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXgg
YTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2
YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0
cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAK
IFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
CkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjps
b2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAt
MjM4LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byBy
ZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNv
ZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0g
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAg
dm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExv
YWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFS
ZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1
ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFm
OWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25D
b250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsK
QEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+
IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNk
YTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNl
NmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRp
ZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsK
ICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0y
NTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAg
ICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9
IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAg
aWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VU
eXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2Rl
ckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNl
Y3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4K
ICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNp
ZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAg
ICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291
cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCku
Z2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9u
YXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQ
cm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3Vv
dXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9u
IGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFy
ZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUg
Ynl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAg
IC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFj
ay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9
IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJS
ZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwg
JnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBk
YXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3Vv
dXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQ
cm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUz
ZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAt
MzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRh
KGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewot
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENH
UERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRi
NDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIu
bV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0Yzhm
ZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwg
c2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVy
ID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZl
ci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNj
NTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWlu
UHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygp
IGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
aWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShj
dEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4g
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhj
MzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFh
NzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlw
ZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAg
c3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxp
emVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZh
OTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBA
IGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAg
ICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxl
X3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxl
ZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2Nr
ZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBp
ZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJiYWVhNWI4NDVi
ZGVmYmI2ODZmZTI1MjU5MzMuLmI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkgQEAgVmVj
dG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICBy
ZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBw
ZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1
Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5k
ZXggZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5MjM5YmI3
ZjBkOGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApA
QCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5s
aW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwg
Z3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1h
cEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVm
ZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5
YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBi
dWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBt
X2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVh
dGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAg
ICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4MjRkZmMx
YzM4MWE1ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3ZDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MzY2OSw3ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1Rf
REVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQg
b2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRh
KCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdT
VF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7
CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkp
LCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXll
ci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5l
clR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApp
bmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMz
YzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBp
c1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZv
aWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciog
ZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJE
YXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4
dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5n
dGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0
aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEt
PnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAg
ICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1
cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGlj
IEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBF
bmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAo
IXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1
ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1
YzFlYzQ0MWFmNzE5NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRf
TEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2Nh
dGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rp
b24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJ
Zk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBp
ZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0
YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChw
YXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNv
bnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAg
ICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0
Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxv
YWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lm
TmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5
bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCAr
NzYsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUg
Y2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsK
IAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAg
ICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBj
b25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5
bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVy
biBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3Qg
eyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgp
IGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2
YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9y
bURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6
ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRp
b24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRh
ID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAw
NjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9u
RGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTku
LjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9
IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9j
UERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
aW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2
ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
OiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVj
dGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rp
b25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0
aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFs
aWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0
YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
aXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhH
bHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRl
bmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2Vybklu
Zm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3Nl
bWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAg
IH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3Vu
dF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBU
YWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsK
ICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENv
dW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29u
c3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAg
ICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7
CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQ
YXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9
IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBo
QXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7
CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVy
YWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUg
YXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhv
cml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNv
bnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNW
ZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3Qo
dmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZz
ZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3Rh
bnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIs
NyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBt
YXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAg
ICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0
IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAz
NWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMs
NyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8
aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2
NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhk
NjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMs
NyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVm
aW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8
PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8
IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMg
Y29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
LCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6
ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUo
Y29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVj
dGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikK
ICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0
dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1
ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9p
ZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2
YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZv
aWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBU
KiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zm
c2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9m
ZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNl
dCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAg
LTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsK
ICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRh
YmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGgg
Z2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJh
Z2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVy
YWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgp
IGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkg
ewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjky
ZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6
OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFi
bGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRl
bkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2gg
aXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1i
b29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVu
YW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAg
ICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBz
Zm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9u
dERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEg
aW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250
TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250
TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYg
KCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0
ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250
TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1l
bW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAw
NzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4
MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyAr
MTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJh
Z2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VU
YWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxl
KiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZz
ZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3Rp
dHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAg
ICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVz
IGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2Fs
bHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3Rp
dHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJU
YWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZz
dWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVj
dCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENv
dW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0
IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5k
ZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+
PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBA
IC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1
cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhj
b25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVj
dCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVh
dHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVp
bnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0
dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZm
ZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJl
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1
cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJl
Q291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3
IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50
MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwog
Ci0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRh
ZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBm
ZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAg
IH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRM
YW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdT
eXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0p
KQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAg
ICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwog
Ci0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlw
dChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3
ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZh
dWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICgh
Y291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcg
KzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zm
c2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSog
ZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVs
dFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICsz
MzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RP
ZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0Pihi
dWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0
ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBj
b25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExp
c3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0
dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0
dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0
IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
c2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAg
fQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVy
ZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3Qg
RmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICsz
NjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZl
YXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhI
YXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBo
LCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJs
ZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBp
ZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VC
VGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdp
ZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3Bl
blR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBl
OjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVx
dWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxl
KE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVh
ID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsK
ICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lk
IE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBl
OjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NV
QlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0
NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgz
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAg
c3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1l
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnRO
YW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZj
MDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dG
b250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRT
ZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4g
Rm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQ
bGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMw
NDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0
YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFt
ZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5h
bWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkz
ZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fp
cm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBj
b25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmlu
ZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3
M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAK
QEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdE
SU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVE
QyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElP
Qkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6
ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJs
ZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3Qo
aGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
ZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2Iz
NjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5T
bWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1
c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RG
TW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3Zl
KGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRh
KCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9t
RGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdl
PiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1
NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAg
ICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBp
bnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0
YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
YXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3Vz
RGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWRE
YXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAg
ICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURl
Y29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjFjODcxZjRk
NTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpw
ZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0g
PT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8p
CiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1h
cmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkg
ewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
SUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0
YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwg
bWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwog
ICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAg
IHJldHVybiBidWZmZXIudGFrZUFzQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3
ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VE
ZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZi
ZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVT
RShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZGIwYWIzNGIy
NjE4YTA0MDJiMGQyNDNkYzg3MDdhMzY3ODIzZGUzLi5hY2JiODFiMDhkOTJkODdjYTQyZmJkMzIz
ODgzMmMwZjM1MWNkNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKSBjb25zdAogICAg
IHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVz
XSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRh
Rm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMzM4LDcgKzMzOCw3IEBAIGlu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNv
bnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVu
dC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250
ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFty
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xp
ZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkg
ewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xh
c3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21E
YXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xh
c3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21E
YXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0
cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAg
IGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
dXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdp
c3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBh
c3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERh
dGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291
cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1J
TUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAg
ICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwog
Ci0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmlt
YWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3Rl
ZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBA
IFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19Q
UkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFs
aXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0
YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRh
dGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFk
ZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxl
OldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhh
c1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVk
U2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9m
IHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJp
bGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVu
dHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQg
dGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGlu
IHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFn
ZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1
cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8
U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWluZGV4
KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTc2MSw3ICs3NjEsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LAogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291
bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6
MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAyMTZlZGQ4NDc1ZTE0ODhkYjllYTYxMGYxMjNi
YWE4MTllNmIzMWZjLi5hMTUxNmFlMzRmODI5YmE3MmNhNTYxZDk1ZTRmYzk3OGI5NTJkMzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUw
LDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQog
CiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdl
JiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpz
dWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRv
cmVsZWFzZSgpOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlRmlsZVdy
YXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmlu
CiAgICAgaWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV3Q2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZl
ckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZE
UGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOworICAgIG5ld0NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRC
dWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZERGF0YSkucHRy
KCksIGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCkBAIC0yODUsNyArMjg1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgfQogCiAgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXMo
dHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwsIGNvbnRleHQoKSk7
Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEp
LnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBpZiAoYXV0byBhcmNoaXZlRGF0YSA9IHBh
c3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIG1fY2hhbmdl
Q291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1
ZmZlckZvclR5cGUoYXJjaGl2ZURhdGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIFN0
cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBz
dGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBw
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFp
blRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBp
ZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsK
ICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpk
YXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAg
ICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAg
ICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNk
MDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0
ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3Ry
aW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5
cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50
LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5n
ZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5j
bGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0
KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAg
IGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJp
bmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNz
QWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0
KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGE3
ZmU3MjU1NDM3NjY1ZThiOGEwYzc0NTNkMzA0NzQ5ZDQ1NjJmNjcuLmY4Mjg3YzhlNjcxYzliNzky
Yzk1NmIzMWMwN2NmMDAzZjI1OTM1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNv
bnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10p
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9w
YXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShh
ZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBA
IFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21Q
YXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBb
bV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdl
dCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21E
YXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAg
ICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAg
ICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBA
IGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSYgZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAg
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtt
X3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5
cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihz
dHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAg
IH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0
byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0
ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQog
ICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdl
dCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9
CiAKQEAgLTM0MSw3ICszNDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21f
cGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdl
dCgpIG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1J
TUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4g
YnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGluZGV4LAogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVd
KSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA4LDcgKzUwOCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1
c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4u
NWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsx
MTcsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsK
IAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEg
V1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVm
PiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2Qz
Y2RmNWU4Mzg0ZjM2YjdiNTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2
NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIo
KTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIg
YmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51
bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkK
ICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDAp
OwpAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sg
fTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Cisg
ICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKaW5kZXggMGM5MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkwNmI5NTFlYjg5YS4uNjIz
NjRkNzEzYzk1YTlmODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVp
bnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVu
Z3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6
YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxl
bWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50
OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3Jt
RGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAppbmRleCBlOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdjYzI5ZDJkODM3
Li4xMDgyODExMzFmODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0
YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5jb2Rl
ZEZpbGVEYXRhOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8
Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91
bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0
cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdh
eXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJl
YW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4
ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5S
ZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2Vp
dmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQy
YTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQx
ZTI2OTc1YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTks
NyArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExP
RyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5k
bGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAg
IGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9Owog
ICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVk
MzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAg
ICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJl
c291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsg
MCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3lu
dGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhh
bmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQg
fTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVy
OwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNz
IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9Owog
ICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsx
MDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEu
YnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8g
RklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICog
YWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4K
ICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRl
ZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhl
IGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAg
ICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
KyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRh
ID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5Q
dHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVy
YXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9
IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0g
V2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVd
ICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9u
c2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYg
cmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tE
YXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAg
IGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4
KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFu
Z2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0g
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5i
dWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
bnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29u
dGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgo
KTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9n
ZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdl
cygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4
MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5
ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkx
OSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vz
c2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYg
fSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0
ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFE
ZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ry
b25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVj
ZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5
OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVl
ZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBA
IHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0
dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4K
IAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcs
NyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAg
aWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUg
c3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2gg
b3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZm
ZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBA
QCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBp
ZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYg
Ym91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5k
IHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2gg
aXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7
CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRj
aCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUg
d2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVz
aCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRh
cnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlT
dGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91
bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5
NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApA
QCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRG
aWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlm
IChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhh
bmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VE
b3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXgg
ODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFl
OWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAg
ICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1
cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxD
YWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVj
ZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENv
bXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApp
bmRleCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMyYzM4MWQzZDE5NjEzZTYwLi4zY2EyMDgyMmMw
MzE4YTU0OTExMTg2NzVkMjdiODc4ZGQxODNmZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBh
dGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNU
b1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5k
ZXggNzM2NWYwMTA5NDRhOTI2YjBlYmNhOTk2YmRkYWUxNDQ5NTBmNjNlMy4uYjgyNzU0MzcxYmY3
MmM4ZmZlMDg1MWFjZTgxMGU0ZTUzZDlhMTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTc4LDggKzk3OCw4IEBAIHN0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBD
b3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
IGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxV
bmxvY2sobWVtT2JqKTsKIApAQCAtMTAzMCw4ICsxMDMwLDggQEAgc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBT
aGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAg
ICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFM
U0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNj
ZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAg
ICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAg
ICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVT
dWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0
NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDcz
OGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZl
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBi
eXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RF
cnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwog
ICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxl
LCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1Jl
YWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMs
IEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVy
cm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3
MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICgh
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkK
KyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJh
eSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXku
Y29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNh
dGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAK
ICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmll
dywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBA
IHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCBy
ZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
VmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3Bv
bnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFp
bnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNl
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6
OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0
OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJi
YWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZm
ZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRm
OC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5
KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgp
CiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0K
IAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
eworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
ewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgp
LCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBj
b25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdt
ZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21l
bnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1f
YnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVy
LmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZi
NzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3Qg
U2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQo
KTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNj
cmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5
KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
eyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9i
dWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQu
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04
IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZl
ciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDQzM2Q5ZTFhNDVjMjk4ODU0MmIwNWU3NGI0
NzE3YTc3MDU3MjhiYjYuLjJhNzEyNTQ3MThlYWVkZjUxYTQ0N2VjZTYyYzRjZDcxNmJiMDc1ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJGb250U2VsZWN0aW9uQWxnb3JpdGhtLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldPRkZGaWxlRm9y
bWF0LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmgiCkBAIC03OCw5ICs3NywxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29s
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JP
Y2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2Rh
dGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmICht
X2RhdGEpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1
b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0Rh
dGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9
IFdURk1vdmUoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVk
ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDEwICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0K
LSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1
ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5
OWI1MTc2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckds
b2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1
ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1
MjQwLi4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNz
UmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNl
PiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6
c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBj
bGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0g
ICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7
CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4
OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhl
NDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyAr
MTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTog
RG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lk
IGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUp
ID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpN
YXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1h
cHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBw
aW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8p
OworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4
MDVjMjgxYjk0ODA1NDVhZTI2Li45YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1
M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYg
QEAKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4
LDcgKzIwNyw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9i
KCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQ
cm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIp
Ci0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBu
dWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRl
bnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmlu
YWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94
bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBl
KTsKIH0KQEAgLTIxOCw5ICsyMTcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBl
KCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0
RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlC
dWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1M
SHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQodW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3Mzgs
NyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9y
ZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxz
ZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgp
OwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsx
MDYyLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVj
b2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIg
YmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAg
ICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAg
ICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQog
CiAgICAgaWYgKCFtX2Vycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4
IDA0ODQ2MjZiMmU1ZGZkZGE3Y2IxNmM0ZjU1MjJkZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4
YjliNGY5MjVkMzJiZDg2YmEyZDgwMzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRl
ICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00
NSw3ICs0Niw2IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1E
YXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBU
ZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNl
YXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERv
Y3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4
YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhm
NWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NM
b2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJv
cjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVz
b3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVx
dWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRj
NDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5j
KGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewog
ICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3
NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRl
NWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8g
dGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEt
PmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9p
bnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIu
LjBiOWY0OWQzNjRjMjU5NWUyMjNiMzExNGRlYWZjZWU5MmE0MDBmZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVl
c3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1
aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgp
KQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNl
dERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNy
ZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTMwNiwxMCArMzA2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlm
IChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4g
MF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2Fu
VXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVy
cyA9IG1fcGFyYW1ldGVyczsKQEAgLTczNCwxNiArNzM0LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVk
UmVzcG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBz
dGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJl
c291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1p
bWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0
ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11
bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJl
cGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMg
YW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFp
c1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1
ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLnJlc2V0KCk7CiAK
ICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNl
dCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9v
bCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMw
NDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY5LDEwICs4NjksMTAgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAv
LyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGlt
aXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRy
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg4MCw3
ICs4ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIHVuc2lnbmVkIGVuY29kZWRE
YXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRh
KSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAg
ICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0
YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC05MDksMTEg
KzkwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNT
eW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9z
eW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRy
aWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25v
dXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmlj
cyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJl
ZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0
aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1f
YnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAg
ICAgfQpAQCAtMTI1OSwxMiArMTI1OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKICAgICBB
U1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHko
KSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAq
bV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1
ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAK
LSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0g
MDsKIH0KIApAQCAtMTI4OSwxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2go
KSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1By
b2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJl
ZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9y
ZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9u
c2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Np
b24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2Uo
KSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFT
RV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBj
YWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0
KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIg
PSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hl
LT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8m
IG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAg
ICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3
NzM3MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTkyOGI5NWQ4YzZmNTdiZTI1YzVmMjExODk4OWYz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVf
dCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50
IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3lu
Y2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDEsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vi
Q29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpD
YWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBi
b29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNj
MmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1f
Ym9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZh
MTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4
MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2lu
ZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JS
ZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNr
JiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4
ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4
Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChh
dXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVj
b2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVj
NGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3Jk
IENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9u
LCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25z
ZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5
ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlv
bmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2Up
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1v
dmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6
ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkp
OwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJj
MjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZj
NjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAg
U3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAg
ICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
ICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAg
ICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9k
eSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVm
ZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0
dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEw
NTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEw
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJl
c3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAo
dmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWlu
ZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEw
ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXpl
KCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkg
eyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8m
IG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBl
bnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNT
dGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkp
Ci0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5h
bFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwor
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAg
fQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmlu
ZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMw
MzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjdlMDViYTg0NzhhNTgxODMwZTM5NzA2
OGIzMmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4MTgzYzk2YjgzMTIwYjFmZWYxNTZiYjhjMDk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6
OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpk
YXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwot
ICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAg
IG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9t
X2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
aW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMjlmNzFkN2U2
ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlk
MDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJiMmQ4
MDJhYzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJs
aWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgU2hhcmVkQnVm
ZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAg
OiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29w
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZl
cihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5h
cHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250
aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1
ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVj
b2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2
NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6
ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFT
aXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3Qg
dWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2
NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29k
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRp
YyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0
OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWEx
ZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02
OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNo
aXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBp
biByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRl
MjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNv
CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3Vy
aXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNp
bmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEu
dmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRG
YWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNv
bGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAK
aW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZj
MjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0
IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0
MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0
MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6Ondy
YXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVh
YmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRh
KCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5z
aXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCBkYTFlZWUw
YWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3
ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRs
ZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNo
YXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAy
YTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1MzNm
MjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVk
QnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgs
NyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMg
dm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAg
ICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29k
ZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkp
OwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRh
KERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEw
ICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5k
RGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUg
PT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6
ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5h
cHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0
ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXpl
OwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3Bv
bnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVy
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgp
IH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
QEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0
aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9p
ZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29k
CiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZi
NTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRl
SW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vy
c29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUo
RGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdm
MzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBl
NzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2Vs
ZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRD
dXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9u
LnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAg
ICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUy
YzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1
MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dl
YkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9w
dGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3Jl
YXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1
ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNl
RGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAg
IGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRl
YzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4
ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1l
bnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNk
MjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0
MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNf
Q0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJ
bWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBi
b29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFn
ZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQg
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggNjQ0OTFlMTYy
ZWM2YzViY2ZhM2ZjNGNiMjQ5ZjhkOWNjYjYzOWIyMS4uMWI5YjU0YjYyNzE4MTQ5NTA4ZjkwMjdj
ODNjNjczMjA2YmE4Mjk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRl
bXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0
aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1l
bnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUz
Yy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QK
ICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApA
QCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNl
cmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9
CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwNGNmZDAy
OWFjODQ4M2E3YzMyMWJhNTRiMTE4MGM4NmZjNGZkNzhhLi4zZTkyM2NmNjQ5ZDk2ZTM0ZWQyYTUx
ZjkxNzBkNWIxNzQxZmE2NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2MDAsNyArMTYwMCw3IEBAIC0gKHZvaWQpX3N0b3JlQXBw
SGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlm
IChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7
CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxv
Y10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9w
dE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQu
aGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRl
eHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFw
cEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dy
b3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3Jl
OjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpAQCAtMjIyMyw3ICsyMjIz
LDcgQEAgLSAodm9pZClfc3RhcnRJbWFnZUFuYWx5c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIK
IAogLSAodm9pZClfcmVxdWVzdFJlc291cmNlOihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGF0YSAqLCBOU1VSTFJlc3BvbnNlICosIE5TRXJyb3Ig
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVl
c3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKKyAg
ICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvci5p
c051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRl
eCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUx
ZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZv
aWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVj
dGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0
IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5n
dGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAg
bV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3Rv
bURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxl
Y3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
dXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0
ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMy
LDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlv
bkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRl
eCA4MDJmZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi5iZTE0MzcwZGUwOWJk
NTcwMmI5YzdkZGNkNmM3N2I4ZjZkYTVmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIs
MTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlv
bnMoKQogICAgICAgICBpZiAobm9FcnIgIT0gQXVkaW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lz
dHJhdGlvbnMoJnJlZ2lzdHJhdGlvbnMpIHx8ICFyZWdpc3RyYXRpb25zKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBX
VEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyld
ICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlv
bnMpXSAoKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFr
VGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVn
aXN0cmF0aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEgfSksIDApOworICAgICAgICAgICAgYXV0byBy
ZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZN
b3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJlMTBk
YTY2YWJmNjQ4NzJmOTEzYzEzMDUzYTJlYjdkYjdhN2ZjMmMuLjExY2M3NTI4YTFlNWY2YTg2ODRm
Y2UwNjdlMGFkYTA3NDYyZWU0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCkBAIC0yOTgzLDcgKzI5ODMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJy
YXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJD
b3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JU
eXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1f
cGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0p
OworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0
SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5k
ZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBO
U1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lv
biwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2
ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19i
cmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKQEAgLTQ1MDgsNyArNDUwOCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBy
b3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5n
ICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJ
bWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEo
KSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5
cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTYxLDcgKzQ1NjEsNyBAQCBOU0FycmF5ICpXZWJWaWV3
SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJv
cERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNl
ZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0
KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJM
XSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAt
NDYxMyw3ICs0NjEzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzQ2F0ZWdvcnkgcGFzdGVBY2MKICAgICBoaWRlRE9NUGFz
dGVNZW51V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRG
b3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtwYXN0ZWJvYXJkRm9yQWNjZXNzQ2F0
ZWdvcnkocGFzdGVBY2Nlc3NDYXRlZ29yeSkgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdp
bigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1Rv
Q3VycmVudFBhc3RlYm9hcmREYXRhKHBhc3RlYm9hcmROYW1lRm9yQWNjZXNzQ2F0ZWdvcnkocGFz
dGVBY2Nlc3NDYXRlZ29yeSkpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY0
MDAwYTZiNzE5MTM1YzM0M2I0Y2QwOWMwMjNhNjhmMmM1ZTc4NWUuLmVhZjVlZWE5ODIzY2M0ZjI1
OWVhZDNlMDdkMDkwODMxZDlkM2Y5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzM1LDEwICszMzUs
MTAgQEAgRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQ
cm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3QKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5
TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNl
UmVxdWVzdCwgZnJhbWVJbmZvLCBvcmlnaW5hdGluZ1BhZ2UpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVz
dFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpSZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBzZXNzaW9uSUQsIHJlcXVlc3QsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UocmVxdWVzdC5odHRwQm9keSgpKSksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpEYXRhUmVmZXJlbmNlJiYg
ZGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiYgZXJyb3IpIG11dGFibGUgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwgV1RG
TW92ZShyZXNwb25zZSksIFdURk1vdmUoZXJyb3IpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggODZmMWIzMDQ0ZmM4NzlkMDkzZmVlOTZjZWE2ZWIxMGE1Mzg3NjYzNC4uNzBiNTdiNTQ0NTM5
MjY1M2I0MjZhZDc4OGZiMTEyMjViNzkyYWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTY1LDYgKzY1LDcg
QEAgY2xhc3MgU2Vzc2lvbklEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
cm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZFNhbXBsZSA6IGJvb2w7CkBAIC0xMjMsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsK
IAogICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9y
ZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKLSAgICB2
b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmKT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAg
ICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCAxOTVjM2M4MjIwODhhNzdiYjlkZjE2Nzg1MDEwZjQxNTZjNmNjNjYxLi5lZDlkODMz
N2Y0NzRmNzc4ZWY3NmIxOTRjNjkyMGExMTg0ZjJhNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC00NjksNyArNDY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVj
dCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6
OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDk2Yzk1OTU1ZmFlZmE3MzA5YzFhMGNhMjAyZWUyZjFkYjYxZWI2YzUuLjJhY2Q5
MTM1MGFmNTNkNjdmNzljMzA1MmNiMmEwMmI3MWMwMDkyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjM4Miw3ICs2MzgyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW8KICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZXNvdXJj
ZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdlYnNpdGVEYXRh
U3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnJlcXVlc3RSZXNvdXJjZShpZGVudGlmaWVyKCksIHNl
c3Npb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGRhMDQzZjBkYWEy
NTVjOWFlZDMwMWEwMDQ0MDJiNmEwMjc0NjMxZGQuLmY2YzdhOWM5YzBkMDQ3YjhmYTg4ZTM2NGMy
ZjNlYTVjOTU3YzkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsK
IGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25C
dWJibGU7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJ
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVt
ZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9v
bCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lk
IGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApAQCAtMTM3NSw3ICsx
Mzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2Fk
UHJveHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2Fk
UHJveHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKLSAg
ICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZv
aWQgcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOwog
CiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVj
dGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBk
ZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5lZDhjYjY1M2VjZmRkMTM0
NzNlZTFkMmFmNTBiYWE3YTZmN2ExMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTg3LDEwICsxODcsNyBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNl
cHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0g
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE1
LDE0ICsyMTIsMTEgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBt
X2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAg
IGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKKyAg
ICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLnNpemUo
KTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEudGFrZUFzQ29u
dGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5j
RGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVu
dGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5
OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uZGQ2YjcyNDEwYWRkNGVmNjMxZDI4MDY5ZTE0
YTNmMmEwMGM1Y2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE0LDcg
QEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25z
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0
aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4
IDNiMDRhODMzZGJlMGI2YjY2ZWUxNGQzYzMwMGYzMDY4NzE4YmYyY2YuLjVjOGUzYjkyZjA4OTky
ZWY0ZGFkNjJiMTc3YTgyZjMxNjA4YmJiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJw
cmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZl
bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2Vi
Q29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBmYWM5ZTdmYjc4
YmVlMGY2Mjk0NTY3MmUzYmI3NGI5ZTA1MjBlMzBmLi5iNjg0ZTFjOTRlYWNiNjcyOGJiMTMwNjhj
YjY5NTIyNzAxZmE4ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTpp
bmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRh
LmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTJmM2ExNWE0M2I4
YWM0ZDE1MWZmMzAzYzNjNWY3N2QxMzUzMGNiZS4uOTlhZWQwMzY4OGUwZTVjNjE3NDc5MGZkZGQ4
ZDI1MGU5YWI3MGEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODQyLDcgKzM4NDIsNyBAQCAtIChC
T09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlk
KXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bh
c3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNE
YXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRP
cmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjY1MCw3
ICs2NjUwLDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmln
aW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVu
Z3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlm
IChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIu
Z2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4g
Tk87CiAKQEAgLTc2MjMsNyArNzYyMyw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6
KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAg
ICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJp
bmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNT
dHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRo
ZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4i
KV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAg
c2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAg
IFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRS
ZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVy
Om5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCmluZGV4IGRkODI5NTNiOTBmNGYxM2JkYjhjYTc2YzQyOGQwYzA3MmMwYzVkYjkuLjdh
OGZhY2QzMTdhMDYzOTZkNjNiOGRlZWM2NTcxZTU1MTNlYzQ5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBA
IFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTQ0MjdlMmMyMGRmMWVhY2FhNDFkMDIzNTdlODdm
YjNhZWMxNzBlZS4uY2E2Yjg3M2IxYzgzZjVhNTA3Yjg1ZWEwZmYzMWNlZGFkZDFhYWIwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0y
MjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVl
ZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEs
OSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRG
cmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVBy
b3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3
aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVh
bCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1
bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVy
biBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhl
YWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0
YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAg
IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0
ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdl
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVs
ZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZToo
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAg
ICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUo
cmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFC
eVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwot
ICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2Fy
ZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
QnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0
NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZj
MTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAg
ICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJ
KGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
fQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBl
cy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0
YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJk
RGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2
MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4
ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2Vi
UGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBk
aWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFt
ZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwg
V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBk
ZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRl
NWU4MGE0N2MxNzFlMzQxNDY4Yy4uYTM0ZTIxMmQwN2FmMmZmNTczZTFhOGEzNDBlYzFkM2ZjZWI0
MmExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lk
IHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7
CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNo
YXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
QEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Ondp
bGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxB
UEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRC
dWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRp
Z3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZl
ci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQ
SSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5
cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hh
YmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9t
YWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmlu
ZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIy
MjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291
cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNl
LmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAg
bV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
OTRkOWQyY2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4uOThhNmUyZTdiNTdlNTIz
MThmNDJjOGNkMTdlNGYwZGUwNTA5NDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3Vy
Y2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgYXV0byBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJs
ZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1
OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcx
YWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQ
cm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2Vu
ZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChV
TkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGRj
NTZkMmM2NmVkODZiOTYyOTUwYTM0ODIwODNlMzQ1OGIzMmI1MmMuLjA4Y2ZiYjU1MGVkY2I1NmM1
OTk3YTA0MzZjMjk2NTNlZjBlODAzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MDMsMTAgKzQwMyw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9u
c2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFu
dWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICAgICAgbV9tYW51
YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YS5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQzNyw3ICs0MzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAg
ICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7
CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLnJlc2V0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjYsOCBAQCB2b2lkIFBsdWdp
blZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5W
aWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXpl
ZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAg
ICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVy
biBtX21hbnVhbFN0cmVhbURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtMTI0Myw5ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxT
dHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVh
bFN0cmVhbURhdGEpCisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRh
a2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQog
ICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0
YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNk
NjgwMjNmMjMuLjczMjc0MWQ5NWVlNmEyYjY1NmYzZDhjMDhjOGFmZmJhN2UyZmFmNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpA
QCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBt
X21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
bWFudWFsU3RyZWFtRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fbWFu
dWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBz
aWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1
OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBj
YmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBA
IC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
KSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXIt
PmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
IGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3Bv
bnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURh
dGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEs
IFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAg
ICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9
LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRp
ZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAg
ICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2Fk
MmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQx
ZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBt
X2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwg
VW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIs
IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Pj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGRmMjc4YTc4ODRiYWM4OWQ1ZDE1ZjdkYzY0OWQ2
NmQ4MDUwNGMxZjQuLmEwMTAzYjAyYTBmNGQ0YTkxZTE3ZjM1MmJmOGY5ZjEwNTI1ZDhjZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1f
cGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IDRjNDg4OTc2MDEyMmFmNzZmMDNiODBjNGY4NjYyYTEyM2Y0ZDkxN2Uu
LmUxNmIwY2YzODE4MDYxMTBkYmM2ZTE3ZWI3NWQ5MWQzZTRiMDlhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmco
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAog
ICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAg
IHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEw
OWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3Vy
Y2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1
c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUo
KSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKaW5kZXggNjBjMjA3ZWQwZWVhODM2YjQ4NzBkZGE3YzZiYjMwYTE0NTRjYTQ5Ny4u
NGM2NjZkZDQwZDVlOWQ0NTFhMWUwNmMxMWZkMDgwMDI3YTk4YjJhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMp
LCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50
OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hh
cmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7
CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2
ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFu
ZGxlOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
ZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0
dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVm
ZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRs
ZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CkBAIC0zMjQsNyArMzI0LDcg
QEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBw
YXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSks
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDIwMGI2YzAxNTliNjg4Yzcy
YTNmYWRmYmFlMGE2OTQ4MzFiOTM2ZTAuLjA0NWQ0Y2I4OWE5NjY0YTA4ZTFiODFhMDUzMDM1ZGM1
ZDlkMGM1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJp
dmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
aW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRC
dWZmZXJGb3JUeXBlKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJM
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZp
bGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3Jp
dGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNj
NzU0ZTEwLi43OTU2MjZiMDQ4NjIyMGY5YTMwOWRiMmZiNzI1ZTA0YjIyMjU0YTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDUsNyArNDQsNiBAQCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1f
dXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CiB7CiB9CiAKQEAgLTU3LDEwICs1NSwxMCBAQCB2b2lk
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9idWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXIuaXNFbXB0eSgpKQogICAg
ICAgICB3ZWJQYWdlLT5kaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KG1fZmlsZU5hbWUsIG1fdXRpKTsKIAotICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKQEAgLTY5LDEzICs2NywxMiBAQCB2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigp
OworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKG1fYnVmZmVyLnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXIu
cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFz
c3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjli
OWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uMjdhZDFjNTIwMjY2MDFlN2M0OWVkMTg3Nzdl
ZWFmZjYwY2QxOWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29u
c3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBt
X2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEu
LjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6
OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBF
bGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5u
c1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+
c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAg
c2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFy
Y2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0
YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1
dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihh
cmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIx
N2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3
ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJj
ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJh
bWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZTQ2N2VmZmZkNzk0N2I3OGE0
YjgwNzBkNDg4OGIwNmFmOGViN2RjNS4uMzlhYjc0OGUxMjY2ZDU5YjdjNjIwYTc3YzMzOTgzOWVk
MTIxODE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxl
dAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlw
ZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNj
MjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAx
Mzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJ
S2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJl
c2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURh
dGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVO
U0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVU
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNzZiNmQxMmM0YzQ1ODEzOWYzMDgy
NThkOTNmZjMuLmM2NWU5Nzg4OGI5NmI3Mzc5NTg4MDViNmY4ZmEwMDlkY2QxZmIxNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRF
ZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
IAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vz
cyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVnb3J5LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7
IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQx
NDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDFkODFmZmExOWQ5N2YwNGVjN2NjNTc1
YjNlY2U1ZTg4ODE0NDBiMzkuLmUzNTFlYTk5OGMwN2U0YjMwNDZmYzkwZDI2NDVmYWIzZTZkMGQ4
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBT
dHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
aW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRk
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBl
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDE4OGVjNTAwNDUw
NzdkNzhiMDEyMGE2ZGFmYmIwNGZiNzkyNzY0NjQuLmEzZTNjOTMxNjhkODkzNjUwMmFhNmU3ZjQ1
NGU0ZTU3ZWQxYjEyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9y
VHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1
ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAg
LTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAy
OWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1
ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0
YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAo
IW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5S
ZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1h
aW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5
ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJj
aGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNE
aXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVy
ICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2Fk
ZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0
YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZl
RGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFz
ZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4u
NWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29u
c3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0
VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9i
amVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdp
dGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwor
ICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlm
ICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IGIwOGMxZDIxY2Y5
ZjA0ZTYxMWI1OTVlZGUzY2I2NWExN2M0OTk3OWUuLmQzYjUxNmM0MWE5MGU3ZmE1N2RhZDk4OTFk
NDlhMzM5MTQ4YTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlND
b2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICpt
aW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAg
ICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJj
ZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQo
KTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWlt
ZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVz
b3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJh
bWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxS
ZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6
V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQo
KSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05h
bWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICgh
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVS
TApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAg
IGVuY29kaW5nID0gUEFMOjpXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFy
ZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNv
ZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0
YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJl
dHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURh
dGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVE
YXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhj
MDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
TWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFt
KCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1D
T01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAw
OGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRi
MWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcg
KzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5
U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoq
IHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9Owog
ICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5
Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2Vi
QXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYg
KCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1
N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAwODdiNjllN2E4YjBiNjg4YWNiZmU0NGU0ZGFiMWI3
YmRhNTQxZjI4Li45NTgxYWJiZDkzMmE1MWJiZTk4MjA1YTIzMTNhNWM4MDliYTY5N2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5k
RWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7
CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwg
eyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRk
NjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQw
ZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAg
LTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJf
b3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVy
biBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICBy
ZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1
bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjZkYzRhNDg1
MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAog
CiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5f
IEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJs
KQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsK
ICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7
CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0
XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogICAgICAgICAg
ICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0
byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRv
cHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRh
dGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVy
LnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
ZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsK
KyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCks
IG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBT
X09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQz
ZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2
MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291
cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3Ry
ZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4
YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3
ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3
IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDk2YThkYmI4M2I3MjI2NDRkYzZmMDJlYTM1ZjI1OTAxN2FiOWM2YmYuLmViZTIx
MjVjYzg3OWNjNDI5NDI0Y2JhODU2ZjNlODMxZjIzNTBhZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0y
OCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAg
ICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cg
Y2FwdHVyZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIx
MmM3Y2E0NjguLjhmMzJhYmM4ODAxZDUxODg4ODIzNWVmZmJkMGNlZWE3NzdkZTNjOWUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1MiArNDMsNDcgQEAgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlz
dGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAg
ICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0
eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3Vz
KCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAg
RVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5z
aXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+
ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZm
ZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBh
cHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5h
cHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1
ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVy
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIu
c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Cisg
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
KQpAQCAtOTYsMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRl
c3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhMCwg
c3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVu
KHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3RE
YXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdl
dCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0
aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0
ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCks
IHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNiwxMCBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHZlY3Rv
cjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NF
UlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0
MDAwOyArK2kpIHsKQEAgLTE1MSwxNyArMTQ2LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51
bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIg
bGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0
YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxl
bih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
YnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEg
bW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFT
U0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEo
bGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9u
ZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNs
b25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUs
IGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXpl
KCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7Cisg
ICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5n
dGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFr
ZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8g
YnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRl
cikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRh
MCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgp
OworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOwor
ICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZl
cmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgp
KTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0
ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1
aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQp
CkBAIC0xNzUsNjAgKzIwNiw3MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEg
PSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAn
ZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywg
J2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4g
czIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsg
J2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBi
dWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAg
IGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXIt
PmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7
CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVm
Z2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNv
bWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlq
a2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5z
aXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJn
aCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAg
IGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihp
amtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0
YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVm
ZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgp
LCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlq
a2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXpl
KCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXND
aGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VC
dWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVu
dHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAg
ICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29u
dGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRv
IGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8g
YnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVY
UEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFw
cGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAn
YicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30s
IHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycs
ICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgp
LCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rv
cjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWls
ZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScg
fSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsg
eyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSku
Z2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4
U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9Owot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIu
dGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAg
RVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBi
dWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNU
X0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI5MCwxNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAg
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hl
Y2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYg
IWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEo
YnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzEzLDE1ICszNTUsMTcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1
aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQog
ICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAg
ICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNTgsMTYgKzQwMiwxNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0
ZDo6aW5fcGxhY2UsIHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2so
YnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2lt
cGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVy
LT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9F
UShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVy
LnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRB
bGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAg
ICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxl
VGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEo
YnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNU
X0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1
KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAy
YzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNk
MzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0IEBAIHN0
YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0
ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNE
YXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29u
c3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9E
YXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRl
czoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENG
RGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVs
bG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwor
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwg
YnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSho
ZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlk
Z2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0g
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZp
bGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRh
dGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNo
YXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwog
CiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3Js
ZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxv
RGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2Vn
bWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgp
KQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxU
b0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIg
cG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAo
YnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1
aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxE
YXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAg
RVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRh
OmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9
IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRl
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBs
YXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0
YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="472380"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446872</attachid>
            <date>2021-12-11 04:18:45 -0800</date>
            <delta_ts>2021-12-11 06:06:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211211231840.patch</filename>
            <type>text/plain</type>
            <size>545990</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhOTA4Zjk3ZGNlOWZi
YmU5ZDQwN2ZlYWQ1MDUxNmRjYzQ1M2ExYS4uYTQ0OGNhZmNlZDcwOGVmY2RjNmU1ZmVmNWU3MWQ0
Y2MwNWY1MGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAg
YW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1
bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1h
ZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0
IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBh
cmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBB
cmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xl
IHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVu
IGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVu
IHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdl
CisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEg
Y2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8t
b3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAg
ICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2Yg
YSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAg
ICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJz
aW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFu
Y3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUg
U2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFu
ZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAg
IEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVy
YXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNo
YW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3Jhcnkg
bWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
IGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBj
aGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBp
cyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVu
bGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUg
bWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2Jz
ZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBO
ZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFk
ZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0
ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5k
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
Q0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJ
RkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhE
YXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJD
b3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFz
c2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29u
c3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6
Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhU
YWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZh
bGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhD
b3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxl
Ojpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFi
bGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRM
YW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNj
cmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERh
dGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
bkZ1bmMpOgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0aW9uIGFjY2Vzc29y
IG9uIEF1ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwN2NmYzc4YzdkMWY0MDg1
MzhmNjk0YzE0NTlhYWU0M2I3MTI4YmMxLi45MGFlM2JjOTVkY2ZhMDhhOWExN2ZkNjRhMDg0NWMy
YTI1OTViYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJl
c291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZl
ck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVS
TCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNo
YXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgor
ICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVz
b3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVz
QW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVi
b2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxl
Y3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0
b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92
aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmll
dzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hP
cmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNo
YXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
ck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlblN0YW5kYnkgY29uc3QpOgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0
aW9uIGFjY2Vzc29yIG9uIEF1ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGYwZjk3OTc4MDg2ZjhmYmJmOGYwYTY0OTcwNDgyMTBiNWU3M2ZkYWMu
LmVmZmJjNGJmMDNhZmIyZjY5NDdlY2E5MGJjNDkzMDM1YmU5NDZiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAg
ICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFy
ZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNl
IGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEt
MTItMTAgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDE3MwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDc5NDdlYmEyMmEyNTdjOWJkODRhOWZiNjZjMWEyNDg2NmM5YjIx
YjYuLmMyNjUzNmI0ZWRiYTlhN2UxYThmMzAzOGM3N2FjZWY0ZTI2Yzg3MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lOjpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBm
cm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAg
IHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5
U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAg
ICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAo
V2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6Cisg
ICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTA5ICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBgRE9NUGFzdGVBY2Nl
c3NDYXRlZ29yeWAgdG8gY29udHJvbCB3aGljaCBwYXN0ZWJvYXJkIHRoZSBXZWJQcm9jZXNzIGlz
IGdyYW50ZWQgYWNjZXNzIHRvIHdoZW4gcGFzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
Y3BwCmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLjViYTA4
YmZiMTUwY2MwMWRlMGJkMzFhMDJlMDBhZmE5MzM4ZWYxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxDb250aWdvdXNTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4IDJiNjI2Mjg0MTliMDljYmI2
OTU1MjE1YjBkNWQ3ZDczYzBiMzc0NGQuLjliNTllYjVjYzQ5NTdmMDMzNjY3NTgyZTg2NTNhYzA3
NGZlOGYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEy
ZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEzMjc4ZDZkYjFm
ZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZO
ZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmlu
ZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4Y2U4MDlhZTY5
ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1l
VHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJ
bWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBO
R1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxv
Yjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21h
Yy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNh
NTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi4xNTdjNWY1MmMwMjZiZmFhOTc2NGVj
ZDI1MDQyM2IxNWQxODYzM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10g
aW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcw
NmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAs
NyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJv
ZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9
IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAg
fSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1
bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4
IGU2Y2MxYWFlNzgzYTUyMDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjQyZmU4ZmRmZDQ5ZDFl
NjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxs
KFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9IHRh
c2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJl
c3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVj
ZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQ
b3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcmVzcG9u
c2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNr
SGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCBy
ZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTI5OSwxNSArMjk5LDE1IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFs
bChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5r
ID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJl
Y29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNl
LCBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwg
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAKLXZv
aWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9u
c2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFz
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxl
IHsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9N
Q2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
c3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBX
VEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxl
KFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAg
ICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9u
c2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNo
dW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3Vv
dXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0
MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwg
UmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYm
KTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25P
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBT
aG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVj
b3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5
YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHko
Y29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJv
ZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewog
ICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0
IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJl
dHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZl
ci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQg
Y2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
LT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25z
ZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5
UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBb
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAg
IH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShj
b25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBE
T01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFm
ODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBA
IC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVR
dWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0
YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2Fj
aGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBS
ZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNw
b25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJv
ZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2
MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRh
dGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAg
ICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2
YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3Qg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJy
YXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUo
KSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIs
IFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50
b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRm
NzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWEx
N2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3Qg
QnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFs
ZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwg
bGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNv
dXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBh
aXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNl
c1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWly
LmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RG
TW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGMwNDczMTI4NGY2NzZhYTVjNTBmOTQwYmU0ZjY2
MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVmMjE5OTJiOWUxYWQwNWFjYTU0ZTcyZDYwNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsy
MzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVG
b3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1No
YXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1v
dmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBz
aGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRh
KFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBm
b3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2Jz
LgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJuICZj
b25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRh
ID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVh
dGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0
LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0
byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9k
eTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJv
ZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNv
ZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNo
UGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhF
bmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJj
aFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFk
MWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3
ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0
YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEg
dGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGM4NjVmN2RhMjM5N2FjNTU5M2I0
NGI1MzlkM2U2NzFlNDNjZTZkYi4uZmFkZTYzZTRiZTQ5ZjRkMTkzOWQxZGI4YWUxMzIxODFhZDBh
OWEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwog
ICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0y
NjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJl
YW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRl
bnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRh
ID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAg
IGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBl
LCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1
ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDI2ICszMjYsMjQg
QEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9i
dWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBz
aXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEs
IHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVy
biBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7CiB9CiAK
LVJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlC
dWZmZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fYnVmZmVyLnRha2UoKTsKK30KIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0
dXJuIGFycmF5QnVmZmVyOworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0Fy
cmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1MSw3IEBAIFJl
ZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpj
cmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFr
ZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjAsOCBAQCBTdHJpbmcgRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRl
eHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1
b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAK
QEAgLTM4MywxMCArMzgxLDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1l
UHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9k
eVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0g
ICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAg
IH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVy
LnRha2VBc0FycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2Fk
aW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5
NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIw
ZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNv
bnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAg
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCku
Z2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAg
ICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsK
ICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0
cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxG
ZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBk
M2Y4NDhmNjRmMi4uYjkzNDM5MmE5MDNkNGE1ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00
MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0
YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcg
KzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYg
ZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9k
eSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0
YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9k
eSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1
ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApp
bmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTky
NzI5MzBiYmMyZDE2NjZjNmFlYjU0N2ExYjVlZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAg
IHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lk
IHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5n
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQu
aAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJj
ZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdo
bGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxp
Z2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxp
Z2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5
NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWdu
YXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZl
ci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250
aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2Rlcigp
OwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRl
Y29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApp
bmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1
ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQ
YXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVu
Y29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAg
c3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwog
CiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURC
S2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5
NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVj
NGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
KTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXpl
SURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJL
ZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2
MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVj
dFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURC
KTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBh
dXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAg
ICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFu
IG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9Owog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXpl
SURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2
ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8g
c2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsx
Mzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVy
c2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4g
dGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4g
ZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNl
Il9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFi
YXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQog
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtl
eSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9i
amVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVj
dCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7Cisg
ICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlm
ICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlE
YXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2
Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0
b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
KyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAg
aWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktl
eTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5p
bXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBp
ZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
ICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5
IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2
NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0g
SW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkg
dG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBs
b3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgp
IDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50
IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBl
cktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
dXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1
cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMy
MWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVu
dExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJy
ZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRB
cmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpy
ZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50
QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3Bw
CmluZGV4IGZlYjFiOGZmZmI3Yjk0YzllN2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3
MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNlMGI4NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAg
ICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNz
YWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1l
c3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1Bl
bmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQu
LmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgs
NyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdE
YXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRS
ZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5k
aWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0
YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4
YTE0ZWIyMTIyNDA5YjFmODllMC4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1
MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VV
UkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwog
ICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAt
MTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0
IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2Ug
PSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBA
IC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1f
ZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAt
MTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlm
IChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNv
dXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsK
LSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQo
KSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1p
bWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRs
ZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3
N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJk
MWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9t
b2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBi
b29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0
TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0
MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5l
S2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3Jl
OjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBB
U1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXpl
X3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBz
aXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRh
dGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1
Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUs
NyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFt
aW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1
cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxP
YmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFs
T2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRl
eCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJm
NTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1
MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGln
dW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVND
SUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJ
SSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJ
KQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhh
c2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNo
ID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJu
IHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4g
eyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNj
cmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3Njcmlw
dEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAg
ICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
OTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3Njcmlw
dEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2Nv
bnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07
CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBhZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBj
M2E4YzY5YTljMzFkLi4zYzVlYTliODlhOWM5ZTkwMzcwYjk4ZGY1Mjg1NjMwNjQ5OTAwN2Q5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcs
NyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICAgICAgICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAg
ICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZH
Rm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxl
bWVudCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5l
cmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9t
UGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRP
VEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyAr
MTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFT
U0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJv
b2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJl
c3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVT
b3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0
KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nh
c3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIy
YThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJk
MzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgK
QEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFj
ZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0
OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNl
bGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdz
OwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250
VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBA
QCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3Rvcjsg
Ly8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1v
dGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4
MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uZjViZjJiNzI2ZTZhZTk2ODkzNTNjMGE3ZTA4YjQ1ZWZk
YTVkOTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIs
NyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZp
bGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZp
bGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMjgzMWNkM2ZhOWM2YTRmOWZmOWE5YTBlMjVjM2I0
MmU1MmQxYjY0ZC4uY2YzMmFiYzE4MjdmY2ViNTRhZDVlYTAxYmEwMmViMDFmMTc0ZjcwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDE1OSw3ICs0MTU5LDcgQEAgUHJvbWlzZWRB
dHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxl
bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9u
YWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRh
OworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxE
YXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFG
b3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBiMDMxMzZmZmNmMWY2YjM3ZTZiMDdh
YjYyMzJlNjFmNjZkZWU3NTg3Li44ZGE5ZmNjNjQxNmI2NzIxN2QxNzQ5ZWJiODk3ODA3ZTQ3NjEx
MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFy
Y2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRD
b21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9T
dGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsK
IGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUz
OCw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVi
b2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRp
bmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzUsNyArNTc2LDcgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFj
aG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBh
c3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5n
PiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAg
IHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZl
Y3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjIzLDEyICs2MjQsMTIgQEAg
cHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlv
blJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNl
bGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5X
ZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJp
bmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICop
OwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFy
dChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IGYz
MDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4NTZmOGQ4
NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3Ry
aW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVh
ZGVyLmgKaW5kZXggMDhhYTEyNDI2NjIwZjc2OTUzYTc5YjM0ZWRlNWY2ZGYwNTI3YjAxNS4uMWQ5
N2FjZDNjYzc5MTYxYjBhYzUwYzRiZjcwY2IxNTJmYzBmNDg0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTc4LDEwICs3OCwxMCBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNl
bmRpZgogfTsKIApAQCAtMTA1LDEwICsxMDUsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9v
bCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRE
YXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVh
MjRlYzIwZTRmMjFiZmEyNS4uNzRmZTgyODdlOGMzOTNiZTE3YTY3NjY1MzhkOWYzNGEwOTBiMzM0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmls
ZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12
b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgp
LCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZj
YjRkMTU4MTQ2MzViMjRkOTBiYjcuLmU3YTA3MWNhNDAzOWUwMWY0OGQwYjQ5OTUwMWVkNjRkZTYy
NmYwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1
YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4
NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3Jt
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1z
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmlu
ZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNB
dHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRl
ZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RP
YmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51
bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tl
eWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyBy
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVk
aXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVk
aXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2Fy
ZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmlu
Zz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0
RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUo
ZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRS
YW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6
Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwg
VmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJj
aGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBl
cy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEu
YXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIg
QEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0
ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50
KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVu
dC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50
YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1F
OiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMg
aW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMg
bm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJp
bmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJs
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsK
ICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5n
ZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRl
Z2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdl
KDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdl
KDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIz
YjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJi
MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
CkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50
Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlm
IChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAg
ICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAg
IGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAg
ICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAg
ICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1l
V2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciog
ZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVS
TCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
ICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0
ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxl
bmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhN
SU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMs
NyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJG
b3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAo
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9
IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3
YmVlMzRjOGM0NGI2NzllMjI3OS4uNDQwNTliZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3
MzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmlu
ZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hh
cmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0z
MDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0g
ICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1
ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7
CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVu
aXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVu
dCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJt
ZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZN
b3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5k
KHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50Pihm
cmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7
CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1l
KSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwg
b2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZN
b3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBA
IHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsKICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07
CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBB
bmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAg
LTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBl
eHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hv
d01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJl
dHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxs
KCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUm
IG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBA
IC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFz
aG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0
cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZy
YW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2
ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNl
LT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBz
dWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0
aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNh
blNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5n
IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGlu
YXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1l
bnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1h
cmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
V2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlm
IChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRX
ZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIs
NyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8
ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyArNjI2
LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpy
ZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICgh
ZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM5LDcgKzYzOSw3
IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
RihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRp
bmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgz
Myw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVm
ZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDMwMzZjZDMyZDZj
ZDgzMmMyMjAyODNhODQ0NWE4OTlhNWE2NmNhM2MuLmRmMDkxOWY3NWFjZjc5YTgzOTI4MzIxMTkw
YzVjYjJiYWY3NDdlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
QEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgpCiAgICAg
UGFzdGVib2FyZEJ1ZmZlciBwYXN0ZWJvYXJkQnVmZmVyOwogICAgIHBhc3RlYm9hcmRCdWZmZXIu
Y29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQo
KTsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLnR5cGUgPSBsZWdhY3lGb250UGFzdGVib2FyZFR5cGUo
KTsKLSAgICBwYXN0ZWJvYXJkQnVmZmVyLmRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250
RGF0YS5nZXQoKSk7CisgICAgcGFzdGVib2FyZEJ1ZmZlci5kYXRhID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdldCgpKTsKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBh
c3RlYm9hcmRCdWZmZXIpOwogfQogCkBAIC0yNTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVkaXRvcjo6
cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxl
bWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJj
aGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2Fy
ZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rp
b25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8g
aW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6
dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3NTIz
MDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRjYTgx
NGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVj
dG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9j
dW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGlu
ZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3Vs
dC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmls
ZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVj
dG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMg
aW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3Vt
ZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3Rv
cnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxh
dGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQ
RGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAg
IHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYg
c2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRl
bXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0
YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxl
YWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1
bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5n
cygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0
YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRlbXBs
YXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9yZSB0
aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVj
dG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2
NDMwZmUwZmY3My4uYjk5NzZhZjJlNGRkNDA5YTg5YzNhNDI0NDEzOWEzZTk5YjRlN2MwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02Myw4ICs2Miw4IEBAIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQo
KQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAg
ICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+
c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICByZXN1bHQg
PSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZmZXIucmVzZXQoKTsKICAg
ICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODAsMzcgQEAgdW5zaWdu
ZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAg
ICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAhIW1fZGF0YUJ1
ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZm
ZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVy
LmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJU
KCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXIt
PnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci50YWtlQXNDb250aWd1b3Vz
KCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmICht
X2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1f
Y29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29u
dGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
ICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29u
dGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0
ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4wNGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNm
MmEzODkxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9X
YWxsVGltZS5oPgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGlt
ZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7
IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1f
cmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZm
ZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAg
ICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBj
b25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpA
QCAtMTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5n
TmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJl
c291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmlu
ZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFmODUyYzIzNjJiMzk5NDliZGQuLmU1OGJjYzJhYTdm
ODE0ZDk3N2ZmN2Q4ZjI2MjNjMzdlY2JhN2MxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0
MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUo
KSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2Uo
KS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxz
ZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKaW5kZXggOWI1Y2FkOTU5YThlNmYyYzJiZjcwZTFhZWUxNDI4NzQ1OWQwNjYxMi4uYTNjNjBj
M2I2OTZhODNkODMxZDg5N2Y4MTY3YTMyYmUyMzczNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAz
LDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJl
c291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29u
dGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZy
YW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwog
fQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRh
Q29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRF
bmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVj
dG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBz
aXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJk
YTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
aWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VC
dWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50
LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAz
N2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZm
ZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRl
QWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3Jp
Z2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8g
aWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwg
ZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggY2Y2Y2NmMmJkMDg5MjUwYzYwM2ZkMDRiNzRjM2VjOGMwZTQ5YzRmMS4u
ZmRmZDBlYWFmM2E1MDE4ZDkwMGJhMWE2ZDdhNDhhZTU3MzJmMzRjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA1LDExICsxNjA1LDExIEBAIGJvb2wg
RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJl
c291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7
Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1f
cGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAg
ICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291
cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21t
aXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5z
aXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjQ5LDcgKzE2NDksNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vi
c3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjUzLDcgKzIyNTMs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250
ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1p
dHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1h
aW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCBy
ZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKaW5kZXggNTEyMjdiOTZkN2QxN2NhMDdlZTNiN2NmZjQxNjJmM2NiZTFhOTc1
Zi4uNmJkMzJmYzJlY2Y0NmFmN2NkOTM3OWE5ZDAwYzk5MTE2ZWI3YTZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3Rh
dGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIzNSw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYm
KTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MTIsNyArNjEzLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1I
VE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYzEwZDVjMWRiZWJlZjA1NTI4
NDNkZDlmYzBhNTMzZGRiNDc5M2E0Yi4uMDc2ZjM3ZGUzMjU5YTAzYzM4N2ExZTBkMmFmY2FlZDJk
ODI1OWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlD
aAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5j
aHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0
czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
aW5kZXggZmUzMmQ5NGU0Mjg2NTlkNWQ2MWRhYmE3MjE5OGViMTk1OWJhMjVmNi4uMGRhZjRjN2Fi
NjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIxMDM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lk
IHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBm
aW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMo
VGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFhZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNi4u
ZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2ViNTU0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNv
bnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRp
ZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkK
IHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIg
PSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50
KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7
CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBp
ZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3lu
Y2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAg
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMs
IGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMs
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAg
ICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhv
c3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQo
KS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAog
ICAgICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0
aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtl
OjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlr
ZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZWRlY2UxMmNkN2E5
NmZlYjkzNWMzMzQ2NmM0NmNhZTAyMGUyZjNhYy4uOWMzZjc0YzQyZGI4ZTdiYWU5NTQwNWY1NDBm
M2UyODcxOTgyZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYg
KzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9j
dW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURh
dGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRp
ZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZl
dGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZl
bnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25z
dCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3Rl
bVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRS
ZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIz
NS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAot
ICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgp
OwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMx
OCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55
IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0
LDI0ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25z
LmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJE
YXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQ
YXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1
ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXls
b2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+
YXBwZW5kKCpidWZmZXIpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7
CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7
CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25z
dCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkK
LSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRh
LmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIo
KSBjb25zdApAQCAtNTcxLDcgKzU3MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAg
Ly8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMs
IHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxl
bmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uMzdk
NjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtOTgsNyArOTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIHJlc291cmNl
RGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIyOCw3
IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291
cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYx
M2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywx
MSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJl
ZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFy
ZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVz
cG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgog
ICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQy
MGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhl
IHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJl
IGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBD
YWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNv
dWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5
MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNy
ZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxp
bmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiBy
ZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBh
IGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29w
eSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAg
ICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNl
LmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25D
YWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5v
cm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5v
dGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9y
IDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUg
bmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2Fk
KSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUg
ZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBp
ZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2Up
KSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAg
ICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkg
b25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAg
ICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4u
ZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAg
LTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1l
OwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5
YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3Qm
LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNh
Y2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFm
N2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlm
YzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0
YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0
aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0
aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1
MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVu
ZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAx
YjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5jNzcwZDc2NDEzNTA2NTJm
NWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3
ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJj
ZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRl
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRo
OwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRl
eHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2Ut
PmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAo
IWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50
KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEg
ZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVl
IHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlm
ICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7
CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJ
RChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJl
ZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hl
KHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVT
dGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAg
IGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5C
bG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0
cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcg
bG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0
ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAg
ICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQg
YnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7
CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0
byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAt
MTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5j
bHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYg
KCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0
YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgp
KSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwg
TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRh
LmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJl
c3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlz
dDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNw
b25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJl
c291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9
IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENG
U3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0g
Y3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9u
c2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1
NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7
Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwot
ICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNG
RGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7
Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yo
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRh
KDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7
CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBl
SUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMg
bm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFy
Y2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2
ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9u
YXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3Vy
Y2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJj
ZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAg
Ym9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJm
cmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBj
cmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJh
bWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJm
cmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6
OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBz
a2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0
byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgp
OwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8g
aXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgp
KQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9j
dW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAor
CiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNh
biBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2
ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJr
dXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2lu
aGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkg
KyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4
N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxB
cmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgp
IGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGgg
Pz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAg
QVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJp
bmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1
dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3Ry
aW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNv
dXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0x
NzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRl
TUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxu
Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRl
bnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAg
ICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAg
ICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxl
bmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFz
Y2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3Vs
ZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2gg
aXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAg
ICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAg
aWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAg
ICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgp
LCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxy
XG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgp
LCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJc
biIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29u
dGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lm
eWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0
aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6
ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3Ro
ID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgp
OwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSAr
IGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgi
XHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEu
ZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5h
cHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxl
bmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJv
dW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3Ry
aW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQo
YXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4g
bWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5k
ZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNjY1ZTY5Y2E3NzE0
ZTQ0OWFmZTRjYTY4YTcyNDE1MjMwZDEwOWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5
LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1
dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRC
b3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAg
ICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVy
OjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBh
cnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNv
bnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RG
TW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJl
YWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBs
aW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRh
YiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChs
aW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5h
cHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlm
IChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVv
dGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92
ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2Fz
ZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVk
IGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAg
ICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFk
ZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1
b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZUFzQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6
UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFBy
aW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVu
dC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJp
dDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250
aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29k
aW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhl
YWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAg
ICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJl
Zm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHAKaW5kZXggNGYyMjhlOGQwMzg5YjhiOGNiN2Y0MTQ4NmZkYjc4MWM5YmY2NWJkMi4u
OTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAK
LXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBp
ZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5o
CmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjY0YjE0ZDVm
NjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25N
YW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3Vt
ZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29k
ZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3
YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjlkMmRjNzM2NDgwMmQwZDYyYTY1
OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3Ry
aW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1l
VHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAg
IC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBh
bmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJl
dHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEz
ICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0
KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhl
IGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFy
b3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlm
eShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlr
ZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5l
cmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQz
N2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2Uy
NzFkMDc3NjMzYWU5NC4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAg
KzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGll
bnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0
YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDAp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5D
b2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCku
dG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkg
ewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVy
biBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVz
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAg
IFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMg
fTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7
CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZl
ciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZv
aWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMp
OwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQog
ICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0
YmVmNDIxMC4uMTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3Jt
RGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwg
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZv
bnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4
dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
OworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
ZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24o
KSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1
OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uN2MwMWM4Y2MyMzExNzg2YzYy
NGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtl
Q29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBj
cmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpz
aG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNU
aW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0
ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6
Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsK
LSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVy
biBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYg
KCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJT
KQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252
ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6
Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxk
IGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVy
dGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1
Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VE
YXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcg
QEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVk
KGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNm
NC4uZDUxM2UxNmNiYTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGlj
OgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0
aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBl
bnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdl
RGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERh
dGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAg
dm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkx
OTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2
NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAg
ICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVz
dGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9h
ZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9k
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXpl
ID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFT
aXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291
cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdl
IG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNh
bGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcs
MTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5n
UG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7
CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGlu
Y3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0g
ICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAg
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYg
KGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0
YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRh
LT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVT
RShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjli
Li41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEs
OSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAg
Ym9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBA
IC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jh
c2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZp
bmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
ICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3MmEzZTJhMDEwZTc4MTA4OC4uNTU2OTY0M2NkNWU2
ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGlt
ZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hl
ZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1
cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVu
Y29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5l
d0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1f
ZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07
CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNj
NTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uMjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5
NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lk
IGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAt
MjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAg
IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0
KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNU
b0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3
IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+
IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdp
bmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAg
ICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRo
cmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5Yjcw
NmEwYjFiMzMxZjJjODM5Li5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFjYTgyMjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29k
aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0K
IAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3Vt
ZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50
ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVy
bCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQt
PnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5MWFjOGIzNGQz
OTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRj
MzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50
PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXgg
YThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJm
Y2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAog
ICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2Nv
cGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5z
ZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50
KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdF
cnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAg
ICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90
ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZl
cnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQp
KQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9u
dCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQu
dmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5k
ZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQw
OTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZH
Rm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9u
dEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNW
R0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7
CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1
NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li4xZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFmODg5MWFk
ZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFz
aCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOwor
ICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDky
NGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFh
ZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi41
NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEw
IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNr
Ojpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAg
LTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2Fj
aGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENh
Y2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2Vi
MjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
QEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlS
ZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIq
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5
NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRl
N2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYgQEAgU3RyaW5nIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNv
ZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAp
OwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApp
bmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5jMDRkZDRmMTZj
ZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgU3Ry
aW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIw
YWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyAr
MzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hl
TW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3Rv
cmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdl
dEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0Yjkw
M2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNk
MjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5
IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdl
dCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVv
dXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7
CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNh
Y2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9u
aXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9y
OjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpT
ZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxC
YWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJh
Y2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0
b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxl
QmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmds
ZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQp
OwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdk
ZTk0Yjk0YTIuLmZmNDBjNDE2Y2M2MTZlOTJiMTMwN2JhYmI3ZTM0M2IzN2U1NDYwMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNyw3ICszOCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5h
bERhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFr
UHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hl
ZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nl
c3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRk
MDA5N2VmMmE1NzM0Li4yM2M5NzI0MmJiOWZiNzUzZmFiNzQzN2FmN2UwOGEwOWRhOTYyMWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
CkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIg
d2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+YXBw
ZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9j
b252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
QnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hh
c1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBt
X29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRv
IHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsy
MjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
Ojpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZj
b252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2lu
YWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQo
KS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVy
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggMTgxNzUzMWNi
Njk4YjhhNGVkYTI4MTBjYzQ2NmM4MTY5Y2IxNjNlYi4uY2VkNTYwOWMwMDVhNTM1MmIzM2QxMTk4
ZjQ1Yjk4YmE4NGE3MWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOSw2
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3ND
YXRlZ29yeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1
aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRG
cmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk4LDcgKzk5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9u
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNj
ZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCA5N2UwMWI1YzY5NzZkNjdmMGYzYmRmY2VkZWM2YWJjZjA0ODUy
YzQ0Li43Yjk2MWRiMDQwNGMxZDE5NzM2MDc0ZTRhOWQ2YzFkYzk0MjEyMjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTE5NzMsNyArMTk3Myw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0
eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBm
aW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4g
dGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5k
IHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1
dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0
eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMTY1YWE4MDU4YTAzOTBiNDUxNTc5YTE0NzYxYmQ4
Njc5NDkzNjQzMy4uMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2
b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVO
b2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRy
ZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50
LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rpbmcu
ZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAg
ICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgp
LCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0
LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJj
ZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYw
LDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQo
Q1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBp
ZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0
RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NF
UlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7
IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5j
b2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4
dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAg
ICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdl
KiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2Ut
PnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBt
X3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2Jl
N2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNv
dXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVy
KFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJj
MzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNl
ZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzks
NyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBm
aWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3Bw
CmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNl
ZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
IHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAt
NzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGlu
dCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1f
cGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAor
CiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBm
aWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5k
KFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlm
IChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRz
LnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25I
YW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlh
MjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBi
ZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGlu
Zy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRE
ZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtl
eSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCBiYTE3ODcyNDcxYWUy
ODY0Zjc3MDgyYzQ3ZDY3ZjI2M2VkNWRmOTU4Li41OTZhZmI4ZTkxODg4YzJhYTY3MmZjMGU1ZDA2
Y2I2NDQ5ZGVkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAt
OTMsNyArOTMsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFt
ZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDE0
NzY0MWRkYjY1ODg1ZTM5YTgzYzZhNDU1NTZiMWVhYTZiMzY1ZjcuLjRlMjc4MmQ5YmFjYjlkMDE5
ZDEyMDAyMGRmZjAxMTZlMjUyMzJkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
b2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIs
MTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47
CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5n
Rm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBh
c3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwog
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJ
bkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRV
UkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5
cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFt
ZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQzLDcgKzE0NCw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkQnVmZmVyIHsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICNlbmRpZgogICAg
IFN0cmluZyB0eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiAvLyBGb3IgcmVhZGluZyBmcm9t
IHRoZSBwYXN0ZWJvYXJkLgpAQCAtMTY0LDEwICsxNjUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hh
cmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXIm
KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEZE
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEYo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFC
dWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUg
PSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTgyLDcgKzE4Myw3IEBAIHN0cnVjdCBQYXN0
ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9
IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiAvKiB0
eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7CkBAIC0zMDgsNyArMzA5LDcgQEAg
cHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJvYXJk
SXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAog
ICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0LmdldCgpOyB9CkBAIC0zNDAsNyArMzQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5n
PiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVh
ZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5n
PiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1
ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRD
dXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVk
IGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4
OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8
PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5
cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAog
UGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5j
ZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyAr
MTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21Q
ZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2Rlcihi
dWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2
YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNiAr
MzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
IHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJp
bmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXgg
ZTc3OWRhZWFlNjU5NTM0MThkOTBjMTc1MDEyZDU4ZmI5NjhhNTAwYy4uOWIxZDRiOTVlZGZiZGZh
MDU5NTZhMzk5MDcxYWI5ZmQ5MTgzYjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFk
RmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIx
NjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYz
ZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVy
RGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFz
dGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47
CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRh
dGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGViNDFhNjhjYzVhZjky
MmU4ODJlYzI2OGVkYjJlOTkwNWY0M2MyNDQuLjUyNzBjNTk4NDM1NTEwNGY5MWE1Y2U1NDIyMjNi
NDQ5YzJiNTE4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9h
cmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmlu
ZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlw
ZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAwIGlmIHBhc3RlYm9hcmQgb3du
ZXJzaGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRf
dCBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBT
dHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXgg
NGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uOWViNGJkZGYwN2NmNjE2
NmE1ODYwYmFjMDc0NjI2ZDI5NWFjYjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIlByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIu
aCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02NSw3ICs2NCw3IEBAIGNvbnN0IFJl
c291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3
RGF0YS5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3Vy
Y2UoKQpAQCAtMjIxLDggKzIyMCw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9D
bGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIEFTU0VSVChtX3N0YXRl
ID49IFN0YXRlOjpDb252ZXJ0aW5nKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0
YXJ0Q29udmVydGluZygqdGhpcyk7CiAKLSAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHko
KSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgaWYgKCFtX3By
ZXZpZXdEYXRhLmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKKyAgICAgICAgY2xpZW50
LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEuZ2V0
KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVu
dChjbGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQsNyArMjMzLDcgQEAgdm9pZCBQcmV2
aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGll
bnQpCiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZpbmlzaGVkQ29udmVy
dGluZyk7Ci0gICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkpOworICAgIEFTU0VS
VCghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3ByZXZpZXdFcnJvci5p
c051bGwoKSk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5n
KCp0aGlzKTsKIH0KQEAgLTI1Niw3ICsyNTUsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRl
bGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIGlmIChk
YXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2aWV3RGF0YS0+YXBw
ZW5kKGRhdGEpOworICAgIG1fcHJldmlld0RhdGEuYXBwZW5kKGRhdGEpOwogCiAgICAgaXRlcmF0
ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgewogICAgICAgICBjbGllbnQucHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJh
NjRjZjhjZTJiLi5mMTRkZTFkOTE0YTRjYmNhMTVhNzVkNmQ1ZTVlMGRjYjRjNGE5Zjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CkBAIC00MSw4ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7
CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBAIC0xMTgsNyArMTE3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9w
cmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291
cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVj
MzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBA
IHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0
cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFm
YjI5YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVkLi5lZDMwZTg0OWRkODE4MzhmOGM3MzNmMTNkYjZj
MzdjMzc4NDhmM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTM3LDMxICszNyw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewotICAgIGFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOwogfQogCi1TaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1Jl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsKIH0KIAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKK30KKwor
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkg
PSBkZWZhdWx0OworCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZp
bGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRl
ci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBh
cHBlbmQoV1RGTW92ZShkYXRhKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoR1NUUkVBTUVSKQpAQCAtNzMsMjYgKzk1LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIp
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZl
cikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVz
ZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRG
aWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzEwOSwxNiBAQCBzdGF0aWMgVmVjdG9yPHVp
bnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
Ojpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8g
dHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0
YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBh
bGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNp
emUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAg
ICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihj
b25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5z
aXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsK
ICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywg
bV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFT
U0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5l
ZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBj
b25zdApAQCAtMjAyLDEwICsxOTQsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
bV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2Vn
bWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2Vn
bWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxl
bWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFw
cGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9z
aXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTMsMTkgKzIwNSwxOSBAQCB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VS
VCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRp
Z3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChk
YXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXpl
ICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBB
U1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9j
b250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0p
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50
ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CkBAIC0yNDMsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBt
X3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50
cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJl
Z2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUt
Pm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVt
ZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJl
dHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVk
QnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3Nl
Z21lbnRzOwpAQCAtMzUzLDEyICszNDAsNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAg
IH0KIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAotewotICAg
IGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVu
ZCgpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CkBAIC0zNzIsNDEgKzM1MywxMiBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAg
ICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRh
R2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHTElCKQotICAgICAg
ICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0
KCksIG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtd
KGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgotICAgICAgICBbXShjb25zdCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKLSAgICAgICAg
W10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBw
cm92aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7
Ci19Ci0KICNpZiAhVVNFKENGKQogdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHt7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKLX0KLQogYm9vbCBT
aGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QK
IHsKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCkBAIC00NTYsNyArNDA4LDExOCBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
c2l6ZSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNC
dWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOwor
ICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91
c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFw
cGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0g
TWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwor
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdT
dWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBd
LnNlZ21lbnQtPmRhdGEoKTsKK30KKworV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB7IGRhdGEo
KSwgc2l6ZSgpIH0gfTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKwor
I2lmIFVTRShDRikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR0xJQikKK1JlZjxE
YXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
K30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNl
Z21lbnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9Cisj
ZW5kaWYKKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21l
bnQ6OmNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3Qq
IERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1h
a2VWaXNpdG9yKAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAorI2lmIFVTRShDRikKKyAgICAg
ICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBV
U0UoR0xJQikKKyAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19n
ZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR1NUUkVB
TUVSKQorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCisjZW5kaWYKKyAg
ICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0
IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEo
KSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CisgICAgKTsKKyAgICByZXR1cm4gc3Rk
Ojp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOworfQorCitib29sIERhdGFTZWdtZW50
Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRh
KTsKK30KKworc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZp
c2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1
MzgsNjYgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFi
dWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpKTsKK30KKworU2hhcmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6
b3BlcmF0b3I9KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVm
ZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgaW5pdGlhbGl6ZShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitTaGFyZWRCdWZmZXJC
dWlsZGVyJiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oY29uc3QgU2hhcmVkQnVmZmVy
QnVpbGRlciYgYnVpbGRlcikKK3sKKyAgICBtX2J1ZmZlciA9IGJ1aWxkZXIgPyBidWlsZGVyLmNv
cHkoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgbnVsbHB0ciB9OworICAgIHJldHVybiAqdGhp
czsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFsaXplKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQoreworICAgIEFTU0VSVCghbV9idWZmZXIpOworICAgIC8vIFdlIGRv
IG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwg
U2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAvLyBvbmNlIGNyZWF0ZWQuCisg
ICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsK
KyAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXBwZW5kKGJ1ZmZlcik7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UoKQoreworICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCitSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygp
Cit7CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKK30KKworUmVmUHRyPEFy
cmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7Cisg
ICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
bnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsK
K30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIoKQoreworICAgIGlm
ICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
K30KKworU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRh
U2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQog
ICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAg
ICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRo
aW5TZWdtZW50KQpAQCAtNDg5LDI2ICs2MTEsMTYgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kK
IHsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zaXplOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAog
ewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9z
ZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50
ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCld
KCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkg
eyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcg
ZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyArNjQ2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZm
ZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLmQxMGIw
ZTU0OWE5OWZiMjU4NjAwMjRmNjhlOGYwMDExNzhkM2QxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8dXRpbGl0
eT4KICNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTYyLDE0NiArNjMsMTI1IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7Cisv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERh
dGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0g
ICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmls
ZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0g
ICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRy
PE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwot
I2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0
YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVm
KTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRp
ZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
Qnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5
dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRo
ZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJl
IG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkg
YW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9m
IHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJs
ZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0
YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBW
ZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
LQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdp
bGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZl
ciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFu
ZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJy
YXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1
ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29u
c3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0
aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNs
ZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWlu
dDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRl
ciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBp
bW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgot
ICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRh
U2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAg
ICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsK
LSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAg
ICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29u
c3Q7CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2VuZGlmCisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBE
YXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElC
KQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAg
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11
dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CisKK2Ns
YXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZm
ZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9y
PHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNp
ZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5k
aWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAj
ZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFi
bGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBj
b3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRo
ZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJh
Y3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhp
cyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0
aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
Y29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICBib29sIGlzQ29u
dGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQorCisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JF
YWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
KT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYgcHJlZml4KSBjb25zdDsKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFT
ZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsxOTAsMTU3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVu
dFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2Vn
bWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50
cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFz
T25lU2VnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAog
ICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikp
IHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0
aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5n
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7
CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVm
YXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3By
b3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAg
IERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBm
YWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVu
ZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRh
KSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVT
RShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVT
RShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZv
aWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBh
bGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0
ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAvLyBDb21iaW5l
cyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3Ig
YWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5
KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJs
ZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07
CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisv
LyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3Mg
dG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVk
IG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1
ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3Rh
dGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAg
ICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYm
IChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsK
KworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwg
TWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShG
T1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNF
KEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygp
IGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9
IGRlZmF1bHQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihTaGFyZWRCdWZmZXJCdWlsZGVyJiYp
ID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1
aWxkZXImIGJ1aWxkZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVpbGRlciA/IGJ1aWxkZXIuY29w
eSgpIDogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBudWxscHRyIH0pIHsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyBpbml0aWFsaXplKFdURk1vdmUoYnVmZmVyKSk7IH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoc3RkOjppbl9wbGFj
ZV90LCBBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXImIG9wZXJhdG9yPShTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3QgU2hh
cmVkQnVmZmVyQnVpbGRlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXImIG9wZXJhdG9yPShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsK
KyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25z
dCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0K
KworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1w
dHkoKSB7IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorCisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8
U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxTaGFyZWRCdWZmZXI+IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVy
OjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY2LDIzICszNDgs
MjQgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkK
ICAgICByZXR1cm4gY29weURhdGEoKTsKIH0KIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgot
ICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYm
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3
U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hh
cmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgc2l6ZV90IHNpemUoKSBj
b25zdDsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hh
cmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQog
ICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZP
VU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAg
ICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90
IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3Ry
aW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdm
MDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
bgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0K
ICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29y
ayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCks
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgp
KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+
bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRl
bnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2go
KSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5
Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2
LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJy
YXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9w
dENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3RE
aWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVs
bHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmlu
ZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4
ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktl
eWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5j
b2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFs
OwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2
NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uNDdjMTBmOTgwMjM0YzlhYmM2
MDg0ZWMyMTA0NTZmNmIxNTQ4MTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzUsMjMgKzM1LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGFwcGVuZChkYXRhKTsKIH0KIAogLy8gVXNpbmcg
Rm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRp
b24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9u
LUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4o
Jm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdt
ZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgp
KSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjksNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGlu
dE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25l
U2VnbWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21f
c2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYx
ZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAg
LTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVn
YWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQor
c3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJl
ZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBh
bGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0
aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyAr
MzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5
Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0
cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29h
Lm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjk4MDU0
N2I4Y2M0YzRhODhjYTE1NWNiYjE3ODIwYWY4NWUyZGM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUs
MTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdl
YkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
YXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0
YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilz
aXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBz
aXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0
YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBO
U1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAg
ICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdt
ZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVu
dCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2Vn
bWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNV
SW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CkBAIC05NSwyNyArOTUsMjYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KE5TRGF0YSAqZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJu
IGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRn
ZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50
b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VS
VChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdt
ZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNl
RGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNSw3IEBA
IFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29u
c3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246
MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJi
MDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYx
Nzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFz
IEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpz
b24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3
ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAg
ICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAot
ICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0
RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hT
aXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNl
bmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01h
cC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAog
ICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBp
ZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAg
ICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRh
KCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91
cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAg
IGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0Fy
cmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3Zl
KGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3Ry
aW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRh
dGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29u
RGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2Uo
KTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJN
IGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgp
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4g
a2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUg
Zm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5
IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5n
IG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAg
a2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEu
ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpz
b25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFr
ZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xl
dG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdj
YzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6
ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVu
Y29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1
ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5
ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzlj
NjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5j
b2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMx
MTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIw
YmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRF
bmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5p
c2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3Qo
KSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9
IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxH
Qnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4
MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0
IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdi
NzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4g
Ynl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXpl
KCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlz
KSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhp
cykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZp
bGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6
ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5n
ZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3YzQ4Nzhh
YmVlMTAzZmJhZjIxZjU3MC4uMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9y
aWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdp
biwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3cmFwcGlu
ZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA3NDQyMDA0ZjAwYjVkYmEyN2YzYzMyZTY2N2Iz
NmJjY2Y3ODUxNGNkLi40YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04Miw3ICs4Miw3IEBA
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwgSW52
aXNpYmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7IE5v
LCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFs
ID0gSW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9y
aWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRh
LCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApp
bmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0
ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBA
IGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBp
cyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91
bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlv
bkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmlu
ZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRN
ZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDJjZjQ0OGJlYTJmYTZhZTRk
NDdmOTY0MDAyYjNhOTA2YzAxMjkwNjcuLjY3NWUyNGI0MGFjN2FhZGU3NDA4NmYyNDJlYWQwMTUy
MjFjMDI0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hF
VkNVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hF
VkNVdGlsaXRpZXMuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFN0cmluZyBjcmVhdGVBVkNDb2RlY1Bh
cmFtZXRlcnNTdHJpbmcoY29uc3QgQVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAg
LCBoZXgocGFyYW1ldGVycy5sZXZlbElEQywgMikpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEFWQ1Bh
cmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTA6MjAxNAogICAgIC8vIDcuMy4yLjEuMSBT
ZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0IGRhdGEgc3ludGF4CkBAIC0yNTUsNyArMjU1LDcgQEAgU3Ry
aW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiAgICAgICAgICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5nKCkpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTU6MjAx
NAogICAgIC8vIDguMy4zLjEgSEVWQyBkZWNvZGVyIGNvbmZpZ3VyYXRpb24gcmVjb3JkCkBAIC00
MzYsNyArNDM2LDcgQEAgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29k
ZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogICAgIHJldHVybiBwYXJhbWV0ZXJz
OwogfQogCi1zdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29u
ZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUgZm9ybWF0
IG9mIHRoZSBEb1ZpIENvbmZpZ3VyYXRpb24gUmVjb3JkIGlzIGNvbnRhaW5lZCBpbiAiRG9sYnkg
VmlzaW9uIFN0cmVhbXMgV2l0aGluCiAgICAgLy8gdGhlIElTTyBCYXNlIE1lZGlhIEZpbGUgRm9y
bWF0LCBWZXJzaW9uIDIuMCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuaAppbmRleCBhZjc1YzYyZDExNTgwYWQwMzhkNzE3YmU5NGIzMzFkMzlk
ZGRhMjdhLi5lZGZlY2IyNmQ4OTQ2N2EyM2QxZjU3MWNiYzVlOTFiMmZhMzQ3ODVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCkBAIC0z
MSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb3VyQ0M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVj
dCBBVkNQYXJhbWV0ZXJzIHsKICAgICB1aW50OF90IHByb2ZpbGVJREMgeyAwIH07CkBAIC00MSw3
ICs0MSw3IEBAIHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5n
Vmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNl
QVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNv
bmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQ
YXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBAIC01NSw3ICs1NSw3IEBA
IHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7
Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNE
ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNl
SEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVIRVZDQ29k
ZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBEb1Zp
UGFyYW1ldGVycyB7CkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CiB9
OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBh
cmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVEb1ZpQ29k
ZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzli
ZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBj
NDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3Bw
CkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+
IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBV
UkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92
ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwg
bV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBh
ZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVS
TCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNo
YXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAg
U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEt
PnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwog
ICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAt
OTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
TW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92
ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1p
bWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmlu
ZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2Vi
Y2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3
T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0
aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zm
c2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwg
c2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJl
YWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwg
dWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVm
ZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFs
dWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWlu
dDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3
b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVy
ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZl
cnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQor
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0
b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHko
KSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1
ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUo
KSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsy
OTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAg
IGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7Cisg
ICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmlu
ZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZm
NGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBX
T0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxl
IHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBl
eGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSBy
ZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wg
Y29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNm
bnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEg
V09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQg
Zm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0
aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2Mw
MTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVu
Y29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5n
IGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUo
KSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1
ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3Jt
YXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IDE2
MTFiYWFjNDM3MGI1ZmM5OGEyOTIwNzcyMzVkNDVlMDJiNWQwYmEuLmZjOWFhOTlhNjlkZmFlODll
NjViMmFiM2FmNDg5MTQwNzY4NWZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1h
dERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFN0cmluZyBjb2Rl
Y0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8
Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZT
VFIoImF2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAg
ICAgICAgICAgIHJldHVybiAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25S
ZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAg
ICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1ldGVycyA9IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlv
blJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuICJhdmMxIjsKQEAgLTEyMiw3ICsxMjIsNyBAQCBTdHJpbmcgY29kZWNGcm9t
Rm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlv
bikKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0
YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJo
dmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAg
ICAgICByZXR1cm4gImh2YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3Jk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAg
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRl
cnMgPSBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0NvZGVjVHlw
ZV9IRVZDLCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFy
YW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9u
UmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRl
bnNpb25zRGljdCwgQ0ZTVFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRl
bnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAgICBhdXRv
IGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVF
eHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAg
ICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0
ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQx
MzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFy
c2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1
cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24g
eyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpA
QCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlh
bGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFs
aXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNp
ZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5p
dERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0
byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5p
dERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXpl
KCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBk
YXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0
aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRp
ZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1
dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10g
KGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9
KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNl
c3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNl
c3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFn
ZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAg
ICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAg
W3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAg
IFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VE
YXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFW
Q29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3
ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5T
RGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25D
bGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJ
ZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAi
UGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAg
ICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElk
ZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFn
ZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAK
ICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtl
eUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRl
bnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVl
c3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVy
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3RE
YXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1
Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBh
cHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNl
cnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEg
PSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRh
Pj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRh
LmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsK
LSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJp
bmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNl
dFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3Ry
aW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywg
cGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2Jq
ZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJl
bnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0g
a2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBh
dXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAg
ICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5
UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpj
b250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5
SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVl
c3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VE
X1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9
IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11
dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgog
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2Vy
dGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMu
Zmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElk
ZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5
UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpj
b250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVl
c3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFp
blB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5
UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5h
NTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVT
aGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0
aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpO
T107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xv
YWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9u
b3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQg
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVj
ZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlm
IChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQppbmRleCAxYTQzYzdkZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEzLi5hYmQ4
MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsy
MTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVu
dCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
ciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50
LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwg
ZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBh
cHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2Vy
U3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4
N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIy
OTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFp
blB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXgg
YTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2
YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0
cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAK
IFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
CkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjps
b2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAt
MjM4LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byBy
ZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNv
ZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0g
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAg
dm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExv
YWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFS
ZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1
ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFm
OWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25D
b250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsK
QEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+
IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNk
YTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNl
NmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRp
ZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsK
ICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0y
NTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAg
ICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9
IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAg
aWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VU
eXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2Rl
ckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNl
Y3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4K
ICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNp
ZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAg
ICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291
cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCku
Z2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9u
YXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQ
cm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3Vv
dXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9u
IGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFy
ZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUg
Ynl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAg
IC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFj
ay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9
IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJS
ZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwg
JnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBk
YXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3Vv
dXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQ
cm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUz
ZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAt
MzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRh
KGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewot
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENH
UERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRi
NDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3
NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIu
bV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0Yzhm
ZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwg
c2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVy
ID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZl
ci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNj
NTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWlu
UHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygp
IGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
aWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShj
dEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4g
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhj
MzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFh
NzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlw
ZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAg
c3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxp
emVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZh
OTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBA
IGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAg
ICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxl
X3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxl
ZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2Nr
ZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBp
ZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJiYWVhNWI4NDVi
ZGVmYmI2ODZmZTI1MjU5MzMuLmI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkgQEAgVmVj
dG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICBy
ZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBw
ZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1
Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5k
ZXggZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5MjM5YmI3
ZjBkOGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApA
QCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5s
aW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwg
Z3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1h
cEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVm
ZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5
YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBi
dWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBt
X2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVh
dGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAg
ICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4MjRkZmMx
YzM4MWE1ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3ZDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MzY2OSw3ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1Rf
REVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQg
b2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRh
KCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdT
VF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7
CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkp
LCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXll
ci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5l
clR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApp
bmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMz
YzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBp
c1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZv
aWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciog
ZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJE
YXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4
dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5n
dGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0
aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEt
PnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAg
ICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1
cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGlj
IEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBF
bmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAo
IXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1
ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1
YzFlYzQ0MWFmNzE5NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRf
TEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2Nh
dGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rp
b24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJ
Zk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBp
ZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0
YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChw
YXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNv
bnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAg
ICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0
Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxv
YWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lm
TmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5
bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCAr
NzYsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUg
Y2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsK
IAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAg
ICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBj
b25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5
bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVy
biBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3Qg
eyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgp
IGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2
YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9y
bURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6
ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRp
b24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRh
ID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAw
NjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9u
RGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTku
LjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9
IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9j
UERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
aW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2
ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
OiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVj
dGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rp
b25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0
aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFs
aWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0
YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
aXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhH
bHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRl
bmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2Vybklu
Zm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3Nl
bWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAg
IH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3Vu
dF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBU
YWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsK
ICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENv
dW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29u
c3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAg
ICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7
CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQ
YXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9
IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBo
QXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7
CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVy
YWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUg
YXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhv
cml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNv
bnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNW
ZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3Qo
dmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZz
ZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3Rh
bnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIs
NyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBt
YXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAg
ICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0
IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAz
NWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMs
NyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8
aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2
NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhk
NjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMs
NyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVm
aW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8
PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8
IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMg
Y29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
LCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6
ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUo
Y29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVj
dGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikK
ICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0
dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1
ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9p
ZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2
YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZv
aWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBU
KiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zm
c2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9m
ZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNl
dCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAg
LTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsK
ICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRh
YmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGgg
Z2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJh
Z2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVy
YWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgp
IGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkg
ewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjky
ZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6
OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFi
bGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRl
bkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2gg
aXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1i
b29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVu
YW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAg
ICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBz
Zm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9u
dERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEg
aW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250
TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250
TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYg
KCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0
ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250
TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1l
bW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAw
NzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4
MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyAr
MTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJh
Z2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VU
YWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxl
KiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZz
ZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3Rp
dHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAg
ICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVz
IGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2Fs
bHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3Rp
dHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJU
YWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZz
dWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVj
dCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENv
dW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0
IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5k
ZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+
PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBA
IC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1
cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhj
b25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVj
dCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVh
dHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVp
bnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0
dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZm
ZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJl
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1
cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJl
Q291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3
IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50
MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwog
Ci0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRh
ZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBm
ZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAg
IH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRM
YW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdT
eXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0p
KQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAg
ICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwog
Ci0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlw
dChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3
ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZh
dWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICgh
Y291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcg
KzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zm
c2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSog
ZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVs
dFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICsz
MzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RP
ZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0Pihi
dWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0
ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBj
b25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExp
c3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0
dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0
dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0
IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
c2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAg
fQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVy
ZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3Qg
RmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICsz
NjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZl
YXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhI
YXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBo
LCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJs
ZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBp
ZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VC
VGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdp
ZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3Bl
blR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBl
OjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVy
dGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVx
dWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxl
KE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVh
ID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsK
ICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lk
IE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBl
OjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NV
QlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0
NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgz
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAg
c3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1l
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnRO
YW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZj
MDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dG
b250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRT
ZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4g
Rm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQ
bGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMw
NDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0
YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFt
ZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5h
bWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkz
ZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fp
cm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBj
b25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmlu
ZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3
M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAK
QEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdE
SU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVE
QyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElP
Qkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6
ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJs
ZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3Qo
aGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
ZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2Iz
NjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5T
bWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1
c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RG
TW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3Zl
KGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRh
KCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9t
RGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdl
PiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1
NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAg
ICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBp
bnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0
YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
YXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3Vz
RGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWRE
YXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAg
ICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURl
Y29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjFjODcxZjRk
NTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpw
ZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0g
PT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8p
CiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1h
cmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkg
ewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
SUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0
YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwg
bWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwog
ICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAg
IHJldHVybiBidWZmZXIudGFrZUFzQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3
ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VE
ZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZi
ZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVT
RShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZGIwYWIzNGIy
NjE4YTA0MDJiMGQyNDNkYzg3MDdhMzY3ODIzZGUzLi5hY2JiODFiMDhkOTJkODdjYTQyZmJkMzIz
ODgzMmMwZjM1MWNkNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKSBjb25zdAogICAg
IHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVz
XSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRh
Rm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMzM4LDcgKzMzOCw3IEBAIGlu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNv
bnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVu
dC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250
ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFty
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xp
ZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkg
ewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xh
c3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21E
YXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xh
c3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21E
YXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0
cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAg
IGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
dXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdp
c3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBh
c3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERh
dGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291
cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1J
TUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAg
ICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwog
Ci0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmlt
YWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3Rl
ZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBA
IFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19Q
UkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFs
aXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0
YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRh
dGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFk
ZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxl
OldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhh
c1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVk
U2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9m
IHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJp
bGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVu
dHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQg
dGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGlu
IHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFn
ZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1
cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8
U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWluZGV4
KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTc2MSw3ICs3NjEsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LAogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291
bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6
MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAyMTZlZGQ4NDc1ZTE0ODhkYjllYTYxMGYxMjNi
YWE4MTllNmIzMWZjLi5hMTUxNmFlMzRmODI5YmE3MmNhNTYxZDk1ZTRmYzk3OGI5NTJkMzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUw
LDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQog
CiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdl
JiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpz
dWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRv
cmVsZWFzZSgpOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlRmlsZVdy
YXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmlu
CiAgICAgaWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV3Q2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZl
ckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZE
UGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOworICAgIG5ld0NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRC
dWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZERGF0YSkucHRy
KCksIGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCkBAIC0yODUsNyArMjg1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgfQogCiAgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXMo
dHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwsIGNvbnRleHQoKSk7
Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEp
LnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBpZiAoYXV0byBhcmNoaXZlRGF0YSA9IHBh
c3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIG1fY2hhbmdl
Q291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1
ZmZlckZvclR5cGUoYXJjaGl2ZURhdGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIFN0
cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBz
dGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBw
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFp
blRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBp
ZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsK
ICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpk
YXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAg
ICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAg
ICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNk
MDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0
ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3Ry
aW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5
cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50
LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5n
ZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5j
bGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0
KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAg
IGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJp
bmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNz
QWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0
KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGE3
ZmU3MjU1NDM3NjY1ZThiOGEwYzc0NTNkMzA0NzQ5ZDQ1NjJmNjcuLmY4Mjg3YzhlNjcxYzliNzky
Yzk1NmIzMWMwN2NmMDAzZjI1OTM1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNv
bnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10p
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9w
YXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShh
ZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBA
IFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21Q
YXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBb
bV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdl
dCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21E
YXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAg
ICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAg
ICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBA
IGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSYgZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAg
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtt
X3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5
cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihz
dHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAg
IH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0
byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0
ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQog
ICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdl
dCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9
CiAKQEAgLTM0MSw3ICszNDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21f
cGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdl
dCgpIG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1J
TUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4g
YnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGluZGV4LAogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVd
KSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA4LDcgKzUwOCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1
c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4u
NWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsx
MTcsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsK
IAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEg
V1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVm
PiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2Qz
Y2RmNWU4Mzg0ZjM2YjdiNTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2
NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIo
KTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIg
YmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51
bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkK
ICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDAp
OwpAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sg
fTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Cisg
ICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKaW5kZXggMGM5MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkwNmI5NTFlYjg5YS4uNjIz
NjRkNzEzYzk1YTlmODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVp
bnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVu
Z3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6
YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxl
bWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50
OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3Jt
RGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAppbmRleCBlOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdjYzI5ZDJkODM3
Li4xMDgyODExMzFmODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0
YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5jb2Rl
ZEZpbGVEYXRhOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8
Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91
bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0
cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdh
eXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJl
YW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4
ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5S
ZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2Vp
dmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQy
YTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQx
ZTI2OTc1YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTks
NyArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExP
RyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5k
bGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAg
IGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9Owog
ICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li5lMmMzNWVk
MzEwYjMxMTA2NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAg
ICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJl
c291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsg
MCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3lu
dGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhh
bmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQg
fTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVy
OwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNz
IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9Owog
ICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsx
MDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEu
YnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8g
RklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICog
YWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4K
ICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRl
ZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhl
IGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAg
ICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
KyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRh
ID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5Q
dHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVy
YXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9
IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0g
V2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVd
ICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9u
c2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYg
cmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tE
YXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAg
IGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4
KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFu
Z2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0g
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5i
dWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
bnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29u
dGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgo
KTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9n
ZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdl
cygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4
MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5
ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkx
OSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vz
c2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYg
fSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0
ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFE
ZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ry
b25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVj
ZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5
OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVl
ZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBA
IHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0
dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4K
IAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcs
NyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAg
aWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUg
c3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2gg
b3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZm
ZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBA
QCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBp
ZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYg
Ym91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5k
IHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2gg
aXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7
CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRj
aCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUg
d2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVz
aCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRh
cnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlT
dGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91
bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5
NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApA
QCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRG
aWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlm
IChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhh
bmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VE
b3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXgg
ODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFl
OWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAg
ICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1
cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxD
YWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVj
ZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENv
bXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApp
bmRleCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMyYzM4MWQzZDE5NjEzZTYwLi4zY2EyMDgyMmMw
MzE4YTU0OTExMTg2NzVkMjdiODc4ZGQxODNmZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBh
dGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNU
b1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5k
ZXggNzM2NWYwMTA5NDRhOTI2YjBlYmNhOTk2YmRkYWUxNDQ5NTBmNjNlMy4uYjgyNzU0MzcxYmY3
MmM4ZmZlMDg1MWFjZTgxMGU0ZTUzZDlhMTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTc4LDggKzk3OCw4IEBAIHN0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBD
b3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
IGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxV
bmxvY2sobWVtT2JqKTsKIApAQCAtMTAzMCw4ICsxMDMwLDggQEAgc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBT
aGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAg
ICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFM
U0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNj
ZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAg
ICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAg
ICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVT
dWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0
NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDcz
OGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZl
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBi
eXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RF
cnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwog
ICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxl
LCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1Jl
YWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMs
IEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVy
cm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3
MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICgh
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkK
KyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJh
eSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXku
Y29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNh
dGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAK
ICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmll
dywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBA
IHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCBy
ZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
VmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3Bv
bnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFp
bnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNl
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6
OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0
OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJi
YWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZm
ZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRm
OC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5
KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgp
CiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0K
IAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
eworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
ewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgp
LCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBj
b25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdt
ZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21l
bnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1f
YnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVy
LmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZi
NzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3Qg
U2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQo
KTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNj
cmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5
KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
eyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9i
dWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQu
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04
IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZl
ciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDQzM2Q5ZTFhNDVjMjk4ODU0MmIwNWU3NGI0
NzE3YTc3MDU3MjhiYjYuLjJhNzEyNTQ3MThlYWVkZjUxYTQ0N2VjZTYyYzRjZDcxNmJiMDc1ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJGb250U2VsZWN0aW9uQWxnb3JpdGhtLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldPRkZGaWxlRm9y
bWF0LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmgiCkBAIC03OCw5ICs3NywxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29s
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JP
Y2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2Rh
dGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmICht
X2RhdGEpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1
b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0Rh
dGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9
IFdURk1vdmUoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVk
ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDEwICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0K
LSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1
ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5
OWI1MTc2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckds
b2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1
ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1
MjQwLi4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNz
UmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNl
PiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6
c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBj
bGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0g
ICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7
CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4
OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhl
NDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyAr
MTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTog
RG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lk
IGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUp
ID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpN
YXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1h
cHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBw
aW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8p
OworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4
MDVjMjgxYjk0ODA1NDVhZTI2Li45YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1
M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYg
QEAKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4
LDcgKzIwNyw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9i
KCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQ
cm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIp
Ci0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBu
dWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRl
bnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmlu
YWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94
bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBl
KTsKIH0KQEAgLTIxOCw5ICsyMTcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBl
KCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0
RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlC
dWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1M
SHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQodW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3Mzgs
NyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9y
ZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxz
ZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgp
OwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsx
MDYyLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVj
b2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIg
YmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAg
ICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAg
ICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQog
CiAgICAgaWYgKCFtX2Vycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4
IDA0ODQ2MjZiMmU1ZGZkZGE3Y2IxNmM0ZjU1MjJkZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4
YjliNGY5MjVkMzJiZDg2YmEyZDgwMzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRl
ICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00
NSw3ICs0Niw2IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1E
YXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBU
ZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNl
YXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERv
Y3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4
YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhm
NWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NM
b2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJv
cjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVz
b3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVx
dWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRj
NDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5j
KGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewog
ICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3
NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRl
NWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8g
dGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEt
PmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9p
bnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIu
LjBiOWY0OWQzNjRjMjU5NWUyMjNiMzExNGRlYWZjZWU5MmE0MDBmZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVl
c3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1
aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgp
KQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNl
dERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNy
ZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTMwNiwxMCArMzA2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlm
IChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4g
MF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2Fu
VXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVy
cyA9IG1fcGFyYW1ldGVyczsKQEAgLTczNCwxNiArNzM0LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVk
UmVzcG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBz
dGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJl
c291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1p
bWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0
ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11
bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJl
cGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMg
YW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFp
c1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1
ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLnJlc2V0KCk7CiAK
ICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNl
dCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9v
bCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMw
NDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY5LDEwICs4NjksMTAgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAv
LyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGlt
aXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRy
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg4MCw3
ICs4ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIHVuc2lnbmVkIGVuY29kZWRE
YXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRh
KSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAg
ICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0
YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC05MDksMTEg
KzkwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNT
eW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9z
eW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRy
aWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25v
dXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmlj
cyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJl
ZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0
aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1f
YnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAg
ICAgfQpAQCAtMTI1OSwxMiArMTI1OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKICAgICBB
U1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHko
KSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAq
bV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1
ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAK
LSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0g
MDsKIH0KIApAQCAtMTI4OSwxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2go
KSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1By
b2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJl
ZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9y
ZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9u
c2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Np
b24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2Uo
KSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFT
RV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBj
YWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0
KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIg
PSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hl
LT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8m
IG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAg
ICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3
NzM3MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTkyOGI5NWQ4YzZmNTdiZTI1YzVmMjExODk4OWYz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVf
dCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50
IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3lu
Y2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDEsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vi
Q29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpD
YWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBi
b29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNj
MmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1f
Ym9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZh
MTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4
MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2lu
ZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JS
ZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNr
JiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4
ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4
Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChh
dXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVj
b2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVj
NGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3Jk
IENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9u
LCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25z
ZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5
ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlv
bmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2Up
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1v
dmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6
ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkp
OwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJj
MjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZj
NjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAg
U3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAg
ICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
ICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAg
ICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9k
eSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVm
ZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0
dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEw
NTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEw
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJl
c3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAo
dmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWlu
ZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEw
ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXpl
KCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkg
eyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8m
IG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBl
bnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNT
dGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkp
Ci0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5h
bFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwor
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAg
fQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmlu
ZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMw
MzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjdlMDViYTg0NzhhNTgxODMwZTM5NzA2
OGIzMmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4MTgzYzk2YjgzMTIwYjFmZWYxNTZiYjhjMDk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6
OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpk
YXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwot
ICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAg
IG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9t
X2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
aW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMjlmNzFkN2U2
ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlk
MDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJiMmQ4
MDJhYzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJs
aWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgU2hhcmVkQnVm
ZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAg
OiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29w
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZl
cihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5h
cHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250
aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1
ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVj
b2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2
NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6
ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFT
aXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3Qg
dWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2
NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29k
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRp
YyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0
OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWEx
ZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02
OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNo
aXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBp
biByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRl
MjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNv
CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3Vy
aXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNp
bmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEu
dmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRG
YWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNv
bGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAK
aW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZj
MjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0
IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0
MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0
MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6Ondy
YXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVh
YmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRh
KCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5z
aXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCBkYTFlZWUw
YWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3
ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRs
ZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNo
YXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAy
YTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1MzNm
MjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVk
QnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgs
NyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMg
dm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAg
ICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29k
ZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkp
OwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRh
KERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEw
ICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5k
RGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUg
PT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6
ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5h
cHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0
ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXpl
OwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3Bv
bnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVy
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgp
IH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
QEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0
aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9p
ZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29k
CiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZi
NTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRl
SW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vy
c29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUo
RGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdm
MzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBl
NzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2Vs
ZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRD
dXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9u
LnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAg
ICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUy
YzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1
MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dl
YkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9w
dGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3Jl
YXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1
ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNl
RGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAg
IGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRl
YzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4
ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1l
bnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNk
MjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0
MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNf
Q0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJ
bWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBi
b29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFn
ZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQg
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggNjQ0OTFlMTYy
ZWM2YzViY2ZhM2ZjNGNiMjQ5ZjhkOWNjYjYzOWIyMS4uMWI5YjU0YjYyNzE4MTQ5NTA4ZjkwMjdj
ODNjNjczMjA2YmE4Mjk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRl
bXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0
aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1l
bnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUz
Yy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QK
ICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApA
QCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNl
cmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9
CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwNGNmZDAy
OWFjODQ4M2E3YzMyMWJhNTRiMTE4MGM4NmZjNGZkNzhhLi4zZTkyM2NmNjQ5ZDk2ZTM0ZWQyYTUx
ZjkxNzBkNWIxNzQxZmE2NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2MDAsNyArMTYwMCw3IEBAIC0gKHZvaWQpX3N0b3JlQXBw
SGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlm
IChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7
CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxv
Y10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9w
dE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQu
aGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRl
eHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFw
cEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dy
b3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3Jl
OjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpAQCAtMjIyMyw3ICsyMjIz
LDcgQEAgLSAodm9pZClfc3RhcnRJbWFnZUFuYWx5c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIK
IAogLSAodm9pZClfcmVxdWVzdFJlc291cmNlOihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGF0YSAqLCBOU1VSTFJlc3BvbnNlICosIE5TRXJyb3Ig
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVl
c3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKKyAg
ICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvci5p
c051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRl
eCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUx
ZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZv
aWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVj
dGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0
IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5n
dGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAg
bV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3Rv
bURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxl
Y3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
dXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0
ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMy
LDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlv
bkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRl
eCA4MDJmZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi5iZTE0MzcwZGUwOWJk
NTcwMmI5YzdkZGNkNmM3N2I4ZjZkYTVmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIs
MTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlv
bnMoKQogICAgICAgICBpZiAobm9FcnIgIT0gQXVkaW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lz
dHJhdGlvbnMoJnJlZ2lzdHJhdGlvbnMpIHx8ICFyZWdpc3RyYXRpb25zKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBX
VEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyld
ICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlv
bnMpXSAoKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFr
VGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVn
aXN0cmF0aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEgfSksIDApOworICAgICAgICAgICAgYXV0byBy
ZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZN
b3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJlMTBk
YTY2YWJmNjQ4NzJmOTEzYzEzMDUzYTJlYjdkYjdhN2ZjMmMuLjExY2M3NTI4YTFlNWY2YTg2ODRm
Y2UwNjdlMGFkYTA3NDYyZWU0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCkBAIC0yOTgzLDcgKzI5ODMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJy
YXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJD
b3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JU
eXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1f
cGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0p
OworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0
SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5k
ZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBO
U1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lv
biwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2
ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19i
cmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKQEAgLTQ1MDgsNyArNDUwOCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBy
b3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5n
ICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJ
bWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEo
KSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5
cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTYxLDcgKzQ1NjEsNyBAQCBOU0FycmF5ICpXZWJWaWV3
SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJv
cERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNl
ZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0
KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJM
XSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAt
NDYxMyw3ICs0NjEzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNz
KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzQ2F0ZWdvcnkgcGFzdGVBY2MKICAgICBoaWRlRE9NUGFz
dGVNZW51V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRG
b3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtwYXN0ZWJvYXJkRm9yQWNjZXNzQ2F0
ZWdvcnkocGFzdGVBY2Nlc3NDYXRlZ29yeSkgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdp
bigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1Rv
Q3VycmVudFBhc3RlYm9hcmREYXRhKHBhc3RlYm9hcmROYW1lRm9yQWNjZXNzQ2F0ZWdvcnkocGFz
dGVBY2Nlc3NDYXRlZ29yeSkpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY0
MDAwYTZiNzE5MTM1YzM0M2I0Y2QwOWMwMjNhNjhmMmM1ZTc4NWUuLmVhZjVlZWE5ODIzY2M0ZjI1
OWVhZDNlMDdkMDkwODMxZDlkM2Y5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzM1LDEwICszMzUs
MTAgQEAgRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQ
cm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3QKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5
TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNl
UmVxdWVzdCwgZnJhbWVJbmZvLCBvcmlnaW5hdGluZ1BhZ2UpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVz
dFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpSZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBzZXNzaW9uSUQsIHJlcXVlc3QsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UocmVxdWVzdC5odHRwQm9keSgpKSksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpEYXRhUmVmZXJlbmNlJiYg
ZGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiYgZXJyb3IpIG11dGFibGUgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwgV1RG
TW92ZShyZXNwb25zZSksIFdURk1vdmUoZXJyb3IpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggODZmMWIzMDQ0ZmM4NzlkMDkzZmVlOTZjZWE2ZWIxMGE1Mzg3NjYzNC4uNzBiNTdiNTQ0NTM5
MjY1M2I0MjZhZDc4OGZiMTEyMjViNzkyYWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTY1LDYgKzY1LDcg
QEAgY2xhc3MgU2Vzc2lvbklEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
cm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZFNhbXBsZSA6IGJvb2w7CkBAIC0xMjMsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsK
IAogICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9y
ZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKLSAgICB2
b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmKT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAg
ICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCAxOTVjM2M4MjIwODhhNzdiYjlkZjE2Nzg1MDEwZjQxNTZjNmNjNjYxLi5lZDlkODMz
N2Y0NzRmNzc4ZWY3NmIxOTRjNjkyMGExMTg0ZjJhNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC00NjksNyArNDY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVj
dCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6
OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDk2Yzk1OTU1ZmFlZmE3MzA5YzFhMGNhMjAyZWUyZjFkYjYxZWI2YzUuLjJhY2Q5
MTM1MGFmNTNkNjdmNzljMzA1MmNiMmEwMmI3MWMwMDkyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjM4Miw3ICs2MzgyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW8KICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZXNvdXJj
ZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdlYnNpdGVEYXRh
U3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnJlcXVlc3RSZXNvdXJjZShpZGVudGlmaWVyKCksIHNl
c3Npb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGRhMDQzZjBkYWEy
NTVjOWFlZDMwMWEwMDQ0MDJiNmEwMjc0NjMxZGQuLmY2YzdhOWM5YzBkMDQ3YjhmYTg4ZTM2NGMy
ZjNlYTVjOTU3YzkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsK
IGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25C
dWJibGU7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJ
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVt
ZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9v
bCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lk
IGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApAQCAtMTM3NSw3ICsx
Mzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2Fk
UHJveHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2Fk
UHJveHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKLSAg
ICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZv
aWQgcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOwog
CiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVj
dGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBk
ZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5lZDhjYjY1M2VjZmRkMTM0
NzNlZTFkMmFmNTBiYWE3YTZmN2ExMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTg3LDEwICsxODcsNyBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNl
cHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0g
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE1
LDE0ICsyMTIsMTEgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBt
X2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAg
IGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKKyAg
ICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLnNpemUo
KTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEudGFrZUFzQ29u
dGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5j
RGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVu
dGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5
OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uZGQ2YjcyNDEwYWRkNGVmNjMxZDI4MDY5ZTE0
YTNmMmEwMGM1Y2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyArMTE0LDcg
QEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25z
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0
aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4
IDNiMDRhODMzZGJlMGI2YjY2ZWUxNGQzYzMwMGYzMDY4NzE4YmYyY2YuLjVjOGUzYjkyZjA4OTky
ZWY0ZGFkNjJiMTc3YTgyZjMxNjA4YmJiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJw
cmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZl
bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2Vi
Q29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBmYWM5ZTdmYjc4
YmVlMGY2Mjk0NTY3MmUzYmI3NGI5ZTA1MjBlMzBmLi5iNjg0ZTFjOTRlYWNiNjcyOGJiMTMwNjhj
YjY5NTIyNzAxZmE4ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTpp
bmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRh
LmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTJmM2ExNWE0M2I4
YWM0ZDE1MWZmMzAzYzNjNWY3N2QxMzUzMGNiZS4uOTlhZWQwMzY4OGUwZTVjNjE3NDc5MGZkZGQ4
ZDI1MGU5YWI3MGEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODQyLDcgKzM4NDIsNyBAQCAtIChC
T09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlk
KXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bh
c3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNE
YXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRP
cmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjY1MCw3
ICs2NjUwLDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmln
aW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVu
Z3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlm
IChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIu
Z2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4g
Tk87CiAKQEAgLTc2MjMsNyArNzYyMyw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6
KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAg
ICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJp
bmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNT
dHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRo
ZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4i
KV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAg
c2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAg
IFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRS
ZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVy
Om5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCmluZGV4IGRkODI5NTNiOTBmNGYxM2JkYjhjYTc2YzQyOGQwYzA3MmMwYzVkYjkuLjdh
OGZhY2QzMTdhMDYzOTZkNjNiOGRlZWM2NTcxZTU1MTNlYzQ5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBA
IFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTQ0MjdlMmMyMGRmMWVhY2FhNDFkMDIzNTdlODdm
YjNhZWMxNzBlZS4uY2E2Yjg3M2IxYzgzZjVhNTA3Yjg1ZWEwZmYzMWNlZGFkZDFhYWIwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0y
MjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVl
ZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEs
OSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRG
cmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVBy
b3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3
aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVh
bCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1
bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVy
biBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhl
YWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0
YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAg
IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0
ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdl
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVs
ZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZToo
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAg
ICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUo
cmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFC
eVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwot
ICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2Fy
ZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
QnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0
NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZj
MTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAg
ICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJ
KGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
fQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBl
cy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0
YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJk
RGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2
MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4
ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2Vi
UGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBk
aWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFt
ZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwg
V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBk
ZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRl
NWU4MGE0N2MxNzFlMzQxNDY4Yy4uYTM0ZTIxMmQwN2FmMmZmNTczZTFhOGEzNDBlYzFkM2ZjZWI0
MmExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lk
IHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7
CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNo
YXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
QEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Ondp
bGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxB
UEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRC
dWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRp
Z3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZl
ci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQ
SSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5
cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hh
YmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9t
YWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmlu
ZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIy
MjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291
cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNl
LmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAg
bV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
OTRkOWQyY2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4uOThhNmUyZTdiNTdlNTIz
MThmNDJjOGNkMTdlNGYwZGUwNTA5NDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3Vy
Y2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgYXV0byBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJs
ZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1
OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcx
YWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQ
cm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2Vu
ZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChV
TkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGRj
NTZkMmM2NmVkODZiOTYyOTUwYTM0ODIwODNlMzQ1OGIzMmI1MmMuLjA4Y2ZiYjU1MGVkY2I1NmM1
OTk3YTA0MzZjMjk2NTNlZjBlODAzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MDMsMTAgKzQwMyw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9u
c2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFu
dWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICAgICAgbV9tYW51
YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YS5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQzNyw3ICs0MzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAg
ICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7
CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLnJlc2V0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjYsOCBAQCB2b2lkIFBsdWdp
blZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5W
aWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXpl
ZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAg
ICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVy
biBtX21hbnVhbFN0cmVhbURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtMTI0Myw5ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxT
dHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVh
bFN0cmVhbURhdGEpCisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRh
a2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQog
ICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0
YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNk
NjgwMjNmMjMuLjczMjc0MWQ5NWVlNmEyYjY1NmYzZDhjMDhjOGFmZmJhN2UyZmFmNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpA
QCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBt
X21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
bWFudWFsU3RyZWFtRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fbWFu
dWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBz
aWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1
OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBj
YmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBA
IC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
KSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXIt
PmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
IGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3Bv
bnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURh
dGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEs
IFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAg
ICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9
LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRp
ZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAg
ICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2Fk
MmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5MzhjNzUzODQx
ZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBt
X2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwg
VW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIs
IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Pj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGRmMjc4YTc4ODRiYWM4OWQ1ZDE1ZjdkYzY0OWQ2
NmQ4MDUwNGMxZjQuLmEwMTAzYjAyYTBmNGQ0YTkxZTE3ZjM1MmJmOGY5ZjEwNTI1ZDhjZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1f
cGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IDRjNDg4OTc2MDEyMmFmNzZmMDNiODBjNGY4NjYyYTEyM2Y0ZDkxN2Uu
LmUxNmIwY2YzODE4MDYxMTBkYmM2ZTE3ZWI3NWQ5MWQzZTRiMDlhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmco
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAog
ICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAg
IHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEw
OWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3Vy
Y2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1
c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUo
KSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKaW5kZXggNjBjMjA3ZWQwZWVhODM2YjQ4NzBkZGE3YzZiYjMwYTE0NTRjYTQ5Ny4u
NGM2NjZkZDQwZDVlOWQ0NTFhMWUwNmMxMWZkMDgwMDI3YTk4YjJhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMp
LCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50
OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hh
cmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7
CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2
ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFu
ZGxlOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
ZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0
dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVm
ZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRs
ZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CkBAIC0zMjQsNyArMzI0LDcg
QEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBw
YXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSks
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDIwMGI2YzAxNTliNjg4Yzcy
YTNmYWRmYmFlMGE2OTQ4MzFiOTM2ZTAuLjA0NWQ0Y2I4OWE5NjY0YTA4ZTFiODFhMDUzMDM1ZGM1
ZDlkMGM1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJp
dmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
aW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRC
dWZmZXJGb3JUeXBlKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJM
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZp
bGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3Jp
dGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNj
NzU0ZTEwLi43OTU2MjZiMDQ4NjIyMGY5YTMwOWRiMmZiNzI1ZTA0YjIyMjU0YTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDUsNyArNDQsNiBAQCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1f
dXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CiB7CiB9CiAKQEAgLTU3LDEwICs1NSwxMCBAQCB2b2lk
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9idWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXIuaXNFbXB0eSgpKQogICAg
ICAgICB3ZWJQYWdlLT5kaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KG1fZmlsZU5hbWUsIG1fdXRpKTsKIAotICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKQEAgLTY5LDEzICs2NywxMiBAQCB2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigp
OworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKG1fYnVmZmVyLnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXIu
cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFz
c3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjli
OWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uMjdhZDFjNTIwMjY2MDFlN2M0OWVkMTg3Nzdl
ZWFmZjYwY2QxOWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29u
c3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBt
X2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEu
LjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6
OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBF
bGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5u
c1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+
c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAg
c2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFy
Y2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0
YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1
dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihh
cmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIx
N2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3
ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJj
ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJh
bWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZTQ2N2VmZmZkNzk0N2I3OGE0
YjgwNzBkNDg4OGIwNmFmOGViN2RjNS4uMzlhYjc0OGUxMjY2ZDU5YjdjNjIwYTc3YzMzOTgzOWVk
MTIxODE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxl
dAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlw
ZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNj
MjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAx
Mzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJ
S2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJl
c2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURh
dGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVO
U0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVU
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNzZiNmQxMmM0YzQ1ODEzOWYzMDgy
NThkOTNmZjMuLmM2NWU5Nzg4OGI5NmI3Mzc5NTg4MDViNmY4ZmEwMDlkY2QxZmIxNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRF
ZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
IAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vz
cyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVnb3J5LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7
IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQx
NDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDFkODFmZmExOWQ5N2YwNGVjN2NjNTc1
YjNlY2U1ZTg4ODE0NDBiMzkuLmUzNTFlYTk5OGMwN2U0YjMwNDZmYzkwZDI2NDVmYWIzZTZkMGQ4
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBT
dHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
aW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRk
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBl
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDE4OGVjNTAwNDUw
NzdkNzhiMDEyMGE2ZGFmYmIwNGZiNzkyNzY0NjQuLmEzZTNjOTMxNjhkODkzNjUwMmFhNmU3ZjQ1
NGU0ZTU3ZWQxYjEyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9y
VHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1
ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAg
LTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAy
OWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1
ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0
YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAo
IW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5S
ZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1h
aW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5
ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJj
aGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNE
aXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVy
ICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2Fk
ZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0
YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZl
RGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFz
ZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4u
NWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29u
c3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0
VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9i
amVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdp
dGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwor
ICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlm
ICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IGIwOGMxZDIxY2Y5
ZjA0ZTYxMWI1OTVlZGUzY2I2NWExN2M0OTk3OWUuLmQzYjUxNmM0MWE5MGU3ZmE1N2RhZDk4OTFk
NDlhMzM5MTQ4YTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlND
b2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICpt
aW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAg
ICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJj
ZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQo
KTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWlt
ZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVz
b3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJh
bWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxS
ZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6
V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQo
KSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05h
bWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICgh
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVS
TApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAg
IGVuY29kaW5nID0gUEFMOjpXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFy
ZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNv
ZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0
YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJl
dHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURh
dGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVE
YXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhj
MDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
TWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFt
KCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1D
T01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAw
OGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRi
MWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcg
KzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5
U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoq
IHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9Owog
ICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5
Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2Vi
QXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYg
KCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1
N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAwODdiNjllN2E4YjBiNjg4YWNiZmU0NGU0ZGFiMWI3
YmRhNTQxZjI4Li45NTgxYWJiZDkzMmE1MWJiZTk4MjA1YTIzMTNhNWM4MDliYTY5N2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5k
RWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7
CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwg
eyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRk
NjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQw
ZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAg
LTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJf
b3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVy
biBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICBy
ZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1
bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjZkYzRhNDg1
MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAog
CiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5f
IEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJs
KQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsK
ICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7
CkBAIC01OTUsMTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0
XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogICAgICAgICAg
ICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0
byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRv
cHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRh
dGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVy
LnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
ZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsK
KyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCks
IG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBT
X09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQz
ZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2
MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291
cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3Ry
ZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4
YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3
ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3
IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDk2YThkYmI4M2I3MjI2NDRkYzZmMDJlYTM1ZjI1OTAxN2FiOWM2YmYuLmViZTIx
MjVjYzg3OWNjNDI5NDI0Y2JhODU2ZjNlODMxZjIzNTBhZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0y
OCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAg
ICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cg
Y2FwdHVyZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIx
MmM3Y2E0NjguLjhmMzJhYmM4ODAxZDUxODg4ODIzNWVmZmJkMGNlZWE3NzdkZTNjOWUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Myw1MiArNDMsNDcgQEAgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlz
dGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAg
ICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0
eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3Vz
KCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAg
RVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5z
aXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+
ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Ci19Ci0KLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZm
ZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBh
cHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5h
cHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1
ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVy
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIu
c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Cisg
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
KQpAQCAtOTYsMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRl
c3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhMCwg
c3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVu
KHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3RE
YXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdl
dCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0
aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0
ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCks
IHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTEsMTAgKzEwNiwxMCBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHZlY3Rv
cjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NF
UlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0
MDAwOyArK2kpIHsKQEAgLTE1MSwxNyArMTQ2LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51
bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIg
bGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0
YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxl
bih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
YnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEg
bW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFT
U0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEo
bGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9u
ZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNs
b25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUs
IGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXpl
KCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7Cisg
ICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5n
dGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFr
ZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8g
YnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRl
cikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRh
MCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgp
OworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOwor
ICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZl
cmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgp
KTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0
ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1
aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQp
CkBAIC0xNzUsNjAgKzIwNiw3MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEg
PSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAn
ZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywg
J2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4g
czIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsg
J2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBi
dWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAg
IGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXIt
PmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7
CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVm
Z2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNv
bWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlq
a2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5z
aXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJn
aCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAg
IGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihp
amtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0
YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVm
ZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgp
LCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlq
a2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXpl
KCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXND
aGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VC
dWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVu
dHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAg
ICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29u
dGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRv
IGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8g
YnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVY
UEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFw
cGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAn
YicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30s
IHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycs
ICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgp
LCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rv
cjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWls
ZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScg
fSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsg
eyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSku
Z2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4
U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9Owot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIu
dGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAg
RVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBi
dWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNU
X0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNDksMTYgKzI5MCwxNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAg
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hl
Y2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYg
IWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEo
YnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzEzLDE1ICszNTUsMTcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1
aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQog
ICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAg
ICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNTgsMTYgKzQwMiwxNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0
ZDo6aW5fcGxhY2UsIHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2so
YnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2lt
cGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVy
LT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9F
UShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVy
LnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRB
bGxDaHVua3NJbk11bHRpU2VnbWVudCkKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAg
ICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxl
VGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEo
YnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNU
X0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1
KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAy
YzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNk
MzdkNmQ3YjZkOTkzMjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNTMgKzQ4LDU0IEBAIHN0
YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0
ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNE
YXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29u
c3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9E
YXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRl
czoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENG
RGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVs
bG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwor
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwg
YnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSho
ZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlk
Z2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0g
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZp
bGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogICAgIH0KIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRh
dGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNo
YXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwog
CiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3Js
ZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxv
RGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2Vn
bWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgp
KQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxU
b0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIg
cG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAo
YnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1
aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxE
YXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAg
RVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRh
OmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9
IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRl
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBs
YXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0
YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446880</attachid>
            <date>2021-12-11 06:06:43 -0800</date>
            <delta_ts>2021-12-12 19:02:50 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211212010640.patch</filename>
            <type>text/plain</type>
            <size>554871</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhOTA4Zjk3ZGNlOWZi
YmU5ZDQwN2ZlYWQ1MDUxNmRjYzQ1M2ExYS4uYTQ0OGNhZmNlZDcwOGVmY2RjNmU1ZmVmNWU3MWQ0
Y2MwNWY1MGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAg
YW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1
bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1h
ZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0
IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBh
cmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBB
cmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xl
IHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVu
IGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVu
IHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdl
CisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEg
Y2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8t
b3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAg
ICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2Yg
YSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAg
ICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJz
aW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFu
Y3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUg
U2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFu
ZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAg
IEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVy
YXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNo
YW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3Jhcnkg
bWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
IGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBj
aGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBp
cyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVu
bGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUg
bWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2Jz
ZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBO
ZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFk
ZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0
ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5k
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
Q0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJ
RkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhE
YXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJD
b3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFz
c2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29u
c3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6
Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhU
YWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZh
bGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhD
b3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxl
Ojpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFi
bGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRM
YW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNj
cmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERh
dGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
bkZ1bmMpOgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0aW9uIGFjY2Vzc29y
IG9uIEF1ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwN2NmYzc4YzdkMWY0MDg1
MzhmNjk0YzE0NTlhYWU0M2I3MTI4YmMxLi45MGFlM2JjOTVkY2ZhMDhhOWExN2ZkNjRhMDg0NWMy
YTI1OTViYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAyMS0xMS0yOCAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJC
dWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJl
c291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZl
ck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNv
bnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVS
TCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNo
YXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgor
ICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVz
b3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVz
QW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVi
b2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxl
Y3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0
b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92
aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmll
dzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hP
cmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNo
YXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
ck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlblN0YW5kYnkgY29uc3QpOgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0
aW9uIGFjY2Vzc29yIG9uIEF1ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGYwZjk3OTc4MDg2ZjhmYmJmOGYwYTY0OTcwNDgyMTBiNWU3M2ZkYWMu
LmVmZmJjNGJmMDNhZmIyZjY5NDdlY2E5MGJjNDkzMDM1YmU5NDZiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAg
ICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFy
ZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNl
IGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEt
MTItMTAgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDE3MwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDc5NDdlYmEyMmEyNTdjOWJkODRhOWZiNjZjMWEyNDg2NmM5YjIx
YjYuLmMyNjUzNmI0ZWRiYTlhN2UxYThmMzAzOGM3N2FjZWY0ZTI2Yzg3MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lOjpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBm
cm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAg
IHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5
U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAg
ICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAo
V2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6Cisg
ICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUlu
c3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTA5ICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBgRE9NUGFzdGVBY2Nl
c3NDYXRlZ29yeWAgdG8gY29udHJvbCB3aGljaCBwYXN0ZWJvYXJkIHRoZSBXZWJQcm9jZXNzIGlz
IGdyYW50ZWQgYWNjZXNzIHRvIHdoZW4gcGFzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
Y3BwCmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRmYWMz
YTk1NDA3ZjJiMzczYWE4OGRmZTM3MDdmMmI5YmVlYWFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2Ji
Njk1NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi45YjU5ZWI1Y2M0OTU3ZjAzMzY2NzU4MmU4NjUzYWMw
NzRmZThmMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVm
UHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRh
MmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li42OWJjM2QzYTAzY2U0NWVjN2NlODYz
NmQ0YjE3ZDkzNTlkM2NmMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmNwcApAQCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQogICAgICAgICBhdXRv
JiBkYXRhID0gaXRlbVR5cGVMb2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpCiAg
ICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6Z2V0PFN0cmluZz4o
ZGF0YSkpOwotICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihkYXRhKSkKLSAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUs
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4oZGF0YSkpCisgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6Omdl
dDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKAogICAgIGlmICghc3RyaW5nUmVzdWx0LmlzTnVsbCgpKQogICAgICAgICBtX2RhdGEgPSB7
IHN0cmluZ1Jlc3VsdCB9OwogICAgIGVsc2UgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSBtX2Jsb2JM
b2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCkpCi0gICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB9OworICAgICAgICBtX2RhdGEgPSB7IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlC
dWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIH07CiAgICAgbV9ibG9i
TG9hZGVyID0gbnVsbHB0cjsKICAgICBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAt
MjY1LDggKzI2NSw4IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlw
ZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwot
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9k
YXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYgYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwogICAg
ICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBz
dGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRp
emVEYXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmciX3MpIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0g
ICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KG1fZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJUb1Nh
bml0aXplID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0
cigpOwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9k
YXRhKSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6Z2V0
PFN0cmluZz4obV9kYXRhKSk7CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURh
dGFJZk5lZQogICAgICAgICB9CiAKICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3
SW1hZ2UoYml0bWFwSW1hZ2UuZ2V0KCksIEZsb2F0UG9pbnQ6Onplcm8oKSk7Ci0gICAgICAgIG1f
ZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnRvRGF0YSgiaW1hZ2Uv
cG5nIl9zKSkgfTsKKyAgICAgICAgbV9kYXRhID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoaW1hZ2VCdWZmZXItPnRvRGF0YSgiaW1hZ2UvcG5nIl9zKSkgfTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2My
YzhlMWE1NGUxOGQ3MzQ5NWM1MzBjZDc3ZDU0Zjk5YTUyOWE3Li4yZGM5ZDUwMGYyNTM1ZThjYjIx
Y2JhMzNjZTRhZTFlMjU0MTMxMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5oCkBAIC0zNCwxMSArMzQsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQmxvYjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01Q
cm9taXNlOwogY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21E
YXRhOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9h
cmRJdGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3
ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7
CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxT
aGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJl
ZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3
ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi4yOTNmNTIzMGQwZDc3MTIzZGIxMzBiMDE2OTM2
OTlmYmFmZjU0YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9h
cmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2Nh
NGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi4xNTdjNWY1MmMwMjZiZmFhOTc2NGVjZDI1MDQyM2Ix
NWQxODYzM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDli
M2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1
NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBA
QCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNv
bnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAg
V1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChj
b25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZm
ZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFl
NzgzYTUyMDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjQyZmU4ZmRmZDQ5ZDFlNjBhOGRjZjEx
YzEyZjJmYjAzZTM0Njg5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxS
ZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVy
LT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBu
dWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNo
dW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2Ug
fV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcmVzcG9uc2UuY29uc3Vt
ZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciks
IHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9
IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTI5OSwxNSArMjk5LDE1IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8
UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+
ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQo
Y2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0
aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2Fj
aGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNw
b25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQor
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3Bv
bnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9u
KCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0
aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMx
OCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdp
bmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9k
eS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJh
dGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJv
ZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUo
cmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUo
cmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJ
bmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAog
ICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0
byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29u
c3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
cmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3Zl
KHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5
ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFi
bGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVz
dWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5k
YXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92
ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdU
Rk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsK
ICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdj
ZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNo
UmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2
b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxG
ZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRy
aWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5
NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEz
MSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVz
cG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNv
bnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICBy
ZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZm
ZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVm
KCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJl
dHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9u
c2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9
OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNv
bnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6
Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVu
Z2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMx
MzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1
Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNo
ZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlv
bnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9w
dGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJv
ZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHko
Y29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJl
c3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5k
ZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5
NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRz
Lmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3Ry
aW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNp
emUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2
YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAg
LTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlp
ZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0
ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAg
ICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmco
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUo
a2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJp
bmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIy
YmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRi
YzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRp
YyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291
cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwg
bGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
IXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0
ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsK
IH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5
SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVy
U291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4
KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5k
YXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJz
dC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFu
dFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZm
ZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwCmluZGV4IGMwNDczMTI4NGY2NzZhYTVjNTBmOTQwYmU0ZjY2MTcyNWQ4YmY4
YWMuLmQ2NWIyN2JmZThhMWVmMjE5OTJiOWUxYWQwNWFjYTU0ZTcyZDYwNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2
b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShG
ZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsK
ICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZl
cigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlz
ZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZm
ZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUo
cHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEg
Y29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcy
LDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgp
IGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0
PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25z
dW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0
Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIg
PSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAg
ICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5E
YXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAog
ICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBB
TDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5k
bGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkp
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygp
LmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0Jv
ZHkoKS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAK
ICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSks
IGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVm
ZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAg
aWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJh
c2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3
NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkz
Y2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFz
Rm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVz
aW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwog
CiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9
IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGM4NjVmN2RhMjM5N2FjNTU5M2I0NGI1MzlkM2U2
NzFlNDNjZTZkYi4uZmFkZTYzZTRiZTQ5ZjRkMTkzOWQxZGI4YWUxMzIxODFhZDBhOWEyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAg
IG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmICht
X3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2
NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0pIHsKICAg
ICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRv
U2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1U
b1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRh
dGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShX
VEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5r
LT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAg
ICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2
LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRv
IGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2Fn
ZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRv
IGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVy
ZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDI2ICszMjYsMjQgQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNp
emUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0
YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsK
LSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVybiBXVEZNb3Zl
KG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7CiB9CiAKLVJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAg
ICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShu
dWxscHRyLCAwKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVy
LnRha2UoKTsKK30KIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5
QnVmZmVyOworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVy
KCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1MSw3IEBAIFJlZjxCbG9iPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29u
dGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2Nv
bnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIs
IG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICBy
ZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUp
OworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRy
YWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjAsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRG
OChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51
bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7Cisg
ICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4Mywx
MCArMzgxLDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgp
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4m
JiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1f
YnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBp
ZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0Fy
cmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVk
KGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAx
NTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0
dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtl
QXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBt
X3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQ
dHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlT
b3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKaW5kZXggNGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBkM2Y4NDhmNjRm
Mi4uYjkzNDM5MmE5MDNkNGE1ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAw
LDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmso
Q29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07Cisg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBT
cGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAg
ICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBA
IHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWlu
dDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwog
ICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAg
ICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
ICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAg
ICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwog
ICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIw
YzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTkyNzI5MzBiYmMy
ZDE2NjZjNmFlYjU0N2ExYjVlZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVk
U3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlE
YXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBk
ZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2
ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNp
emUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRh
KCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXpl
KCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRl
eCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdh
YTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2
LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAw
eDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBI
aWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVy
KCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7
CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0
ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4g
ZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJj
MWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYz
MmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7
IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXpl
SURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3Rk
OjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBL
ZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZv
aWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5
KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShj
b25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5j
b2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVL
ZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYg
cmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFj
OGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJp
YWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5
UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25z
dCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXpl
SURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0
YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhl
ZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5m
bwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0
cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFr
ZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBz
dG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktl
eVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBk
YXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFu
Z2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1
dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAg
ICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25z
dCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShp
bmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
aW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFi
YXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2Ui
X3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5k
ZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGlu
ZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUg
ZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07
CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Omtl
eUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICgh
dHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMg
aW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9Owog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9y
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJf
cyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFT
U0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRh
IHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJl
IHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEg
cmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRv
IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0
byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3Jl
ZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBp
ZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
ICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5
IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5Lmlz
TnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7Cisg
ICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAo
IXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1
cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1
cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4
SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERC
OjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1
cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9
IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2Uu
bG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5n
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlv
biJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051
bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktl
eSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkp
OwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJL
ZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4u
NDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFy
Z3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJL
ZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsr
LCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
Y3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJl
YmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3Vt
ZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZl
YjFiOGZmZmI3Yjk0YzllN2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3MzA1NjU3ZDBh
OTcwNTY2MWU0YmI0OWNlMGI4NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZl
ci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwog
ICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9z
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
CmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJh
YzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lk
IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJl
ZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVm
ZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3
RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAg
ICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZl
U3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIy
NDA5YjFmODllMC4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7
CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0
YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0
OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJs
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJj
ZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCAr
MTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291
cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBw
ZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5
NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJj
ZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRs
ZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
TmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21v
ZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3Vy
Y2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3Jl
YXRlKG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCks
IHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0
ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjVi
NjM0OWFhNWJiYjFhZjJjODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAz
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBV
UkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAg
ICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0
YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2Fk
ZXJVU0QubW0KaW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4u
MTMwM2VjNGQyNTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxM
b2FkZXJVU0QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3Nj
ZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYg
bW9kZWxTb3VyY2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNv
dW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0
ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6
ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291
cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAppbmRleCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0
N2MwOTYxYzk5NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcg
QEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9y
bURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNy
ZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsK
ICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgz
ZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5
OGZhZWE4NGY0YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZl
ciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAg
ICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAg
ICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAg
ICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNr
VG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5n
SGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmlu
ZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50
b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29u
dGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQs
NyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsK
KyAgICBtdXRhYmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNC
dWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAppbmRleCBhZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBjM2E4YzY5YTlj
MzFkLi4zYzVlYTliODlhOWM5ZTkwMzcwYjk4ZGY1Mjg1NjMwNjQ5OTAwN2Q5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAg
ICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1l
bnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0g
ICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9n
ZW5lcmF0ZWRPVEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdGZGb250LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZC
dWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIs
IFN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJv
b2w+KG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAg
dm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAg
IH0gZWxzZSBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9p
bW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBp
bmc7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1f
aW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5
dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmlu
ZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4
MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3
ODZhMDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNz
IENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIs
NyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNw
ZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3Mg
U1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0
dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRl
OgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJl
bW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udExvYWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMs
IGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
clZpZXc+IG1faW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4
Y2Y2YTk3MzJmM2VkOS4uZjViZjJiNzI2ZTZhZTk2ODkzNTNjMGE3ZTA4YjQ1ZWZkYTVkOTA0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1
Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIg
ewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7
CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggMjgzMWNkM2ZhOWM2YTRmOWZmOWE5YTBlMjVjM2I0MmU1MmQxYjY0
ZC4uY2YzMmFiYzE4MjdmY2ViNTRhZDVlYTAxYmEwMmViMDFmMTc0ZjcwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtNDE1OSw3ICs0MTU5LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50
SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsK
LSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBiMDMxMzZmZmNmMWY2YjM3ZTZiMDdhYjYyMzJlNjFm
NjZkZWU3NTg3Li44ZGE5ZmNjNjQxNmI2NzIxN2QxNzQ5ZWJiODk3ODA3ZTQ3NjExMTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xh
c3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVk
aXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUzOCw3ICs1Mzks
NyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2Rl
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFs
b25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzUsNyArNTc2LDcgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZv
KEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRU
eXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlw
ZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91
dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjIzLDEyICs2MjQsMTIgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbklu
SFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZp
c2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwor
ICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1h
dChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlm
CiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0
cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1Njkw
MDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFk
ODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50
aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVu
dFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKaW5k
ZXggMDhhYTEyNDI2NjIwZjc2OTUzYTc5YjM0ZWRlNWY2ZGYwNTI3YjAxNS4uMWQ5N2FjZDNjYzc5
MTYxYjBhYzUwYzRiZjcwY2IxNTJmYzBmNDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb250ZW50UmVhZGVyLmgKQEAgLTc4LDEwICs3OCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVh
ZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsg
fSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNlbmRpZgogfTsK
IApAQCAtMTA1LDEwICsxMDUsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
LSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVh
ZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkV2ViQXJj
aGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRG
RChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVy
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQ
cmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5jcHAKaW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVhMjRlYzIwZTRm
MjFiZmEyNS4uNzRmZTgyODdlOGMzOTNiZTE3YTY3NjY1MzhkOWYzNGEwOTBiMzM0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
cjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5k
KEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBX
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBC
bG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwg
ZmlsZW5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZjYjRkMTU4MTQ2
MzViMjRkOTBiYjcuLmU3YTA3MWNhNDAzOWUwMWY0OGQwYjQ5OTUwMWVkNjRkZTYyNmYwZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0PiBjb250ZXh0OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1YjdhYTc1MjZi
MmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4ODE4
NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAg
ICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJp
YnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVk
U3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5s
ZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0
cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2
ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdT
ZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2Vs
ZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2Vs
ZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAK
LXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVt
ZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5k
RGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5
cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsK
ICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7
CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0
VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0
cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpl
bGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3
RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQo
V2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRh
LmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBF
ZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3Jp
dGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUo
d2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgp
KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5n
ZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZl
LT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBu
byBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMg
YWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAt
MjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3Qg
VVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJ
bnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VS
YW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0
aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0
aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIx
ZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjcz
LDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJl
c291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0
byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNl
UGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAg
ICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2Zp
bGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVU
eXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxO
U0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJj
ZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBO
U1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFt
ZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAg
ICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShy
ZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMsNyArMjMyMyw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50
KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAoU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQu
cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0
NGI2NzllMjI3OS4uNDQwNTliZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3MzUzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAg
IHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFt
ZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAg
ICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0zMDksNyArMzA5
LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZp
ZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAg
IHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50
aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5p
c0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250
ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAg
ICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsK
IAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUp
LCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBp
bWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92
ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8m
IG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkp
IHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRo
QXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAg
ICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3Vy
Y2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0p
OworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUp
LCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8g
OiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBN
YXJrdXBBbmRBcmNoaXZlIHsKICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3Ry
aW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1
cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5T
aG93TUlNRVR5cGVBc0hUTUwpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKFVSTCgpLCBidWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ0Miw3ICs0
NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFy
a3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBl
QXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJu
IE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgp
LmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJr
dXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5S
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0K
IAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFu
ZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyAr
NDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBm
cmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBs
YWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJv
bVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJl
c291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFt
ZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxs
KCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1h
cmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1l
bnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1F
VHlwZUFzSFRNTCk7CiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92
ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFy
Y2hpdmUubWFya3VwKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2
ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFy
Y2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5z
ZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFk
V2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsNyArNjEyLDcg
QEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0
cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyArNjI2LDcgQEAgYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJU
RkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM5LDcgKzYzOSw3IEBAIGJvb2wg
V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJl
ZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDcg
KzY1Myw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVy
OjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAo
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzMyw3ICs4MzMs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsK
ICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDMwMzZjZDMyZDZjZDgzMmMyMjAy
ODNhODQ0NWE4OTlhNWE2NmNhM2MuLmRmMDkxOWY3NWFjZjc5YTgzOTI4MzIxMTkwYzVjYjJiYWY3
NDdlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTExNiw3
ICsxMTYsNyBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgpCiAgICAgUGFzdGVib2Fy
ZEJ1ZmZlciBwYXN0ZWJvYXJkQnVmZmVyOwogICAgIHBhc3RlYm9hcmRCdWZmZXIuY29udGVudE9y
aWdpbiA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBw
YXN0ZWJvYXJkQnVmZmVyLnR5cGUgPSBsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKTsKLSAgICBw
YXN0ZWJvYXJkQnVmZmVyLmRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RGF0YS5nZXQo
KSk7CisgICAgcGFzdGVib2FyZEJ1ZmZlci5kYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGZvbnREYXRhLmdldCgpKTsKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRC
dWZmZXIpOwogfQogCkBAIC0yNTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5v
ZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVt
ZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAg
YXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAg
ICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3
RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIC8v
IEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBw
cm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBv
ZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVtZW50
IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwg
d2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0
MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlh
ODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJz
ZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKICAgICBh
cHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3VsdC5maWxlU2l6
ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJp
bmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5
KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMgaW5saW5lIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShj
b25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0
ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkp
OwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5
VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiBi
dWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2UKICAgICAK
IGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKCkK
IHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0
ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsK
KyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEg
PSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFr
UmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0YSwgaXQgd291
bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEg
aW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9yZSB0aGF0IGRvY3Vt
ZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0
aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3
My4uYjk5NzZhZjJlNGRkNDA5YTg5YzNhNDI0NDEzOWEzZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVu
c2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQo
IWhhc0NvbnRlbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwot
ICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICByZXN1bHQgPSBtX2RhdGFC
dWZmZXIuc2l6ZSgpOworICAgICAgICBtX2RhdGFCdWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAg
ICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODAsMzcgQEAgdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4g
cmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30K
Kwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgo
KSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUo
KSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0g
ICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVm
ZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAg
c2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29kZXIp
IHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5n
dGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZl
ci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVu
Y29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyht
X2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAK
LSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXpl
SW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEy
ZjlhYmVlN2RhNTkwOGQ3Li4wNGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEzODkxNzIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25z
ZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAg
ICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VU
aW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEo
KSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJv
b2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29s
IGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAg
ICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDcg
KzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAg
ICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZl
cjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRp
ZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBt
X2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDRlM2Rh
ZjFhZGU0NzMxODc5NWJhYmFmODUyYzIzNjJiMzk5NDliZGQuLmU1OGJjYzJhYTdmODE0ZDk3N2Zm
N2Q4ZjI2MjNjMzdlY2JhN2MxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0
MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVu
dChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAg
ICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4
dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5j
b2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXgg
OWI1Y2FkOTU5YThlNmYyYzJiZjcwZTFhZWUxNDI4NzQ1OWQwNjYxMi4uYTNjNjBjM2I2OTZhODNk
ODMxZDg5N2Y4MTY3YTMyYmUyMzczNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMs
MTIgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUq
IGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0
YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwg
cmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1
bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29s
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChi
dWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICBy
ZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05h
bWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5n
KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRl
NmEzYTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4
OWMxYjUwYTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJl
c291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8q
IHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRh
dGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNl
aXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBk
MTlhN2ExYTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNh
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVy
LAogICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29u
dHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxv
YWRlci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmll
ciA9IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90
QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
aW5kZXggY2Y2Y2NmMmJkMDg5MjUwYzYwM2ZkMDRiNzRjM2VjOGMwZTQ5YzRmMS4uZmRmZDBlYWFm
M2E1MDE4ZDkwMGJhMWE2ZDdhNDhhZTU3MzJmMzRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA1LDExICsxNjA1LDExIEBAIGJvb2wgRG9jdW1lbnRM
b2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygq
bV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAg
YXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9w
YXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJj
aGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEo
KS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1f
cGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwog
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjQ5LDcgKzE2NDksNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJl
c291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRM
b2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjUzLDcgKzIyNTMsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAg
ICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZh
bHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJj
ZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURh
dGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggNTEyMjdiOTZkN2QxN2NhMDdlZTNiN2NmZjQxNjJmM2NiZTFhOTc1Zi4uNmJkMzJm
YzJlY2Y0NmFmN2NkOTM3OWE5ZDAwYzk5MTE2ZWI3YTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTIzNSw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBS
ZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MTIsNyArNjEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
IFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3Vy
Y2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYzEwZDVjMWRiZWJlZjA1NTI4NDNkZDlmYzBh
NTMzZGRiNDc5M2E0Yi4uMDc2ZjM3ZGUzMjU5YTAzYzM4N2ExZTBkMmFmY2FlZDJkODI1OWIxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxv
YWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyBy
ZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZmUz
MmQ5NGU0Mjg2NTlkNWQ2MWRhYmE3MjE5OGViMTk1OWJhMjVmNi4uMGRhZjRjN2FiNjA1OWJkNDdh
N2NiYmQ4YzgzMTczNGM0YmIxMDM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRy
aWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RD
YW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNr
aW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNmM1ZWUzYTliMzFhZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNi4uZTkxYzhmNjBk
M2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2ViNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
UG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVm
ZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBD
bGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBB
U1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTU0
LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNs
eShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZp
ZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
ZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAg
ICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJl
c291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZWRlY2UxMmNkN2E5NmZlYjkzNWMz
MzQ2NmM0NmNhZTAyMGUyZjNhYy4uOWMzZjc0YzQyZGI4ZTdiYWU5NTQwNWY1NDBmM2UyODcxOTgy
ZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAg
Y2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJl
c291cmNlOwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVu
dW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBD
bGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFu
Z2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25z
dCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0
aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3Ry
aW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJ
bmZvJiA9IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYs
IEV2ZW50KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
JiYgPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uYjg0OTFh
YjMwZTQ4YzczMTZiODg4MWJiZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpy
ZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVz
b3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogICAgIG1f
ZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICszMTcs
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZm
ZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkg
YnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxs
cHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzMs
MjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZm
ZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlw
ZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAg
ICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9
PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0
KCk7CisKICAgICBpZiAoYnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpi
dWZmZXIpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxz
ZQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAg
IG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25zdCBTaGFyZWRC
dWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6
Y2xlYXJSZXNvdXJjZURhdGEoKQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7
CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApA
QCAtNTcxLDcgKzU3MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZl
ciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29u
J3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBn
aWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0g
U2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3Rh
dGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5k
ZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uMzdkNjY3ZDgzNzZk
MDBkYTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlclR5
cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtOTgsNyArOTksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAot
ICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNv
bnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIyOCw3IEBAIHByaXZh
dGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVz
dCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcmVz
b3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIw
MzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0
YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
UmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5
Li4zNDRjYTk4Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3Bv
bnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+
KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAg
IHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVs
aXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmRE
YXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxp
dmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERh
dGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0
aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2
YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9k
YXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4
OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBj
ZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYw
NSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZl
c3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIw
YTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVV
UkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkK
IHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2Yg
dGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ug
d2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVz
b3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5j
b3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3Im
IGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1
ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2Fk
aW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmln
aW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0
dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBl
cnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBp
bnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sg
ZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBw
bGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAg
ICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8g
RklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1
ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBl
bnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0
YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
aW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2
ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQy
LDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxp
Y2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtNDks
NyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAot
ICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJj
ZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAg
dm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hlSW5CYWNr
Rm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAx
NDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdh
MDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYg
dXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLmNvcHko
KSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAg
IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5
KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVl
YjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJj
ZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5jNzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNl
NTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRh
dGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlm
ICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBy
ZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0
aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQot
ICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7
CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0
ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVz
b3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3Rh
dGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBE
aWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYg
c28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90
ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBh
dGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAg
IHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJj
ZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVk
IHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsK
KyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRo
ID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXpl
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNm
MDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNv
dXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1w
dHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNl
RGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAK
ICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9
IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzEx
Nyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUg
cmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5S
ZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0
ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2Vi
QXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsg
ICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0
YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApA
QCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRh
IGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAg
ICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdS
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZl
cnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5n
R2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBj
YW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVz
b3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCBy
ZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisK
ICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAK
LSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOwor
CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisK
ICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nh
c3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0
YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYg
KCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hh
cmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3Qu
Z2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBl
eHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4
dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcg
KzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51
bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1h
aW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsK
ICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52
YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNo
aXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhw
ZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwog
ICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNv
dXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJh
eSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsK
ICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkK
ICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hp
dmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qo
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2
LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9u
c2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVS
TCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3Nz
aWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6
Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1
LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlz
RnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8g
V3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0
ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkg
b3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlm
cmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwi
MFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9p
ZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIx
ZDcyN2MuLjk5M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNw
cApAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGlu
c3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0
aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlT
dHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2Np
aVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEo
KSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJl
c291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3
OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRh
KFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1U
cmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRp
b246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNj
aWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsK
KyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUg
dGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgog
ICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXpl
X3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJj
bXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRv
IGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwot
ICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVk
RGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsK
KyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVk
RGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29k
aW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNl
cnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5k
IE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1
ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAg
ICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAg
ICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjpt
aW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBs
aW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIp
OworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsg
aW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxy
XG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAg
ICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAi
LS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEo
KSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRh
OworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAx
ZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRj
YTY4YTcyNDE1MjMwZDEwOWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFk
ZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHko
KSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVu
dCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250
ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5p
c0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1p
bWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkp
IHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAg
ICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFw
cGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0
KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVr
KG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lp
KCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1m
ZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0Zjgo
KS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGlu
ZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVh
ZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRh
YmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxy
XG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUg
UXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgot
ICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAg
ICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
fQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVu
dCA9IGNvbnRlbnQudGFrZUFzQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5j
b250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6
IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRh
KCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjRE
ZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUo
KSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigi
SW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRh
dGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURl
Y29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBj
YXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0
YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29u
dGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBN
SFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBj
b250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
YXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3Vs
ZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhl
IHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1o
dCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAK
aW5kZXggNGYyMjhlOGQwMzg5YjhiOGNiN2Y0MTQ4NmZkYjc4MWM5YmY2NWJkMi4uOTdjZDRkZmZk
MTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAt
NDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3
ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjY0YjE0ZDVmNjVmZmZjODU1
NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4g
cHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBE
b2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7
IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2
Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjlkMmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1
YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNr
SGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0
IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2Fu
IHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEzICs5NywxNyBA
QCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5t
X3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8g
ZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJp
bmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJl
IG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmlu
ZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQzN2ZhZmFjYzAx
MjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rl
ciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5n
ZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNv
bnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMz
YWU5NC4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBA
IHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGll
bnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRM
b2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlm
IChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAg
ICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05
MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9u
KCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmco
KTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAg
ICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZm
ZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5n
KQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNy
ZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBi
dWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3
cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0
dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUlu
Q29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVk
Rm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAo
aXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdo
aWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBj
bGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4u
MTU0ZGI4Y2JhYmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZElu
aXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZv
bnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9u
Q29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQm
KTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0g
ICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAK
IHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsK
QEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBm
ZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVm
NjkzNWZiN2VmYTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFy
SW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hl
ZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91
cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFn
ZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZl
clVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3co
KSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0
YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBD
YWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAo
IWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOwor
ICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RT
Y3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNj
cmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBv
c3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkp
LmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVl
biBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0
U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUs
NyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAg
ICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAot
dm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwog
ICAgIGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uZDUxM2Ux
NmNiYTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJv
b2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2lt
YWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0
KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVU
eXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRE
ZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwog
ICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNo
YW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZm
ZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFs
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3
OWQ3N2YxODM5NTYyZi4uODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+
IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJu
IGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxv
b3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAg
ICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0
YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2Rl
ZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBA
IC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRh
dGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAg
IGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQg
aGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRo
ZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRh
dGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYg
KGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkg
ewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFs
RGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRh
LT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAg
ICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAg
ICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCks
IGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19M
T09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjliLi41N2ZkN2Fi
NWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5h
bDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91
bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC05Miw3ICs5
Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJm
bG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRp
bmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0
cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8
RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2U0NDZm
YjkxNzRmZjY4MjAwMDExNGE3MmEzZTJhMDEwZTc4MTA4OC4uNTU2OTY0M2NkNWU2ODk3YTNjNThm
YjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAg
ICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291
cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwog
fQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkx
NSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgp
CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNl
Ojp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENh
Y2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05
MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBw
ZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlk
UmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2Ey
NTE4MTNlNmMwMzViYzI3OC4uMjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAg
LTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENh
Y2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAtMjEzLDcgKzIx
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1
ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAg
ICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8q
IGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAq
LykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJG
b3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
Rm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3Rl
Y3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50
czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVz
dDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVy
PiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9u
aWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFy
ZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMx
ZjJjODM5Li5iMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFjYTgyMjJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAg
LTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29u
c3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBD
YWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3Qg
bmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9u
Z3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAg
ICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRl
bnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNk
M2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3Vt
ZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJi
NjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3
YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAg
ICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJs
ZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50
KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkp
OworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwog
ICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICgh
bV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQg
PSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAg
ICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252
ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51
bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNk
ZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIw
NGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1l
bnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmlu
ZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Y29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252
ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50
OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29u
c3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMw
ZjdkOWFjYzA1YzRmYTg4Li4xZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAt
OTYsMTAgKzk2LDE1IEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAg
cmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAg
ICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4
NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5
YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwog
ICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApp
bmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi41NDI2NmRkOTA4
MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hl
ZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAg
bV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1
MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3Vy
Y2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhi
OTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEw
ICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5j
b2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAg
IHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
Kik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkw
ZjQ2N2EyNzgyNjE1ZDM0MDBjLi5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4
NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hl
ZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5h
bWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRh
dGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlm
IChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQy
YjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1
ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0K
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hl
ZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRl
eCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0
NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAg
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlv
bihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNr
ZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZp
bGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAot
ICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZv
aWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAog
ICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4
MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4
NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQg
Zm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVx
dWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0Nh
Y2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJl
c3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0
byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3Bv
bnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9u
aXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNo
ZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2Fj
aGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQog
ICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2so
Y2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwog
fQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFy
ZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291
cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVm
ZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJl
c291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlm
ICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIu
LmZmNDBjNDE2Y2M2MTZlOTJiMTMwN2JhYmI3ZTM0M2IzN2U1NDYwMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNyw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGll
bnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2
aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNs
aWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291
cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdE
YXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3Bv
bnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1
NzM0Li4yM2M5NzI0MmJiOWZiNzUzZmFiNzQzN2FmN2UwOGEwOWRhOTYyMWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02OSw3
ICs2OSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTE9H
KE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIgd2l0aCBzaXpl
ICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+YXBwZW5kKGJ1ZmZl
cik7CisgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXIt
PnVwZGF0ZU1haW5SZXNvdXJjZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1
ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFs
RGF0YS5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQ
cmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNl
IHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2
b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0
ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRl
TWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIg
PT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0
cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQoKS5nZXQoKSk7
CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggMTgxNzUzMWNiNjk4YjhhNGVk
YTI4MTBjYzQ2NmM4MTY5Y2IxNjNlYi4uY2VkNTYwOWMwMDVhNTM1MmIzM2QxMTk4ZjQ1Yjk4YmE4
NGE3MWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOSw2ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90Owog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCA5N2UwMWI1YzY5NzZkNjdmMGYzYmRmY2VkZWM2YWJjZjA0ODUyYzQ0Li43Yjk2
MWRiMDQwNGMxZDE5NzM2MDc0ZTRhOWQ2YzFkYzk0MjEyMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTE5NzMsNyArMTk3Myw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQo
KSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBs
b2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQg
ZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAg
ICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQ
YXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5jcHAKaW5kZXggMTY1YWE4MDU4YTAzOTBiNDUxNTc5YTE0NzYxYmQ4Njc5NDkzNjQz
My4uMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRp
bmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0
ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRl
eHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291
cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRk
KHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3
IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVT
aGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
Y2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdh
cyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmco
c3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVu
Y29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRl
eHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1Rl
eHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwor
ICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmlu
ZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1f
cmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwg
UmVuZGVyRWxlbWVudCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3Zl
KGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNl
VVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4
IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5
Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAg
ICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxS
ZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUz
MWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZi
N2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1
Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2
YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0
ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRh
UmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25P
cjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDog
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAK
KwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcx
LDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5k
ZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0Zp
bGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3
RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAg
ICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUo
ZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVz
UmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkp
IHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7
IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFl
OGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2
ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91Ymxl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBm
aW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCBiYTE3ODcyNDcxYWUyODY0Zjc3MDgy
YzQ3ZDY3ZjI2M2VkNWRmOTU4Li41OTZhZmI4ZTkxODg4YzJhYTY3MmZjMGU1ZDA2Y2I2NDQ5ZGVk
YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3Ry
YXRlZ3ktPnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250
ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDE0NzY0MWRkYjY1
ODg1ZTM5YTgzYzZhNDU1NTZiMWVhYTZiMzY1ZjcuLjRlMjc4MmQ5YmFjYjlkMDE5ZDEyMDAyMGRm
ZjAxMTZlMjUyMzJkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYx
LDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZy
YWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0
IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBh
c3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9v
bCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3Jt
YXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0Owog
ICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmlu
ZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJ
bWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3Jt
YXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwog
I2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAg
VmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBG
bG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQzLDcgKzE0NCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJk
QnVmZmVyIHsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICNlbmRpZgogICAgIFN0cmluZyB0
eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiAvLyBGb3IgcmVhZGluZyBmcm9tIHRoZSBwYXN0
ZWJvYXJkLgpAQCAtMTY0LDEwICsxNjUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVy
JikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEYoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0g
MDsKICNlbmRpZgogfTsKIApAQCAtMTgyLDcgKzE4Myw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmls
ZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7
CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiAvKiB0eXBlICovKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAw
OwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7CkBAIC0zMDgsNyArMzA5LDcgQEAgcHVibGljOgog
ICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUluZm8o
c2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAg
ICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lmdl
dCgpOyB9CkBAIC0zNDAsNyArMzQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRI
VE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0
VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zv
clBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlw
ZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2so
Y29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
Q29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJj
Y2Y2N2FlNzAuLjIwY2Q2MWU3MTEyMTMyMWNjNDZkMDc3MTk5MWFhYzVhYTQ3NTU4MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAg
LTMzLDEzICszMywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY29weVBsYXRm
b3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAot
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikp
Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29w
eVJlZigpIH07CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRD
dXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVk
IGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4
OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8
PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5
cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAog
UGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5j
ZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyAr
MTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21Q
ZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2Rlcihi
dWZmZXIuZGVjb2RlcigpKTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmRD
dXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IHZh
bHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1
c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0
Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBAIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2luQ3Vz
dG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlwZSAh
PSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3Jt
RGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0
Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoQ3Vz
dG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0KIAot
dm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0gZW50
cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+
KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBlLCBk
YXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAz
Li5jNmNiYzc5MGM3ZTA1ZjMxNDgyMDVmYzVhMWNjNWE0NjgzYzZkNjE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDcgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CiBw
dWJsaWM6CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBTdHJpbmcgdHlwZTsK
ICAgICAgICAgU3RyaW5nIGN1c3RvbURhdGE7Ci0gICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFJlZjxTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7CisgICAgICAgIHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOwogICAgIH07
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwpAQCAtNjAsMTYg
KzYwLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4p
IHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFz
dGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAog
ICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRh
KTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04Myw3ICs4Myw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0
OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRC
dWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5n
T3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFy
aWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25z
dDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNE
YXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCmluZGV4IGU3NzlkYWVhZTY1OTUzNDE4ZDkwYzE3NTAxMmQ1OGZiOTY4YTUwMGMuLjliMWQ0
Yjk1ZWRmYmRmYTA1OTU2YTM5OTA3MWFiOWZkOTE4M2I5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVj
dG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50NjRfdCBh
ZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2
NF90IHNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRVUkwoY29uc3Qg
UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRDb2xvcihjb25zdCBD
b2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5n
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0
cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25E
YXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5
MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0
MTIxZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1
MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250
ZW50T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAg
IFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9y
bWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlYjQx
YTY4Y2M1YWY5MjJlODgyZWMyNjhlZGIyZTk5MDVmNDNjMjQ0Li41MjcwYzU5ODQzNTUxMDRmOTFh
NWNlNTQyMjIzYjQ0OWMyYjUxODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2Fy
ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rp
b25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0
cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQ
YXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZv
cm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1
ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBh
dGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC04NSw3ICs4Niw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0
ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQ
T1JUIGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRC
dWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0
ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBD
b2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKQEAgLTkzLDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2Fy
ZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVf
dCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNv
dW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRi
ZGRmMDdjZjYxNjZhNTg2MGJhYzA3NDYyNmQyOTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNs
dWRlICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBA
QCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBj
b25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRh
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4g
Km1fcHJldmlld0RhdGEuZ2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRl
TWFpblJlc291cmNlKCkKQEAgLTIyMSw4ICsyMjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6
OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NF
UlQobV9zdGF0ZSA+PSBTdGF0ZTo6Q29udmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252
ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRh
LT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3
Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAg
IGlmICghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAg
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZp
ZXdEYXRhLmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8
ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBA
IHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNs
aWVudCYgY2xpZW50KQogICAgIH0KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5p
c2hlZENvbnZlcnRpbmcpOwotICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsK
KyAgICBBU1NFUlQoIW1fcHJldmlld0RhdGEuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2
aWV3RXJyb3IuaXNOdWxsKCkpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNo
Q29udmVydGluZygqdGhpcyk7CiB9CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29u
dmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
ICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmll
d0RhdGEtPmFwcGVuZChkYXRhKTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAog
ICAgIGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIz
ZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRh
OWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgpAQCAtNDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVy
dGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcg
KzExNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9Owog
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4
YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8u
aApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNl
ZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgs
NyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAg
IFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhl
NjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uZWQzMGU4NDlkZDgxODM4Zjhj
NzMzZjEzZGI2YzM3YzM3ODQ4ZjNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCkBAIC0zNywzMSArMzcsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBl
bmQoZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsK
IH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cit9CisKK1JlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcigpID0gZGVmYXVsdDsKKwogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5z
aXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3Np
emUocHJvdmlkZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7Ci0gICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKQEAgLTczLDI2ICs5NSwxMCBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFw
cGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZm
ZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZm
ZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZt
YXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFw
cGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0g
TWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwot
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdT
dWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQog
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMwICsxMDksMTYgQEAgc3RhdGlj
IFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNl
dCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92
ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2Ug
dGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9z
ZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGln
dW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVk
QnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1f
c2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNv
cHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1f
c2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9
KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRh
dGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
PmRhdGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNv
cHlEYXRhKCkgY29uc3QKQEAgLTIwMiwxMCArMTk0LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsg
ZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
ZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAg
ICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNT
RVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDE5ICsyMDUsMTkgQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rv
ci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwog
ICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQpAQCAtMjQzLDE3ICsyMzUsMTIgQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+
bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7
ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAg
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3Np
dGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21l
bnRzID0gbV9zZWdtZW50czsKQEAgLTM1MywxMiArMzQwLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3QKICAgICB9CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29u
c3QKLXsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYg
KytpdCA9PSBlbmQoKTsKLX0KLQogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIFNoYXJlZEJ1ZmZl
cjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewpAQCAtMzcyLDQxICszNTMsMTIgQEAg
Ym9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRp
ZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpkYXRhKCkgY29uc3QKLXsKLSAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNp
dG9yKAotICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAotI2lmIFVTRShDRikKLSAgICAgICAgW10o
Y29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR0xJ
QikKLSAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0
YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBj
b25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCi0jZW5kaWYKLSAgICAgICAg
W10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0s
Ci0gICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCog
eyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9Ci0gICAgKTsKLSAgICByZXR1cm4gc3RkOjp2aXNp
dCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwotfQotCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAotewotICAgIHJldHVybiBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0
YWJsZURhdGEpOwotfQotCiAjaWYgIVVTRShDRikKIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVt
b3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiB7
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07Ci19
Ci0KIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQpAQCAtNDU2LDcgKzQwOCwxMTgg
QEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhl
cikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+
JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9
IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChj
b250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNF
bXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYg
KGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5h
cHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJl
ZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250
aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5
VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVN
YXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5n
U3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURh
dGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlm
IChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICBy
ZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhf
dCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2Vn
bWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9z
ZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHsgeyBkYXRhKCksIHNpemUoKSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21l
bnQ6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEuc2hyaW5rVG9G
aXQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7Cit9CisKKyNpZiBVU0UoQ0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVh
dGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdM
SUIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RGF0YVNlZ21l
bnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRh
dGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOworfQorI2VuZGlmCisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0YVNlZ21lbnQ+
IERhdGFTZWdtZW50OjpjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitjb25z
dCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyNpZiBVU0Uo
Q0YpCisgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAorI2Vu
ZGlmCisjaWYgVVNFKEdMSUIpCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2VuZGlmCisjaWYg
VVNFKEdTVFJFQU1FUikKKyAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAor
I2VuZGlmCisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAgICk7CisgICAg
cmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30KKworYm9vbCBE
YXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1t
dXRhYmxlRGF0YSk7Cit9CisKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAg
ICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBA
IC00NzUsNyArNTM4LDY2IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXpl
KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJCdWlsZGVy
OjpTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorewor
ICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK1NoYXJlZEJ1ZmZlckJ1aWxkZXImIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6Om9wZXJhdG9yPShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAg
ICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisgICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGluaXRpYWxp
emUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworU2hh
cmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3I9KGNvbnN0IFNo
YXJlZEJ1ZmZlckJ1aWxkZXImIGJ1aWxkZXIpCit7CisgICAgbV9idWZmZXIgPSBidWlsZGVyID8g
YnVpbGRlci5jb3B5KCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IG51bGxwdHIgfTsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aW5pdGlhbGl6ZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAg
ICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZm
ZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgLy8gb25jZSBj
cmVhdGVkLgorICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGln
dW91cygpKSB7CisgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGFwcGVuZChidWZmZXIpOworfQorCitSZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKwor
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0Nv
bnRpZ3VvdXMoKQoreworICAgIHJldHVybiB0YWtlKCktPm1ha2VDb250aWd1b3VzKCk7Cit9CisK
K1JlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQXJyYXlCdWZm
ZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKG51bGxwdHIsIDApOworICAgIHJldHVybiB0YWtlKCktPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCk7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkK
K3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Cit9CisKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVu
dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShz
ZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2Vn
bWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBv
c2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ4OSwyNiArNjExLDE2IEBAIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYg
b3RoZXIsIHNpCiB7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6ZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEo
KSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2Vn
bWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVu
dD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRh
ID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0g
c2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyBy
ZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBi
dWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBz
aXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzY0Niw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQog
CiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRh
dGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZm
ZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2
OGFkLi5kMTBiMGU1NDlhOTlmYjI1ODYwMDI0ZjY4ZThmMDAxMTc4ZDNkMTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDYgKzI3LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC02MiwxNDYgKzYzLDEyNSBAQCBjbGFz
cyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1
ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0
YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBU
byBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQu
CitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2Vn
bWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1
aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBj
b25zdDsKIAotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFll
cyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
PSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAotI2lmIFVTRShGT1VO
REFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAg
IFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5T
RGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBj
cmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4m
Jik7CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4mJik7CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiYpOwogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1
c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBp
ZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2lu
ZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2Fs
bCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24g
aWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29u
c3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5
aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBT
aGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RE
YXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJh
eUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAot
ICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRv
IGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0g
ICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9u
PGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXpl
OworICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZv
aWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUHJvdmlkZXImJik7CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUg
YSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRp
ZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7Ci0gICAgICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zTWFwcGVkRmls
ZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotCi0gICAgICAgIHN0cnVjdCBQ
cm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwot
ICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQot
Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OworICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNlbmRpZgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0gICAg
ICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxW
ZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNp
ZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBE
YXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHBy
b3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikp
IHsgfQorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRh
Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXpl
KTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKLSAgICAgICAgc3RkOjp2YXJp
YW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOwor
I2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFS
ZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVz
PiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdC
eXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRy
PEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+
IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAg
ICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1
dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBp
cyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50
OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQg
Y29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0OworCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAg
Ym9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KKworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKIAotICAg
IHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJD
b3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4g
dXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50
VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSAr
MTkwLDE1NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8
RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAg
ICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAg
ICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9
PSAxOyB9CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2Vz
IE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNp
emVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0
YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0
b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmlu
ZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Owog
Ci0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwogICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAh
b3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90
KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNv
bnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250
aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOwor
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsgYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5k
aWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlm
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVk
T3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07
CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OworcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogCi0gICAgLy8g
Q29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQg
dmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCisgICAg
Ly8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRo
YXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRW
ZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25z
dDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9Owot
ICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQg
eyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRp
ZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRo
YXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBh
bmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1Ymxp
YyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigp
KTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAg
ICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4p
KQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNo
YXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOyB9CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVy
KCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5v
LCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
OjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisK
KyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRp
ZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVh
dGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JU
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyKCkgPSBkZWZhdWx0OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoU2hhcmVkQnVmZmVy
QnVpbGRlciYmKSA9IGRlZmF1bHQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihjb25zdCBTaGFy
ZWRCdWZmZXJCdWlsZGVyJiBidWlsZGVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1aWxkZXIgPyBi
dWlsZGVyLmNvcHkoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgbnVsbHB0ciB9KSB7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikpOyB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKHN0
ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oU2hhcmVkQnVmZmVyQnVpbGRlciYmKSA9IGRl
ZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0b3I9
KGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorCisg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXpl
KCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAg
ICB2b2lkIGVtcHR5KCkgeyBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CisKK3ByaXZh
dGU6CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5zdXJlQnVmZmVyKCk7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2
NiwyMyArMzQ4LDI0IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlEYXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNpemVf
dCBzaXplKCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUg
PSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQ7IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
I2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3Nl
Z21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNv
bnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZm
ZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0
Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uM2Y3ZmJhNDFhNGExZWZiMTFjY2RmZmQ1NzI2Nzhj
ZGZmZTUzZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFz
dGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21E
YXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJk
Ojp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
Cit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0
YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1v
dmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmlu
ZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmEwMzljMjUyNWVk
NWZlNjM1MGNjYjBhMWFhMzY1MGQzMTk4NmY2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewog
cHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJ
bkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVT
dHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAg
IHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xl
YXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUy
YTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8u
Z2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50
VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5v
d1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29y
ayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtE
YXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZv
LmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5m
by5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQw
NGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5
MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjpl
bmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewog
ICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFy
eUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2
Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3
IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkx
Li40N2MxMGY5ODAyMzRjOWFiYzYwODRlYzIxMDQ1NmY2YjE1NDgxOTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zNSwyMyArMzUsMjAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRh
dGFSZWYgZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRh
dGEpOwogfQogCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVm
ZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2Ug
dGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1S
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEo
KSBjb25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhh
c09uZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJl
dGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURh
dGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JF
YWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRl
cyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7
Ci0gICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVs
bHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OSw2IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAg
ICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBj
Y2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4
ZjA2N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
c3RlYm9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFz
dGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9S
TShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRC
dWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZm
QnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEg
PSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9w
ZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQog
I2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpy
ZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNl
Y3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29u
c3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0
YWJmMTgzOGE5Yjg1MC4uOTgwNTQ3YjhjYzRjNGE4OGNhMTU1Y2JiMTc4MjBhZjg1ZTJkYzk2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29j
b2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29h
Lmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlv
biBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2Vn
bWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihO
U1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVn
ZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBA
IC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6
KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNv
bnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdl
cilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk1LDI3ICs5NSwyNiBAQCBSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCiAKIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250
aWd1b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0
YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWlu
UHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25z
dAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5z
aXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxs
cHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVy
biBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CkBAIC0xMjYsNyArMTI1LDcgQEAgUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRy
PE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2Vn
bWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRl
eCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4
ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRo
ZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYg
YW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVl
ID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTky
MWZjYzBmZWQyZWQuLjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNl
bmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEu
c2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICBy
ZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVk
IGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMTk2LDcgKzE5Nyw3IEBAIHN0YXRpYyBi
b29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7
CiAKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBr
ZXlJZENvdW50ID0ga2V5SWRzTWFwLmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBD
RU5DIGluaXREYXRhLgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJl
dHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byog
ZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0
RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQs
MTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21D
ZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAg
ICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQog
ewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0
RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHko
KSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgp
OwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8g
a2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBA
QCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9i
amVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAg
ICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRo
ZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhl
IGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlk
c0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNl
dEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRh
dGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOwor
ICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFj
dG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAy
ZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1
NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBL
ZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVu
ZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpm
aW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigp
LCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41
ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBl
bmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2
ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsx
MzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0
YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVy
R2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3Zhcmlh
bnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRy
PEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWls
ZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19i
eXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQo
KSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRh
LmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQo
KSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRh
LmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1NjQyYmNmNjcwY2Uy
NTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0
MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVy
R2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZp
bmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVz
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2
b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4
YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3ZGFlZjk2ODljYTdl
ZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigpOwog
ICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2Zy
ZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0
aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0
PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA0ZTk0
OWRmYWI5NzY1YTJhMDdjNDg3OGFiZWUxMDNmYmFmMjFmNTcwLi4xMjU4NjJlNzJhOWY5ZDg2OTZj
ZTE2Y2FjZmY2YmY3MjA3YjQ1Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcApAQCAtNjMsNyArNjMsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3Rp
dGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllcikpOwogfQog
Ci1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRh
LCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYykKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBm
bG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykK
IHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRG
b250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBp
bmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDc0NDIwMDRm
MDBiNWRiYTI3ZjNjMzJlNjY3YjM2YmNjZjc4NTE0Y2QuLjRjNWM4YTM5NjMzYTA2NDc4OThiNTJh
Mzk0NTI1ZmIxYWZiMTJlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVmlzaWJpbGl0eSA6
IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNsYXNzIE9yaWVudGF0aW9u
RmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46
OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5ID0gVmlz
aWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJh
Y2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6
Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRT
aXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIx
NGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRl
ZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkp
LgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0Owog
CiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZv
bnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNl
RGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lO
KQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKaW5k
ZXggMmNmNDQ4YmVhMmZhNmFlNGQ0N2Y5NjQwMDJiM2E5MDZjMDEyOTA2Ny4uNjc1ZTI0YjQwYWM3
YWFkZTc0MDg2ZjI0MmVhZDAxNTIyMWMwMjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgU3Ry
aW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogICAgICAgICAsIGhleChwYXJhbWV0ZXJzLmxldmVsSURDLCAyKSk7CiB9CiAK
LXN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlv
blJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QVZDUGFy
YW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSVNPL0lFQyAxNDQ5Ni0xMDoyMDE0
CiAgICAgLy8gNy4zLjIuMS4xIFNlcXVlbmNlIHBhcmFtZXRlciBzZXQgZGF0YSBzeW50YXgKQEAg
LTI1NSw3ICsyNTUsNyBAQCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhj
b25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgLCBjb21wYXRpYmlsaXR5
RmxhZ3MudG9TdHJpbmcoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBh
cnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYgY29kZWNDb2Rl
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRl
cnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYgY29k
ZWNDb2RlLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
SVNPL0lFQyAxNDQ5Ni0xNToyMDE0CiAgICAgLy8gOC4zLjMuMSBIRVZDIGRlY29kZXIgY29uZmln
dXJhdGlvbiByZWNvcmQKQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJh
bWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCiAg
ICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+
IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNv
bmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlIERvVmkgQ29uZmlndXJhdGlvbiBSZWNvcmQgaXMg
Y29udGFpbmVkIGluICJEb2xieSBWaXNpb24gU3RyZWFtcyBXaXRoaW4KICAgICAvLyB0aGUgSVNP
IEJhc2UgTWVkaWEgRmlsZSBGb3JtYXQsIFZlcnNpb24gMi4wIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCmluZGV4IGFmNzVjNjJkMTE1ODBh
ZDAzOGQ3MTdiZTk0YjMzMWQzOWRkZGEyN2EuLmVkZmVjYjI2ZDg5NDY3YTIzZDFmNTcxY2JjNWU5
MWIyZmEzNDc4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmgKQEAgLTMxLDggKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvdXJDQzsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IEFWQ1BhcmFtZXRlcnMgewogICAgIHVpbnQ4X3QgcHJvZmls
ZUlEQyB7IDAgfTsKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IEFWQ1BhcmFtZXRlcnMgewogfTsK
IAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0ZXJzPiBwYXJzZUFWQ0Nv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVy
cz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlQVZDQ29kZWNQYXJhbWV0
ZXJzU3RyaW5nKGNvbnN0IEFWQ1BhcmFtZXRlcnMmKTsKIAogc3RydWN0IEhFVkNQYXJhbWV0ZXJz
IHsKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IEhFVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFy
YW1ldGVycyhTdHJpbmdWaWV3KTsKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1Bh
cmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJD
QyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxI
RVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3Qg
Rm91ckNDJiwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRl
cnMmKTsKIAogc3RydWN0IERvVmlQYXJhbWV0ZXJzIHsKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0
IERvVmlQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9W
aVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKLVdFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJD
b25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRp
b25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGNyZWF0ZURvVmlDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgRG9WaVBhcmFtZXRl
cnMmKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmlu
ZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUy
OWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
LCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJs
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1v
dmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1
cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92
ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0
NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAg
ICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVU
eXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAg
IApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxp
Y2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9
OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29k
ZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJl
dHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNv
bnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFk
YzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNw
cApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJl
ID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFT
U0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZl
ci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0
aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwg
dWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFk
VUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZh
bHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhv
ZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAt
IG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdy
aXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3Rh
dGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicg
Ki8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAg
ICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9Owog
I2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0
b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJH
KHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVy
dFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAg
ICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9v
bCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShi
dWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZl
cnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVm
ZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRk
ZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBA
IC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRo
ZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYp
OworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZh
bHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252
ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2Yg
bWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxv
YWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYs
IFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRo
ZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhh
cyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2Zu
dC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29u
dmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJv
b2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwor
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5
Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAi
eyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNp
emUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkp
IH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAg
ICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0
aWxpdGllcy5jcHAKaW5kZXggMTYxMWJhYWM0MzcwYjVmYzk4YTI5MjA3NzIzNWQ0NWUwMmI1ZDBi
YS4uZmM5YWE5OWE2OWRmYWU4OWU2NWIyYWIzYWY0ODkxNDA3Njg1ZmRiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2Ny
aXB0aW9uVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCkBAIC0xMDYsNyAr
MTA2LDcgQEAgU3RyaW5nIGNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgICAgICBhdXRvIHNhbXBsZUV4dGVu
c2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHNhbXBs
ZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiYXZjQyIpKSk7CiAgICAgICAgICAgICBpZiAoIXNhbXBs
ZUV4dGVuc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMxIjsKLSAgICAgICAgICAg
IGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNh
bXBsZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOwog
ICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlv
blJlY29yZChjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFy
YW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImF2YzEiOwpAQCAtMTIyLDcgKzEyMiw3
IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9u
UmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRl
bnNpb25zRGljdCwgQ0ZTVFIoImh2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRl
bnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSI7Ci0gICAgICAgICAgICBhdXRv
IGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVF
eHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAg
ICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKGtDTVZpZGVvQ29kZWNUeXBlX0hFVkMsIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwog
ICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiAiaHZj
MSI7CkBAIC0xMzcsNyArMTM3LDcgQEAgU3RyaW5nIGNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9u
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgICAgICBh
dXRvIHNhbXBsZUV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHNhbXBsZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiZHZjQyIpKSk7CiAgICAgICAg
ICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJkdmgx
IjsKLSAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBjb25maWd1
cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBs
ZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VEb1ZpRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAg
ICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJkdmgxIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEw
ZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVm
UHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNv
bnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAg
U3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkg
fTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpw
YXJzZUpTT04oanNvbik7CiB9CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAg
IGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFt
ZSgpKQotICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRl
bnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFU
QSkKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05h
bWUoKSkgewotICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhp
bml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3Ry
aW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtO
U0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJp
bmcqKXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9y
Om5pbF07CiAgICAgfQogI2VuZGlmCkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1f
ZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRh
dGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BB
TDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAg
IGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVk
ZWQpOwogICAgICAgICByZXR1cm47CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAg
ICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZD
b250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0
cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
XTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQ
QUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRo
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3Npbmcg
cmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5m
aXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAg
IFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAog
ICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNr
IGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNz
IGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtl
eXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0
QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dp
dGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJM
OnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXli
YWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVj
dG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRh
IGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vz
c2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VE
aXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7
CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNh
dGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChy
ZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNy
ZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0g
a2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0
cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRh
Rm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50
aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNF
cnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3Ip
LCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRh
KV0gewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAg
IHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBm
aW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsK
QEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAg
ICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8m
IGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0g
cmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7Cisg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5n
KGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhw
YXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAg
cmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0x
MjEyLDcgKzEyMTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1
dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAg
ICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJz
dCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFr
ZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgp
IGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNv
bXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNE
YXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3Zl
KGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtl
eVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVu
ZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
OwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmlj
YXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1f
Y3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50
SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFr
ZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgp
IGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNv
bXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNE
YXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0g
cmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0
NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZl
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpA
QCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRl
cihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24o
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2Fk
ZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAg
ICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9h
ZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxf
cXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0
IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25I
YW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02
NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2Rl
ckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRh
UmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxs
RGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IDFhNDNjN2RlZDI3NmUyYzNlNWY2ZjQzYTM4
ZjA1MTEyNzIwNmQwYTMuLmFiZDgxZTVmM2MxZWE1MGU0MjJlMmZhM2MyYmExZDE4Y2ZlMzFhZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRh
ID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFy
c2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkK
ICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFn
czpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApp
bmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5Mzdk
Zjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxv
YWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
bV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBt
X2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0
N2YwLi5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0x
NjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
bV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywxMSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJj
ZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQo
KSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0yMjgsNyArMjI1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFy
ZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNl
TWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVz
dC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAg
ICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0
LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsK
QEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZp
bmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwog
ICAgIGlmICghZGF0YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXgg
ZGI0NTdhODFkM2VlODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2
MTMxN2MwZDExNmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aApAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1
Yzk5YTdmNjhiNTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0y
MzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJl
Y3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZv
aWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwor
ICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VE
ZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
bwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5z
aXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRU
eXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikp
OworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRh
KGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBr
ZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2
IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNo
YXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVk
QnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5
IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmlu
ZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwg
ZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdl
U291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAg
IC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAg
ICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1
b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRo
ZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2lu
dGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3
YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdv
bid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdl
dEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tz
IHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9z
aXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3Qo
JmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJD
cmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJD
YWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZl
RGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYz
MTI4NDIxMjRlNmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdl
OjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVh
dGVQREZEb2N1bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCkt
PmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVm
PiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShk
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9k
b2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJv
dmlkZXIuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1
NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYz
OTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
QEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwo
bV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3
NWVkODJiN2I0YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0
MGY5OWZmOGM1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3
LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2
b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIg
PSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOwor
ICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVm
Y29uKTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3
MWYzOTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEs
MTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmpl
Y3RGb3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlD
aGVjayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0
Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9P
cHRpb25zKSkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXgg
NTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4
NWEzNDM4NjE5ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJv
b2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICgh
bGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJm
NWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEy
NDYwMWQ1YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxl
Q2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFj
ZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJv
RnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZh
Y2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJs
ZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFF
TkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggY2Rl
ZDRhNjBiNTBiYmJhZWE1Yjg0NWJkZWZiYjY4NmZlMjUyNTkzMy4uYjc0OWZjMTU4ZGZhYmVmZDNi
ZDhjNDU0OThiYTBhNWIyOTNiZjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAg
LTQyNCw5ICs0MjQsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVW
ZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQor
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVT
aGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAK
IGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uaAppbmRleCBkODJjZDNlMThlY2UwNDc2MWQ2YWQ0ZWMyZDUyZTJhZDlk
YzM4NDY4Li4yYjYwNTkyMzliYjdmMGQ4ZmJlNDU2MDI2ZTU4MmEzZmM2ZjA5YzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQg
bWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRC
dWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2Nh
OGE1MDY5Li4yOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVu
Y29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNv
ZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNo
RW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxz
ZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFt
ZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7
CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
IiwgW3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIu
c2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5u
ZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGNiYjQ5ZDE3
MzYyZjcxMmQyNWRmZTgyNGRmYzFjMzgxYTVkYTAyOTMuLjNhMjAxNTc4MDE0ODgxMGFjZTU0ZGY3
YjA4ZTRkZjdmZDUyMzdkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC0zNjY5LDcgKzM2NjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBp
bml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWlu
ZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+
c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRh
LnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAg
ICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0
RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdm
N2MwMWI5YzMuLmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVz
ZXJEYXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBz
c2g7CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29u
dGV4dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2No
YXIqKiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBz
dGF0aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciog
dGV4dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkg
ewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERl
Y29kZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0g
ICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkg
QEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvcios
IGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBT
dGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJv
dWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNl
ZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAg
ICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMzMw
YmUyMTNjN2ZlZmVkYjJmNzg4YjVjMWVjNDQxYWY3MTk0OWQ0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01MCwxMyArNTAsMTcgQEAgcHVibGljOgog
ICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0
aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNh
bm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3Bh
eWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRC
dWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lm
TmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAg
ICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
fQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAg
ICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAg
eworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5
bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisg
ICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25O
dWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBp
bml0RGF0YSkKQEAgLTcyLDEwICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90
IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBp
bml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0
YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2Fk
KCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBh
eWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArOTAsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQo
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0
ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3
MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBl
MjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3Jt
RGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZh
cmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRh
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1
ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBs
YXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQ
T1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9F
WFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZl
YTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMy
MmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BE
RkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkK
IHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3Vt
ZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9p
ZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzcz
MGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0
YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJl
Y29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9u
Q291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWND
b3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QK
KyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyAr
OTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0Nv
cnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3
IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdz
RXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5
UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERh
dGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhH
bHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYg
YWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8v
IFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAg
dm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxH
bHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50
XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRh
YmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNv
cmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3Nl
bWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1h
dGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3Qg
R2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1i
bHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlh
bnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRh
bEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25z
T2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBo
IGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhD
b25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29s
IGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRo
R2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBH
bHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMy
X3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpv
bnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEds
eXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVj
dCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBo
SW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAot
ICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zm
c2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZv
KiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBA
QCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFy
aWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBp
ZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3
N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5
NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBj
bGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0
YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVN
YXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVf
TUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVa
WikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZh
Li4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVm
IHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAo
KCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAo
KCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFi
dWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0
dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29u
c3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0
IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVy
LmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIg
YmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBU
KiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAg
IGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlk
YXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSAr
IG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJs
ZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRh
YmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENv
dmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFi
bGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0
CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50
MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJh
Z2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3Jt
YXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAw
OTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3
ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTks
NyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250
TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZv
bnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRo
ZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9y
IDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZv
bnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRl
bkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3Jp
dHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEu
c2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJv
b2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcm
IGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFs
bCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRh
LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQorUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVu
YW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRh
LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0
ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdy
aXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1
OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhh
MjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9u
dE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBw
cml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBy
ZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50
OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250
KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhf
dD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4
IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1
NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUg
OiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUq
IGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAg
IGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4o
YnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRp
b24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAg
c3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1
YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdT
ZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMg
ZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0x
OTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZz
ZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUq
IGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsK
ICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1
cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxl
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9w
ZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1
YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5
cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0
R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5
cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0y
MjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAg
T3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpU
YWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50
IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5
LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6
VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVh
dHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZf
dCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxp
ZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0
YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQx
NiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3Bl
blR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVh
dHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJl
cywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBz
dHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0
IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExh
bmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBj
b3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxh
bmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExp
c3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsK
ICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5U
eXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0
c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUq
IGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRD
b3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRz
W2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJh
c2UgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwg
c2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJs
ZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSog
c2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0
VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBl
OjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlw
dExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25z
dCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVM
aXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExp
c3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBz
Y3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0
KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1
cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExp
c3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RP
ZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVm
YXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBH
U1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExh
bmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUo
T3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJl
VGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZm
ZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChi
dWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgICAgICByZXR1cm4gZmVhdHVyZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2Fs
R2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0
dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUq
IHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcs
IGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyAr
MzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxv
YWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8
dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVh
VGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZh
bGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJz
dC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2Fs
IGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5U
eXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6
VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0
byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7
CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0
ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAg
ICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhN
YXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4
NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4
MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
QEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkK
ICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikK
IHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1
dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQy
NjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRl
ZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsK
IHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250
VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0
YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1
NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0
NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAg
ICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7
CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRv
IGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1
Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2
ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4
LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1f
dXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFk
MGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURh
dGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6
OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29s
IGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmRE
QyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQo
KSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBH
ZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0K
IAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYy
ZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4
ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNt
YXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAg
IGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7
IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1
c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1f
Y3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAg
ICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQog
ICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAK
QEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1l
czsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFj
ZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZm
OGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3
NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEw
ICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
IChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29t
YmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25l
LgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsK
LSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGln
dW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAg
IG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAg
ICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVB
dmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVl
OwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhk
ZjE3YWJmMzA1Yy4uMWM4NzFmNGQ1NjQ5MWJmNzc1ZTg1MDBjMTZkMGJiODk0ZDU0ZTZkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGlj
IGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAg
JiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVn
X3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFy
a2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGlu
Zm8pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJr
ZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0
YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJT
aXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQor
ICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CiB9
CiAjZW5kaWYKIApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVj
b2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExD
TVMpCi12b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVy
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdm
YTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4
M2ZkZThmODcxMmI3MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02
OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVu
dGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9y
aWVudGF0aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIy
YTM2ZjU4Y2MwZTcyYWY4NzY1NWViYWU2Y2E1ZDRiOTc4Yy4uYTdmNDUwMzIwZTkwOGM2YTFmNWYw
Zjg5NTYwOTJhZTI0Nzk1YTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KQEAgLTI0MCwxNCArMjQwLDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0
eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRd
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAg
aWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBS
ZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0
dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJl
YWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAo
W3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBl
UlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VD
b3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6
UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYm
IHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRl
clJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTUsNyArMjU1LDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hh
bmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRX
YXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVh
ZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6
OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOWRiMGFiMzRiMjYxOGEwNDAyYjBkMjQzZGM4
NzA3YTM2NzgyM2RlMy4uZDlmNDhlZDFiMzQwNWQyZGVhOTc3OGMzYTZjNTcyYmM1MzJmYjkzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Omdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykgY29uc3QKICAgICB0eXBlcyA9IG1ha2VWZWN0
b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAg
ICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBl
OnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFz
dGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQogICAgIHJldHVybiAwOwog
fQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgcmV0dXJuIDA7CiB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNT
RVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXpl
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAog
ICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3
ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNE
YXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxw
dHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApA
QCAtNTIxLDcgKzUyMSw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICAgICAgaWYgKCFpc0RlY2xhcmVk
VVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21N
SU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGlt
YWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwog
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWRO
YW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogI2VuZGlm
IC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEK
IAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBk
YXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkp
OworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEp
LmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02NzIsNyArNjcyLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
Pih2YWx1ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pih2YWx1ZSk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAq
KWNvY29hVHlwZV07CiAgICAgfSk7CiAKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5n
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWluZGV4KQogICAg
ICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTc2MSw3ICs3NjEsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluZGV4LAogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRdKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
W3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwog
fQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQppbmRleCAyMTZlZGQ4NDc1ZTE0ODhkYjllYTYxMGYxMjNiYWE4MTll
NmIzMWZjLi5hMTUxNmFlMzRmODI5YmE3MmNhNTYxZDk1ZTRmYzk3OGI5NTJkMzhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1
MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0
aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0
ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFz
ZSgpOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJB
c1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmluCiAgICAg
aWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV3Q2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOworICAgIG5ld0NoYW5nZUNvdW50
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJG
b3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZERGF0YSkucHRyKCksIGxl
Z2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAK
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJk
SW1hZ2UpCkBAIC0yODUsNyArMjg1LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgfQogCiAgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXModHlwZXMs
IG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwsIGNvbnRleHQoKSk7Ci0gICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEpLnB0cigp
LCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBpZiAoYXV0byBhcmNoaXZlRGF0YSA9IHBhc3RlYm9h
cmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZv
clR5cGUoYXJjaGl2ZURhdGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOwogCkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIFN0cmluZyBy
ZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJl
ZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
aWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0z
NzYsNyArMzc2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
IHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAg
ICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lS
VEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAg
dGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0
ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXgg
YTdmZTcyNTU0Mzc2NjVlOGI4YTBjNzQ1M2QzMDQ3NDlkNDU2MmY2Ny4uYjQ5YWQ3YzA0YTUyODE4
MmE1MWI4YTNhOTg0ZDdkOTA0ZDYzOTc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykg
Y29uc3QKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVz
XSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAogewogICAgIE5TRGF0YSAqZGF0YSA9IFtt
X3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBs
YXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRv
bVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9
IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSku
Z2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3Rv
bURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAg
ICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjMsOCArMjYzLDgg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0
b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1UeXBlLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
LT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1U
eXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
c3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0
cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIGludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVOU0FycmF5
KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBh
c3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3Rh
dGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3Rl
Ym9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICghaW5k
ZXgpCiAgICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpAQCAtNDU3LDcgKzQ1Nyw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0
ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRh
dGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0
KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0
YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDcsOCArNTA3LDgg
QEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRl
bShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAg
ICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVd
OwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJp
bmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5n
PihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4
MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBA
IC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4g
bV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNj
cmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMx
M2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3
ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3Jp
dGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQg
bm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNs
b3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVy
RGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEg
PSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
dWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAg
ICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBt
X2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVy
biBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCmluZGV4IDBjOTA4MTdjNGU5YjQxZjM0OWE0MWFlNjRiNzE5MDZiOTUx
ZWI4OWEuLjYyMzY0ZDcxM2M5NWE5Zjg0M2M3ZDI5YzAxZjBkZWI5YWU2ZDE3NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTIsMTMgKzQx
MiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0
dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRh
Ojphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Rm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxW
ZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQog
CiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZTlkMzQ0M2Y4YjVjNjgyNDQ2NjU2YzE4ODA1NjU3
Y2MyOWQyZDgzNy4uMTA4MjgxMTMxZjgzZTk5MzcwZmM1MDk3ODMzY2M1MGVlOGFkYmRhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3Mg
RE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgc3Ry
dWN0IEVuY29kZWRGaWxlRGF0YTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9l
bGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJl
dHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9v
bCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZv
aWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0g
YWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFl
YTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0
NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxl
Q2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAg
ICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IGY3MDAz
NTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5MjUzNjk0YWEuLjg4ZGVkZmE0NWMzZjRjNDNhMzgx
NTI4MGRhNWE0MWUyNjk3NWI3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAgICAgIAog
ICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoaGFuZGxlPSVwKSAo
JXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIo
aGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgp
OworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7
CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQw
Ni4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNw
b25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJl
c291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZm
ZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhf
dCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENv
bXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRo
ZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tE
YXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAg
ZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9
IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAg
LTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFz
ayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJh
bmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBE
YXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZm
ZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsK
IAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdl
IHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3Vj
aCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhh
cyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0
aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5z
aXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJu
OwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRv
KiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNr
ID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0
YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0
ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0
YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0
YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAg
ICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5k
ZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisg
ICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRh
KGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJ
bmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEo
Y29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0
dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBl
eHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byog
ZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAo
IWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmlu
aXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4
IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYx
MmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAg
LTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAg
IFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5Q
dHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRh
ID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCku
Y291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNl
c3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVs
ZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtk
YXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFU
YXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEz
ZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmVi
NmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3
ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAg
ICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2
ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQog
fQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2Vl
bXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAg
ICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZm
ZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEz
ICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAK
ICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFs
TWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERp
ZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFy
dGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRp
YWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQ
YXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlh
bE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBs
YXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCks
IGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3Rh
cnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRC
b3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4
NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFU
b0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9
CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3du
bG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVl
c3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVk
ZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNo
YXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hh
bmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkp
OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRs
ZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIp
LCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6
OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJp
Y3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZm
ZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKaW5kZXggMGZiNDUwMDcyZmExMDQyMmY2YTlmZTQzMmMzODFkM2QxOTYxM2U2MC4u
M2NhMjA4MjJjMDMxOGE1NDkxMTE4Njc1ZDI3Yjg3OGRkMTgzZmU5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtMzQs
NyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAg
aWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3
ICs2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFk
ICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCmluZGV4IDczNjVmMDEwOTQ0YTkyNmIwZWJjYTk5NmJkZGFlMTQ0OTUwZjYzZTMuLmY0
OTg2YjAwMTA4YjE3OGY2NDdlNzZlNzM0Y2EyYzNmNzNjMDc0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBT
dHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmls
ZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyAr
K2NvdW50OyB9Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAg
fTsKIH07CkBAIC05NzgsOCArOTc4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRl
bnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkK
KyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBA
IC0xMDMwLDggKzEwMzAsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBX
cml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsK
ICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRh
dGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0
ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsK
KyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRl
ZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVt
cEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVm
ZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIz
Li4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZp
bGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0Rmls
ZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9y
KCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVz
UmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5
dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0g
ICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAl
dSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIz
NTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBm
YmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVND
SUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0g
cmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNl
LmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSku
c3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZh
bGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3
Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3Ry
aW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBT
dHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2Nl
ZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNl
VHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Bv
bnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNw
bGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVz
cG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQo
JyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQt
Zm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRh
MTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIy
YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0g
ICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
IH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEz
IEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0
QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZm
ZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0
KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwx
MyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0
QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+
YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBt
X2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdl
dCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZv
aWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYg
KCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgp
LCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZl
ciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdm
MWE0ODdmOGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRC
dWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVy
ID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQor
ICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZm
ZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVs
bHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFt
X2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8
fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWlu
c1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
U3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9
OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVm
ZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKaW5kZXggNDMzZDllMWE0NWMyOTg4NTQyYjA1ZTc0YjQ3MTdhNzcwNTcyOGJiNi4uMmE3
MTI1NDcxOGVhZWRmNTFhNDQ3ZWNlNjJjNGNkNzE2YmIwNzVkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMzQsNyArMzQsNiBA
QAogI2luY2x1ZGUgIkZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCi0jaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIK
QEAgLTc4LDkgKzc3LDEzIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1
ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAo
IW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9h
ZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0g
ICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgICAg
IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChj
b250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShjb250aWd1b3Vz
RGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlm
aWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSkKICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9
CkBAIC0xMTcsMTAgKzEyMCw3IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9l
cnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAg
ICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQotICAgIG1fZGF0YS0+YXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CiB9CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFl
ODYzYzcuLmRhYjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgpAQCAtMzYsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVj
dCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAg
IEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRy
IH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4
IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRh
NzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApA
QCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50
PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5
ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0g
KFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZv
cm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6
bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFj
NjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgw
MmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZm
ZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2Fi
bGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZp
bGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlBy
aXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpO
byk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IGUwY2RjNzIzNGM1NGExM2RmNzBhNjgwNWMyODFiOTQ4MDU0NWFlMjYu
LjliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUzZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJTdHJpbmdBZGFwdG9ycy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC0yMDgsNyArMjA3LDcgQEAgUmVmPEJs
b2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogICAgIC8vIEZJWE1FOiBX
ZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2Vu
ZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0
ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0
YSgpOworICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZSgpLT5leHRy
YWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsg
Ly8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5j
b3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDkgKzIx
Nyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6
OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBh
dXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxw
dHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIHJldHVybiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlQXNBcnJh
eUJ1ZmZlcigpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2V0VGlt
ZW91dCh1bnNpZ25lZCB0aW1lb3V0KQpAQCAtNzQxLDcgKzczOCw3IEBAIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBT
dHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VE
b2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRy
OworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNh
Y2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDkgKzEwNjIsNyBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQog
ICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwg
bGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAg
ICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOworICAgICAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3Ip
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMDQ4NDYyNmIyZTVkZmRkYTdj
YjE2YzRmNTUyMmRlZjg0YzRhYzE4Ni4uMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJk
ODAzNzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUlu
ZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQ1LDcgKzQ2LDYgQEAgY2xhc3Mg
QmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7
CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3
LDcgKzIzNyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VE
b2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkw
ZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEy
Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1s
Q2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAg
IGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUo
KSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRi
MjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAg
LTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQog
ICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUy
ZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVt
bwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBw
b2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUw
Y2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3Mi4uMGI5ZjQ5ZDM2NGMyNTk1ZTIy
M2IzMTE0ZGVhZmNlZTkyYTQwMGZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBz
dGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVm
ZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNl
QnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBy
ZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtM
b2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApA
QCAtMzA2LDEwICszMDYsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29u
c3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8
fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YS5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkK
LSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5lbXB0eSgpOwogICAgIH0K
IAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpA
QCAtNzM0LDE2ICs3MzQsMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgJiYg
bV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9u
Zz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAg
ICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAg
ICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1
ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmlu
Z1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAg
ICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVz
cG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxk
IHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBt
X3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEucmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNl
LmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRy
OworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBpZiAobV9j
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVk
ZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlm
aWVkCkBAIC04NjksMTAgKzg2OSwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdy
b3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMg
aW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0
KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIt
PnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2lu
UHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVm
ZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKLSAgICAgICAgbV9idWZm
ZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTkwOSwxMSArOTA5LDExIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAg
ICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEs
IG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZl
cmVkRGF0YS5nZXQoKS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7
CisgICAgICAgIGlmICghbV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6
ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsK
KyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7CiAgICAg
ICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlz
aFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU5LDEyICsx
MjU5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVk
KCkKICAgICBBU1NFUlQobV9idWZmZXJlZERhdGEpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2Fk
KTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZl
cmVkRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0s
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwog
ICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCkBAIC0xMjg5LDEy
ICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVF
bnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlT
dG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAg
ICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZm
ZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgp
LnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9y
ZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0Nh
Y2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNo
ZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RG
TW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1
dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJs
ZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJv
ZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li5j
NDIzNDY1MWJhOTI4Yjk1ZDhjNmY1N2JlMjVjNWYyMTE4OTg5ZjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIApAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5j
b2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXJlZERhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZl
cmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpA
QCAtMjQwLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZl
cmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7Cisg
ICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JW
YWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2Nh
Y2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250
aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4
IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4
OTljMWMwMmQwZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAg
ICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1
MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2Fs
bGJhY2smJik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+
OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KT47CiAgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmlu
ZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4Mjcz
ZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+
c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVy
LT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5k
ZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2
Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25z
dCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBi
b2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVm
PFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3Jl
IGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikgewog
ICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6
ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7
Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5y
ZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rv
cmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVj
b3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUz
NjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50
cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNv
ZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAg
IGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZm
ZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1f
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCks
IG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1l
U3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4u
ZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAo
bV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAg
ICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
ID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVk
ICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJl
dmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNv
bnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgp
IDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAg
IH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAo
bV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYm
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsK
ICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0
b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVC
eURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAz
NThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlm
NmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFG
b3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCmluZGV4IGU2N2UwNWJhODQ3OGE1ODE4MzBlMzk3MDY4YjMyZmIwOGQ5MWI3ZWQuLmU2
NWIyZWE4MzhiMDgxODNjOTZiODMxMjBiMWZlZjE1NmJiOGMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVh
ZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQog
CiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1
cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygp
OworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFk
b3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkp
KTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBm
ZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4yOWY3MWQ3ZTZkYzc1MGVmMTlmMzI4NjJjODli
NzE4NWUwM2JmODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBX
VEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4
MzJlOWYuLmU5Y2Q4NzJmOGQ0NGYxNWUwZWUzN2M3MzQ5MmIyZDgwMmFjOTA3MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTM5LDE4ICsz
OSwxOSBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZm
ZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZm
ZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAg
IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZm
ZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7
IH0KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
CmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4
ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVt
b3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVf
dCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRh
dGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRl
eCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVk
N2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhl
IHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBh
Z2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYg
T1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUw
YWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGlj
IHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0
IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgp
CiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2Ut
PmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEg
PSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0
YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZl
UmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIx
NTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01
NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250
RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8v
IFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIg
Y2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0
byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRG
YWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOwor
ICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1h
a2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNv
bGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRk
NjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJm
ZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBS
RUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwog
I2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkg
fSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2Nh
YTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1
NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcElu
U2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYg
PSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3Nl
bGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlX
cmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJl
c291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0
ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyArMzMs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIAog
cHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRN
ZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5
MmQ2NTMzNzRjLi5lOTNmZDg5ZTdlZmMwNzZhOWI5MTg3NzdiZDYwOGM4MzQ0Yjk0YWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5
MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlz
TnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZl
clNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5k
RGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFT
U0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7
CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rlciwg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRh
KQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNv
ZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlw
ZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29k
ZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwog
CiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAg
IH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwog
ICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRj
aE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3Qg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8
PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigp
KTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3
ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50
Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1
ZmZlcikKQEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAg
IGlmIChoYXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0
Zm9ybURhdGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0g
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRm
b3JtRGF0YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikK
LSAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVy
KGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1E
YXRhKS5wdHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5JiBkYXRhKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0
ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3
Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJu
IHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVy
biB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0g
fTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcg
KzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5n
ZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7
Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
cj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICBy
ZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVy
KTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYw
MWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2Iw
ZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFz
cyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFs
OwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2
MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1
ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4
OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+
IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21E
YXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAg
Ym9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dp
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIy
ZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFk
YTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250
UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9
IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURh
dGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRG
YWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYx
ZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQy
Y2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1l
bnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZm
ZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRl
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAt
MzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3Ry
aW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9o
YXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNs
b3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVu
dFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0
OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDY0NDkxZTE2MmVjNmM1YmNmYTNm
YzRjYjI0OWY4ZDljY2I2MzliMjEuLjFiOWI1NGI2MjcxODE0OTUwOGY5MDI3YzgzYzY3MzIwNmJh
ODI5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4gdm9p
ZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBG
dW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZv
aWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0
aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9p
ZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAg
ICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1
MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5
LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJu
ICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAg
ICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCAr
MTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0
ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0
YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0
dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJp
YWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsK
ICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDRjZmQwMjlhYzg0ODNhN2Mz
MjFiYTU0YjExODBjODZmYzRmZDc4YS4uM2U5MjNjZjY0OWQ5NmUzNGVkMmE1MWY5MTcwZDViMTc0
MWZhNjUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNjAwLDcgKzE2MDAsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDoo
Y29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0
LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0
byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRo
SGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6
dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0Fw
cEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5p
bF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6
d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJD
b3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5B
cHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0
UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKQEAgLTIyMjMsNyArMjIyMyw3IEBAIC0gKHZv
aWQpX3N0YXJ0SW1hZ2VBbmFseXNpczooTlNTdHJpbmcgKilpZGVudGlmaWVyCiAKIC0gKHZvaWQp
X3JlcXVlc3RSZXNvdXJjZTooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShOU0RhdGEgKiwgTlNVUkxSZXNwb25zZSAqLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7Ci0gICAgX3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CisgICAgX3BhZ2UtPnJl
cXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImJiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBuaWwpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihuaWwsIG5pbCwgZXJyb3IubnNFcnJvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJi
MjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJk
ZGYzYzIyZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJn
ZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBk
YXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0
b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZs
ZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9u
RGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+
c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3
MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcg
QEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8
aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZk
NmVkYmVhMmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1ZS4uYmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRj
ZDZjNzdiOGY2ZGE1ZjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAg
ICAgaWYgKG5vRXJyICE9IEF1ZGlvQ29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZy
ZWdpc3RyYXRpb25zKSB8fCAhcmVnaXN0cmF0aW9ucykKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgewog
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMo
eyByZWdpc3RyYXRpb25EYXRhIH0pLCAwKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9u
RGF0YSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRp
b25zLmdldCgpKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3Ry
YXRpb25EYXRhKSB9KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZTEwZGE2NmFiZjY0ODcy
ZjkxM2MxMzA1M2EyZWI3ZGI3YTdmYzJjLi4xMWNjNzUyOGExZTVmNmE4Njg0ZmNlMDY3ZTBhZGEw
NzQ2MmVlNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtMjk4Myw3ICsyOTgzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAg
ICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5
U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJp
bmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3Jl
OjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3Bh
Z2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsK
ICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQ0NzcsNyArNDQ3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNl
dFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZp
bGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1
cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsK
LSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAg
IFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECkBAIC00NTA4LDcgKzQ1MDgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZv
clBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgp
XSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAg
IGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERh
dGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwog
ICAgIH0KIApAQCAtNDU2MSw3ICs0NTYxLDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVz
T2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewot
ICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAg
fSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpO
U0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ2MTMsNyArNDYx
Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpE
T01QYXN0ZUFjY2Vzc0NhdGVnb3J5IHBhc3RlQWNjCiAgICAgaGlkZURPTVBhc3RlTWVudVdpdGhS
ZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7
CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbcGFzdGVib2FyZEZvckFjY2Vzc0NhdGVnb3J5KHBhc3Rl
QWNjZXNzQ2F0ZWdvcnkpIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmln
aW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0
ZWJvYXJkRGF0YShwYXN0ZWJvYXJkTmFtZUZvckFjY2Vzc0NhdGVnb3J5KHBhc3RlQWNjZXNzQ2F0
ZWdvcnkpKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3Bv
bnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmNDAwMGE2YjcxOTEz
NWMzNDNiNGNkMDljMDIzYTY4ZjJjNWU3ODVlLi5lYWY1ZWVhOTgyM2NjNGYyNTllYWQzZTA3ZDA5
MDgzMWQ5ZDNmOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMzNSwxMCArMzM1LDEwIEBAIERvd25s
b2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0
ZURhdGFTdG9yZSYgZGF0YVN0CiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRl
RG93bmxvYWRQcm94eShkYXRhU3RvcmUsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QsIGZy
YW1lSW5mbywgb3JpZ2luYXRpbmdQYWdlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UmVxdWVzdFJlc291cmNlKHBhZ2VJRCwgc2Vzc2lvbklELCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlKHJlcXVlc3QuaHR0cEJvZHkoKSkpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
IGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGVycm9yKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDg2ZjFiMzA0
NGZjODc5ZDA5M2ZlZTk2Y2VhNmViMTBhNTM4NzY2MzQuLjcwYjU3YjU0NDUzOTI2NTNiNDI2YWQ3
ODhmYjExMjI1Yjc5MmFkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIFNl
c3Npb25JRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBi
b29sOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CiAKICAgICBEb3du
bG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9j
ZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5m
b0RhdGEmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSk7Ci0gICAgdm9pZCByZXF1ZXN0
UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
Jik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxl
dGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMTk1
YzNjODIyMDg4YTc3YmI5ZGYxNjc4NTAxMGY0MTU2YzZjYzY2MS4uZWQ5ZDgzMzdmNDc0Zjc3OGVm
NzZiMTk0YzY5MjBhMTE4NGYyYTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aApAQCAtNDY5LDcgKzQ2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2lu
Z0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRv
TGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9v
bCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6
OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlm
aWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5
NmM5NTk1NWZhZWZhNzMwOWMxYTBjYTIwMmVlMmYxZGI2MWViNmM1Li4yYWNkOTEzNTBhZjUzZDY3
Zjc5YzMwNTJjYjJhMDJiNzFjMDA5MjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTYzODIsNyArNjM4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpkb3du
bG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlv
CiAgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0
d29ya1Byb2Nlc3MoKS5yZXF1ZXN0UmVzb3VyY2UoaWRlbnRpZmllcigpLCBzZXNzaW9uSUQoKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBkYTA0M2YwZGFhMjU1YzlhZWQzMDFh
MDA0NDAyYjZhMDI3NDYzMWRkLi5mNmM3YTljOWMwZDA0N2I4ZmE4OGUzNjRjMmYzZWE1Yzk1N2M5
M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1
OSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5M
b29wT2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpAQCAt
MTE4Myw3ICsxMTgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVj
dGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0
cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVU
ZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKQEAgLTEzNzUsNyArMTM3NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7CiAg
ICAgdm9pZCByZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0
IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYp
OwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7Ci0gICAgdm9pZCByZXF1
ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RS
ZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQg
YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAg
IHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3
ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZWQ4Y2I2NTNlY2ZkZDEzNDczZWUxZDJhZjUw
YmFhN2E2ZjdhMTAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKQEAgLTE4NywxMCArMTg3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAg
ICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAo
bV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZm
ZXIpOworICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNSwxNCArMjEyLDEx
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6
OldhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgbV9jb21wbGV0ZWQg
PSB0cnVlOwotICAgIAotICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBt
X3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCisgICAgaWYgKGlzU3lu
YygpKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS5zaXplKCk7CisgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLnRha2VBc0NvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jl
c3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxs
cHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJM
U2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBt
X3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkz
ZGQwYTQ3ZjJjMTMwODUyNjcuLmRkNmI3MjQxMGFkZDRlZjYzMWQyODA2OWUxNGEzZjJhMDBjNWNj
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTQz
LDcgKzQzLDYgQEAgY2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNCw3IEBAIHByaXZhdGU6
CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVy
OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAzYjA0YTgzM2Ri
ZTBiNmI2NmVlMTRkM2MzMDBmMzA2ODcxOGJmMmNmLi41YzhlM2I5MmYwODk5MmVmNGRhZDYyYjE3
N2E4MmYzMTYwOGJiYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaApAQCAtMTg4LDcgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50
KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlk
ZTsKICAgICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRv
TGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNW
aWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRl
U2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0
YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggZmFjOWU3ZmI3OGJlZTBmNjI5NDU2
NzJlM2JiNzRiOWUwNTIwZTMwZi4uYjY4NGUxYzk0ZWFjYjY3MjhiYjEzMDY4Y2I2OTUyMjcwMWZh
OGY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAg
W21fY29udGVudFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVy
PiYmIGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFp
blB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmls
LCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDEyZjNhMTVhNDNiOGFjNGQxNTFmZjMw
M2MzYzVmNzdkMTM1MzBjYmUuLjk5YWVkMDM2ODhlMGU1YzYxNzQ3OTBmZGRkOGQyNTBlOWFiNzBh
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzg0Miw3ICszODQyLDcgQEAgLSAoQk9PTCljYW5QZXJm
b3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAog
ICAgICAgICBOU0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRh
dGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBp
biBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAg
ICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAg
ICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY2NTAsNyArNjY1MCw3IEBA
IHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmln
aW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03
NjIzLDcgKzc2MjMsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNo
ZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6
OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFt
ZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJf
VUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVh
dGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNo
YXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5m
aWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hv
d1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGlu
Z1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRl
eCBkZDgyOTUzYjkwZjRmMTNiZGI4Y2E3NmM0MjhkMGMwNzJjMGM1ZGI5Li43YThmYWNkMzE3YTA2
Mzk2ZDYzYjhkZWVjNjU3MWU1NTEzZWM0OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2Vi
UGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCmluZGV4IGU0NDI3ZTJjMjBkZjFlYWNhYTQxZDAyMzU3ZTg3ZmIzYWVjMTcwZWUu
LmNhNmI4NzNiMWM4M2Y1YTUwN2I4NWVhMGZmMzFjZWRhZGQxYWFiMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3
IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJj
MTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBj
bGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwog
c3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRl
VG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBk
ODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVh
MDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcg
KzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1Bs
dWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9s
bGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFw
cGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9k
cy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlBy
b2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0
byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVi
b2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQo
KSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAg
ICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAg
ICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVu
ZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBl
XSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgz
OGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2Ns
aWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5k
bGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAg
ICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5
cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxl
bWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5i
eXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1
Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAt
NjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25z
dCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2Vs
ZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwog
ICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikg
ZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24s
IGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcx
ZTM0MTQ2OGMuLmEzNGUyMTJkMDdhZjJmZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVS
TFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hh
cmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJh
bGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExv
YWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25z
dCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3
Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFS
ZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBk
YXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYo
KTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0
IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUo
KSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBj
b250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVy
LT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwog
ICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0
b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSks
IHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJp
bmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhl
MWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYz
Mjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBp
ZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgp
LT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNl
LmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNp
emUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGgg
PSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2Vi
Mjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAuLjk4YTZlMmU3YjU3ZTUyMzE4ZjQyYzhjZDE3
ZTRmMGRlMDUwOTQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcgKzI4
MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxl
LnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBo
YW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVm
ZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4
NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRp
bCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9p
bnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBt
X2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2Nv
cmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkYzU2ZDJjNjZlZDg2
Yjk2Mjk1MGEzNDgyMDgzZTM0NThiMzJiNTJjLi4wOGNmYmI1NTBlZGNiNTZjNTk5N2EwNDM2YzI5
NjUzZWYwZTgwM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtNDAzLDEwICs0MDMsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAog
ICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAg
ICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBw
ZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MzcsNyAr
NDM0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21h
bnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBt
X21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9
IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5yZXNldCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI2LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxs
RGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1
Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4g
bV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxT
dHJlYW1EYXRhLmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEy
NDMsOSArMTI0MCw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkK
IAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkg
ewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRh
KQorICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAg
IG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVu
dC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRy
OwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi43
MzI3NDFkOTVlZTZhMmI2NTZmM2Q4YzA4YzhhZmZiYTdlMmZhZjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5WaWV3QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTI1Miw3ICsy
NTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVh
bFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJl
YW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVh
bURhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX21hbnVhbFN0cmVhbURh
dGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3Rz
IHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0
ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3
LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAg
ICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9u
c2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jl
c3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQor
ICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAg
ICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIw
NSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3Rk
OjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRp
ZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0g
ICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNv
bnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0
YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAg
ZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFh
MGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1
MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMs
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVy
OwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29y
ZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9u
c2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAppbmRleCBkZjI3OGE3ODg0YmFjODlkNWQxNWY3ZGM2NDlkNjZkODA1MDRjMWY0
Li5hMDEwM2IwMmEwZjRkNGE5MWUxN2YzNTJiZjhmOWYxMDUyNWQ4Y2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAg
ICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVi
b2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdl
LCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCA0YzQ4ODk3NjAxMjJhZjc2ZjAzYjgwYzRmODY2MmExMjNmNGQ5MTdlLi5lMTZiMGNmMzgx
ODA2MTEwZGJjNmUxN2ViNzVkOTFkM2U0YjA5YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04
OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAg
ICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJl
Z2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lz
dGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBi
NmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAg
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1h
aW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWlu
UmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50
UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZl
cmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmlu
ZGV4IDYwYzIwN2VkMGVlYTgzNmI0ODcwZGRhN2M2YmIzMGExNDU0Y2E0OTcuLjRjNjY2ZGQ0MGQ1
ZTlkNDUxYTFlMDZjMTFmZDA4MDAyN2E5OGIyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhw
YXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
Ly8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJp
ZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9h
cmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9h
cmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8g
RmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2Fy
ZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTIw
OSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdDaGFu
Z2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZv
clR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYg
KGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpAQCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxT
dHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBk
YXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZv
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0
dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5h
bWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyMDBiNmMwMTU5YjY4OGM3MmEzZmFkZmJhZTBh
Njk0ODMxYjkzNmUwLi4wNDVkNGNiODlhOTY2NGEwOGUxYjgxYTA1MzAzNWRjNWQ5ZDBjNTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0
QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENv
bG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90
IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzk1
NjI2YjA0ODYyMjBmOWEzMDlkYjJmYjcyNWUwNGIyMjI1NGEzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQ1LDcgKzQ0LDYgQEAgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9
CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkgfQogewogfQogCkBAIC01NywxMCArNTUsMTAgQEAgdm9pZCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fYnVmZmVy
LT5pc0VtcHR5KCkpCisgICAgaWYgKG1fYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgd2ViUGFn
ZS0+ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1l
LCBtX3V0aSk7CiAKLSAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9idWZmZXIu
YXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmlu
aXNoTG9hZGluZygpCkBAIC02OSwxMyArNjcsMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQ
YWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZl
ci50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZh
aWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiB9
CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4
NGZiYzI2YzA3Y2I1M2RhODcuLjI3YWQxYzUyMDI2NjAxZTdjNDllZDE4Nzc3ZWVhZmY2MGNkMTli
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5n
IG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpp
bmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJl
MzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5k
V3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAg
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25z
ZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2Ut
PmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCkt
PmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAog
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpp
bWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUK
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNo
aXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwor
ICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVT
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45
MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAg
U3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRh
KCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29k
aW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50
c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGU0NjdlZmZmZDc5NDdiNzhhNGI4MDcwZDQ4ODhi
MDZhZjhlYjdkYzUuLjM5YWI3NDhlMTI2NmQ1OWI3YzYyMGE3N2MzMzk4MzllZDEyMTgxODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAo
ZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRp
dG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIGF1
dG8gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFz
dGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2Qx
NjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjoo
Qk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCA0MjAxMDdkYTY1Yjc2YjZkMTJjNGM0NTgxMzlmMzA4MjU4ZDkzZmYzLi5j
NjVlOTc4ODhiOTZiNzM3OTU4ODA1YjZmOGZhMDA5ZGNkMWZiMTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lk
IHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIu
Ljc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8v
IE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAg
ICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAxZDgxZmZhMTlkOTdmMDRlYzdjYzU3NWIzZWNlNWU4ODgx
NDQwYjM5Li5lMzUxZWE5OThjMDdlNGIzMDQ2ZmM5MGQyNjQ1ZmFiM2U2ZDBkODhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9y
PFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmlu
Z3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAxODhlYzUwMDQ1MDc3ZDc4YjAxMjBh
NmRhZmJiMDRmYjc5Mjc2NDY0Li5hM2UzYzkzMTY4ZDg5MzY1MDJhYTZlN2Y0NTRlNGU1N2VkMWIx
MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVi
b2FyZFR5cGUpOwogfQpAQCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMo
cGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNl
dEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5
LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQw
YjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2Rh
YTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9w
cml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRh
LT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4u
MzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5T
U3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dl
YkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJj
aGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2Vk
QXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZh
dGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAg
ICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNl
ZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDog
bmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2
NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGlj
IFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQu
aW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVm
ZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAg
IFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVu
Z3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RS
ZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBiMDhjMWQyMWNmOWYwNGU2MTFiNTk1
ZWRlM2NiNjVhMTdjNDk5NzllLi5kM2I1MTZjNDFhOTBlN2ZhNTdkYWQ5ODkxZDQ5YTMzOTE0OGEz
NjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihO
U0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNv
ZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgp
OwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBu
aWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAg
IGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVz
b3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0
RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwog
ICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsK
ICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNl
RGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5Oldl
YlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6
V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBm
b3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAg
LTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5j
b3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3
ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9
IFBBTDo6V2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBj
b3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxw
dHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2Rp
bmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVE
YXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5
ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVh
bTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3Ry
ZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7
CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9y
eVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJl
dHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBh
Y2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBj
bGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAg
IHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3Jl
YXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
CiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAK
IHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBt
X3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAK
aW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgx
MGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRh
dGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChj
ZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChj
ZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNl
KFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlh
MTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAot
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggMDg3YjY5ZTdhOGIwYjY4OGFjYmZlNDRlNGRhYjFiN2JkYTU0MWYyOC4u
OTU4MWFiYmQ5MzJhNTFiYmU5ODIwNWEyMzEzYTVjODA5YmE2OTdmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBm
aW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9p
ZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZv
aWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBj
Y2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1
LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVh
bSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVD
VEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9y
eVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFr
ZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNv
dXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNl
bnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MGE1
YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJhMTRkOTE0NDNl
NTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VMVCBX
ZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVU
eXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNV
Q0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpAQCAtNTk1LDEx
ICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSog
ZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAgIC8vIEZJWE1F
OiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdo
dCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0
b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAm
cmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAg
ICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERh
dGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJs
LCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwg
dGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIw
ZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1
YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVz
b3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJj
ZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9y
eVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5
NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFz
cyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAg
IHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAg
IC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5
SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5
NmE4ZGJiODNiNzIyNjQ0ZGM2ZjAyZWEzNWYyNTkwMTdhYjljNmJmLi5lYmUyMTI1Y2M4NzljYzQy
OTQyNGNiYTg1NmYzZTgzMWYyMzUwYWVkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjggIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVp
bGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1
MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKIDIwMjEtMTItMTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW21hY09TXSBBZGQgbmV3IHNjcmVlbiBhbmQgd2luZG93IGNhcHR1cmUgYmFj
a2VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li44
ZjMyYWJjODgwMWQ1MTg4ODgyMzVlZmZiZDBjZWVhNzc3ZGUzYzllIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDMsNTIgKzQzLDQ3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlz
c2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9O
VUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
PT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1
b3VzKCkpOworICAgIGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChi
dWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNv
cHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29w
eS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwotfQotCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkp
OwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwg
MSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEo
KVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVp
bGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAo
c3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9U
UlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDEw
ICs5MSwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIp
CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9
ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0
YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0
RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEp
KTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhl
bGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5h
dGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1j
bXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhw
ZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTExLDEwICsxMDYsMTAgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RG
TW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1
aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAw
MFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
aW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7
CkBAIC0xNTEsMTcgKzE0Niw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAg
ICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdp
dHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAg
ICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGlj
dWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEsIGxlbmd0aCk7
CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBz
ZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVu
Z3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQs
IGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+YXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBFWFBFQ1Rf
RVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChj
bG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1aWxkZXIy
LmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVp
bGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsKKyAgICBF
WFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxkZXIgaXMg
bm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNF
bXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAg
Y2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVy
MS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1Rf
TkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVk
QnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0
aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNl
dCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNU
X0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0Vt
cHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc1LDYw
ICsyMDYsNzAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2In
LCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdo
J307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAg
Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9
IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScs
ICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAn
aycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgw
KTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8g
a2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1
ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0
byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJj
ZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBj
aGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZl
cihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCks
IGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6
ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgp
LCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUo
KSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwg
ImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBj
aGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsK
ICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10g
KFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBi
dWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0g
bWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVm
ZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEu
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdk
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9
LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwot
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4o
eyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9
KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAn
YycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycs
ICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7
ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9
KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAg
ICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShy
ZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNl
dCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXIt
PnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjQ5LDE2ICsyOTAsMTcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJs
ZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0K
IAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTMxMywxNSArMzU1LDE3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiAgICAgdWludDhfdCBkYXRh
WzI1Nl07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkKICAgICAgICAgZGF0
YVtpXSA9IGk7Ci0KICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyKHN0ZDo6aW5fcGxhY2UsIGRhdGEsIDI1Nik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgICAgICBjaGFy
IGMgPSBpOwotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmYywgMSk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZjLCAxKTsKICAgICB9Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlclRlc3QsIHBlZWtEYXRhKQpAQCAtMzU4LDE2ICs0MDIsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNl
LCBzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBp
KyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAg
ICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5N
dWx0aVNlZ21lbnQpCkBAIC00MDYsMTcgKzQ1MSwxOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiAgICAgfTsKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxl
bihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDEpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAot
ICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gNSkKLSAgICAgICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOwotICAgIEVYUEVDVF9FUShzaGFyZWRC
dWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7CisgICAgRVhQ
RUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwg
Y2hhbmdpbmdJdGVyYXRvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdj
YzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5
MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5
PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQog
ewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
aGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhl
bGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywg
aGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxs
b0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAg
ICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBs
ZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29y
bGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29y
bGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0
KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJl
Zil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBG
aWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxl
UGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkK
IHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAK
ICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxv
IiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0Rh
dGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29u
c3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBO
U0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7
CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERh
dGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3Ro
ICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9
IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAg
Zm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVj
dGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0
YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0g
MDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6
ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVm
ZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUo
KSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxk
ZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERh
dGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRh
bERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEu
Y291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBi
dWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1Rf
RVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446881</attachid>
            <date>2021-12-11 06:11:53 -0800</date>
            <delta_ts>2021-12-12 19:02:57 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>bug-233442-20211212011151.patch</filename>
            <type>text/plain</type>
            <size>136853</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMwNzYxNjgyMDI2NmI3
YmI3NzA4NmExMTY2YjhkMzY4Y2MyYTI0Yy4uYTQ0OGNhZmNlZDcwOGVmY2RjNmU1ZmVmNWU3MWQ0
Y2MwNWY1MGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2N2Y2ZDRiNTczYmRlYzY4MDY4OGE2
NDczZmM3NmRlNjk3ZWU5OWUuLjkwYWUzYmM5NWRjZmEwOGE5YTE3ZmQ2NGEwODQ1YzJhMjU5NWJh
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJV
UkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxT
dHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwppbmRleCAzYTE5MTY2MzE3NzIwZjcyM2ViNGQ2MGNmNWU2ZGJiMjgzNDZk
NmI4Li5jMjY1MzZiNGVkYmE5YTdlMWE4ZjMwMzhjNzdhY2VmNGUyNmM4NzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDEgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVp
bGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uNDJmZThmZGZkNDlkMWU2MGE4ZGNmMTFjMTJmMmZi
MDNlMzQ2ODkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyArMzc1LDcg
QEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9u
c2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVj
ZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5n
ZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNl
aXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMs
OSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURh
dGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSks
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkg
fSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAzN2I4Mzg2YTc4YWU4NzVkYzI1
NjNlYmNiMmE3ODg4NWQzMGJhYzQ0Li5mYWRlNjNlNGJlNDlmNGQxOTM5ZDFkYjhhZTEzMjE4MWFk
MGE5YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRo
VHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25z
CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51
bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7
CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAg
LTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0
cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRh
YmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29u
dGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFk
YWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29u
dGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0
YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZUFzQ29udGlndW91cygp
OworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNl
KSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJl
YW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMjYgKzMyNiwyNCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXpl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZm
ZXIpOworICAgIG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIs
IDApOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgp
OworfQogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7
CitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0K
IAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUxLDcgQEAgUmVmPEJsb2I+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBW
ZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5
cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0
cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBi
bG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAg
cmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRh
KCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQpAQCAtMzYyLDggKzM2MCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2VBc0NvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVU
RjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0K
IApAQCAtMzgzLDEwICszODEsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1
bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hC
b2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsK
LSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0g
ICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZm
ZXIudGFrZUFzQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6Omxv
YWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNi
YTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhi
YjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkg
Y29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAg
ICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQo
KS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVm
UHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRy
PEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggNzVkZWFk
M2I5NjBiYTliYzUyYWNjNzIxZThhOTFjYjg0MjBhNjZmYS4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5
MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQog
CiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1f
ZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9y
ZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0
U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAog
ICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENs
aWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMK
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVCht
X2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAg
ICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3
ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNv
bXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFz
ZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtl
QXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJj
ODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVh
ZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IGQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMuLmI5
OTc2YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5OWI0ZTdjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzMsNyArMzMs
NiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXND
b250ZW50KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAg
ICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVy
LnNpemUoKTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYg
KGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92
ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7Cit9CisKIHNp
emVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OworICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlm
ICghbV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgp
KTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAg
YXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAg
ICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXIt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
aW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uMDRiMzU1MDcz
MzdjOGI4NjFiMzgzZDg4MTNkYzAzZjJhMzg5MTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEwMywxMCArMTA0LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3Rh
bXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAg
ICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9
CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgp
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAg
IHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRl
Y29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwog
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJ
bmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDJmMmU4MmMy
YjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMzZTRhYWJkNmEuLmI4NDkxYWIzMGU0OGM3MzE2Yjg4ODFi
YmQzOWNmMDRhMWM0ZjZiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBA
IC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygp
CiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxw
dHI7CisgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE3LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAg
ICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1
ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEucmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRj
aFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwxOSArMzMzLDI0IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRX
aG9sZVJlc291cmNlKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291
cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5n
ZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEo
KQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVl
NDJiOTE3Li4zN2Q2NjdkODM3NmQwMGRhNzg5NDYyZGNjZTFhZGIzMzY4ODlmZDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNl
cygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0y
MjcsNyArMjI4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJl
Y3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4
NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1
YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAg
ICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9Cisg
ICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRl
bGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5k
RGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vi
c3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVl
YjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA5Njk2ZGUxNzZk
MTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5Li5jNzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNl
NTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRh
dGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlm
ICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
IHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRy
eVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAg
Ly8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/
IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBh
IHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1
bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAg
ICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVz
b3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZh
ZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi45OTNjMmI4ZTgzMGRjM2Q3NWM1YWQzMTliYmFmZTlk
ZjQ1YzUwMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2Ug
dXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBD
UkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4g
aXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsK
ICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0Zjgo
KTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAo
YXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVh
cigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZl
OjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywg
IlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJc
biIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2Np
aVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcu
ZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFs
bHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5n
IHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRh
dGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7
CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShk
YXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWRE
YXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWRE
YXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5h
cHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCgh
c3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUg
bm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhl
IGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2
LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEo
UGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29k
ZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3Qg
bGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1M
aW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0
YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVu
Y29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBt
aHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4
aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmlu
ZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERh
dGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0g
ICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCmluZGV4IDczMzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYuLjY2
NWU2OWNhNzcxNGU0NDlhZmU0Y2E2OGE3MjQxNTIzMGQxMDliMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBh
cnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7
CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAh
ZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9
IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0g
TUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWlt
ZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVz
IGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQot
ICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQu
YXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9y
KCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlm
IChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgw
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgp
IGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAo
c3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50
LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVI
ZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJl
YWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBp
biB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYg
dGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4i
LCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDEwICsxOTMsMTAgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlQXNDb250aWd1b3VzKCk7CiAgICAg
c3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNl
IE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0
RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERh
dGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1LDExICsy
MDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVv
dGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpC
aW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5k
YXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBh
cnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggODRhYTcyZGYxOTYwM2ExOWZhYzhmMmQwZDc0
MjljZmI4ZDU3ZTc3My4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFl
NWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3Qg
QXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25z
dCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAuLjlkMmRjNzM2
NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQz
N2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMw
MjQxN2U0ODRhMjVjYy4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsNyAr
NjQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50
KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAwYjdlZDliZjFjNjA5OWY1NzVhYWIzMGU5NTM0
MWYxNzZmODExODZkLi4xNTRkYjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRh
RnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgw
ZWZjMDU3MGFkYzg5ZS4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00Njgs
NyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1f
dXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVw
ZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJh
Y2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU1NSw3ICs1NTUsNyBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
dXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAg
IGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
aW5kZXggNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNS4uZDUxM2UxNmNi
YTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7
IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBl
IHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZl
clVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURh
dGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBk
YXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJ
bnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJl
ZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDg3MzFlYjgyY2I4ZWYwMWFkM2Ix
NDdkOTAwOTFlOThmOTkyNGJkMWMuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4
MDQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRh
dGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAg
IHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3Rl
ZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRp
bmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBA
IHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVt
ZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91
c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bp
bm5pbmcgYSBydW5sb29wLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJh
NjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7
CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwg
Q3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXll
ZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0
ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
aW5kZXggZGZiYTc2MWNiMDU4NjRmNTQyNDUyM2JhMzdjZDU1YzYwMDVkZWVjMC4uNTU2OTY0M2Nk
NWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lk
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRy
aWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5k
ZXggY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1Ny4uMjE4ZDc0ZjI3NzZh
OTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAg
dm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJy
b3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAKaW5kZXggZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0
NjE5ZS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0
byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUz
ZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBA
IC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBiOGIzMGI3ZTA4
MmNjYzE4ZWM1M2IxNjBhNzhkNmY5YTI4MDFmMmM4Li4xZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFm
ODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlw
dEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRj
YTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcw
NjlkOWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKaW5kZXggYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYS4uNTQyNjZk
ZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2Fj
aGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+
ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIo
ZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXgg
ODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3ODMyMWVkYzdj
YTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCmluZGV4IGMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAuLmI5YTY1
ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRj
ZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0
IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRi
OTRhMi4uZmY0MGM0MTZjYzYxNmU5MmIxMzA3YmFiYjdlMzQzYjM3ZTU0NjAwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRl
ckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0
YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8
UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9h
ZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2Vk
UmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3
ZWYyYTU3MzQuLjIzYzk3MjQyYmI5ZmI3NTNmYWI3NDM3YWY3ZTA4YTA5ZGE5NjIxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAg
LTY5LDcgKzY5LDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRo
IHNpemUgJWxkLiIsIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQo
YnVmZmVyKTsKKyAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZl
cnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZm
ZXIoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3Jp
Z2luYWxEYXRhLmVtcHR5KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVz
cG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0Nv
bnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNv
bnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZl
cnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERh
dGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdl
dCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRiZGRm
MDdjZjYxNjZhNTg2MGJhYzA3NDYyNmQyOTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRl
ICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBAQCBj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1f
cHJldmlld0RhdGEuZ2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFp
blJlc291cmNlKCkKQEAgLTIyMSw4ICsyMjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJl
cGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQo
bV9zdGF0ZSA+PSBTdGF0ZTo6Q29udmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5p
c0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29u
dmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlm
ICghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdE
YXRhLmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFo
YXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBAIHZv
aWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVu
dCYgY2xpZW50KQogICAgIH0KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hl
ZENvbnZlcnRpbmcpOwotICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlQoIW1fcHJldmlld0RhdGEuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3
RXJyb3IuaXNOdWxsKCkpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29u
dmVydGluZygqdGhpcyk7CiB9CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVy
dGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAg
ICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlld0Rh
dGEtPmFwcGVuZChkYXRhKTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAogICAg
IGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0
MGQxOTBiYTY0Y2Y4Y2UyYi4uZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRhOWY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgpAQCAtNDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
Q2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCBlYWM4NDE4M2NhM2Q5YTQ2NDg3OGM2YzQ4ZmNlMDIyMGFkZDQ3OWFlLi5lZDMw
ZTg0OWRkODE4MzhmOGM3MzNmMTNkYjZjMzdjMzc4NDhmM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUzOCw2ICs1MzgsNjUgQEAgc2l6ZV90IERhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2lt
bXV0YWJsZURhdGEpOwogfQogCitTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWls
ZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
Cit9CisKK1NoYXJlZEJ1ZmZlckJ1aWxkZXImIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
PShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlcikgewor
ICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisgICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGluaXRpYWxpemUoYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworU2hhcmVkQnVmZmVyQnVpbGRlciYg
U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3I9KGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIm
IGJ1aWxkZXIpCit7CisgICAgbV9idWZmZXIgPSBidWlsZGVyID8gYnVpbGRlci5jb3B5KCkgOiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IG51bGxwdHIgfTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aW5pdGlhbGl6ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICAvLyBXZSBkbyBub3Qgd2Fu
dCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1
ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgLy8gb25jZSBjcmVhdGVkLgorICAgIGlmIChi
dWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSB7CisgICAgICAg
IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGFwcGVuZChidWZmZXIpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWls
ZGVyOjp0YWtlKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0NvbnRpZ3VvdXMoKQoreworICAg
IHJldHVybiB0YWtlKCktPm1ha2VDb250aWd1b3VzKCk7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZl
cj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIGlmICgh
bV9idWZmZXIpCisgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIs
IDApOworICAgIHJldHVybiB0YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cit9CisKK3Zv
aWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVm
ZmVyKQorICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cit9CisKIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+
JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1f
cG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggN2Q4N2QzOTdhMzJkYTExY2EwNjIyYzA0NTk3
MDZlOTk4OTdiODNjMi4uZDEwYjBlNTQ5YTk5ZmIyNTg2MDAyNGY2OGU4ZjAwMTE3OGQzZDEzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw2ICsy
Nyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTczLDE5ICsxNzQs
NiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsg
fQogICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVu
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLSNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0j
ZW5kaWYKLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRh
UmVmKTsKLSNlbmRpZgotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwotCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CkBAIC0yNDEsNiArMjI5LDIwIEBA
IHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCiBwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRz
IGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhl
IFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9z
aXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwpAQCAtMjY3LDExICsyNjksNiBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2Fs
bCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgotICAgIC8vIFdo
ZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxl
dGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAg
ICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIGRlY29kZXIoKSBjb25zdDsKQEAgLTI5OCw2ICsyOTUsNTIgQEAgcHJpdmF0ZToKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIH07CiAKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlcihTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1aWxkZXIpCisgICAgICAgIDog
bV9idWZmZXIoYnVpbGRlciA/IGJ1aWxkZXIuY29weSgpIDogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
eyBudWxscHRyIH0pIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBpbml0aWFsaXplKFdURk1v
dmUoYnVmZmVyKSk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoc3RkOjppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykKKyAgICAg
ICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKSB7IH0KKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShTaGFyZWRC
dWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQg
YXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7Cisg
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAg
ICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVs
bCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0Vt
cHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVm
ZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKSB7IG1fYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGln
dW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJy
YXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxp
emUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVC
dWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGlu
ZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYg
KGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCmluZGV4IDY4YjA4OTRjYzg1NmVmNTIyNzAzNDM3MDI5YjI2YzViM2RkNTkyNTQuLjQ3
YzEwZjk4MDIzNGM5YWJjNjA4NGVjMjEwNDU2ZjZiMTU0ODE5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYg
ZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRhdGEpOwog
fQogCkBAIC02OCw3ICs2OSw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRh
dGEpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAg
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9
KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAppbmRleCAzODI5OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgz
MjAwZjdiLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wg
aXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAog
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlp
ZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlk
Q291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBp
bml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4g
a2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gY29udGln
dW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRvKiBkYXRh
ID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CkBAIC0yMjYsMTcgKzIyNiwxNyBAQCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpz
b25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFr
ZSgpOwogfQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1J
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdl
Yk0gaW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXpl
KCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVy
biBrZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmpl
Y3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNTEsOCArMjUxLDggQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGEKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5
KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgp
OwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkp
OwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RN
RmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYw
ZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2
MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVu
dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1
ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCmluZGV4IDMyYzVhNjY4YTE2YWU0OGVlZThjOWQzOGRiZmYxMzMwNWZkYWMwYjEuLmI2
ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsx
NjMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVu
dDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQpAQCAtMjEzLDEwICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0
KCkpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIp
OworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBE
YXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg3LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAK
LXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2
UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5
ZWRkNzkzM2YzN2M0NTFmMzJjNTAuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1YzFlYzQ0MWFmNzE5
NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
NTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdl
YmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1Rf
TEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5
c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBw
ZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJz
ZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hh
cmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2Fk
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5
c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVk
KHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+KCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQt
Pm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFy
c2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzYsMTAgQEAgcHVibGlj
OgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQog
ICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3Bh
eWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0
KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0
ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpA
QCAtOTAsNyArOTQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVt
SWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNTY0NzEyMDAxNjdhM2ZiZDRl
NmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0Li4xYzg3MWY0ZDU2NDkxYmY3NzVlODUwMGMxNmQwYmI4OTRk
NTRlNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3ICsyMjIs
NyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2Vy
KQogCiBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAg
IGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBt
YXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2Vy
KG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19k
ZWNvbXByZXNzX3N0cnVjdCogaW5mCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRl
clNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAg
ICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXIt
PmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1
ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
cmV0dXJuIGJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFm
NzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjliZTAzNTIz
N2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFM
b2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwog
CiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNj
cmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1
Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcs
MTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8v
IEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRh
LCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91
dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJE
ZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTggKzUzNSwx
MyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgp
CiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2Nr
IH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5h
cHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRh
KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9
IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRh
a2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2Yy
YmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAg
ICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFs
UmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkK
ICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRh
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0
cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRC
eXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VT
dGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNl
c3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0
YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJl
dGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFz
a0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJl
c3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9v
bCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4g
cmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJl
Y2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVx
dWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExl
bmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVm
ZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0
IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNu
J3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRp
bCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUg
Y29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVk
Q29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0g
ZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAg
ICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0
KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBp
ZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNU
b1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQ
dHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAg
IGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwg
YnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9
IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2Vi
Q29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAg
YXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAg
ICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZl
ci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVy
LT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNp
emUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExl
bmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
IChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7
CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4g
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJl
LgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsK
ICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5i
dWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VU
b1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1
NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7
CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAog
U2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNj
cmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVy
IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6
OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBT
dHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVy
Ojpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZl
ciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5i
ZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2Ny
aXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1
dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwg
Y29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
aW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uMzdmMWE0ODdm
OGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNj
cmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9i
dWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7
IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZl
cjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9i
dWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1Npbmds
ZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENv
bnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
aW5kZXggZThiYzM5NzlmOTNmNDNkZDRmZmVkM2JlMDVlNjE3NmRkN2EzN2Q3ZS4uMmE3MTI1NDcx
OGVhZWRmNTFhNDQ3ZWNlNjJjNGNkNzE2YmIwNzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2lu
Y2x1ZGUgIkZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ck9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlICJXb3JrZXJH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTc4
LDE1ICs3NywxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcp
IHsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOwot
ICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7
Ci0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKLSAgICAgICAgICAgIGlmIChj
b250aWd1b3VzRGF0YSkgewotICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5m
cmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3Vy
cmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhKQorICAgICAgICAg
ICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEudGFrZUFzQ29udGlndW91cygpOworICAgICAgICBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGNvbnRpZ3Vv
dXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhKQorICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTEyMSwxMCArMTIwLDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
ICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9k
YXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgbV9k
YXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVl
YmM1YzZlMDRhMWU4NjNjNy4uZGFiNzNmYzdiMWE5M2VkNGUzZmViMzFkNjcwOThkOTliNTE3NmEz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0zNiw3ICszNyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC03Niw3ICs3Niw3IEBAIHBy
aXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVu
dCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9j
b250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKaW5kZXggZTBjZGM3MjM0YzU0YTEzZGY3MGE2ODA1YzI4MWI5NDgwNTQ1
YWUyNi4uOWIxMTJiOWRiMmNkODRkMDMyZjU5ZGFmYThlOGUzOGUwNzBlNTNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xp
Y3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlN0cmluZ0FkYXB0b3JzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTIwOCw3ICsyMDcsNyBAQCBS
ZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8gRklY
TUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFy
ZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRh
ID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJh
Y3REYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlKCkt
PmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6Olll
cykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBi
ZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgs
OSArMjE3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVz
cG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNl
VHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUo
bnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2VB
c0FycmF5QnVmZmVyKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0Ojpz
ZXRUaW1lb3V0KHVuc2lnbmVkIHRpbWVvdXQpCkBAIC03NDEsNyArNzM4LDcgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGlu
ZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNw
b25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51
bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIucmVzZXQoKTsKICAgICBtX3Jlc3Bv
bnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOSArMTA2Miw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShk
YXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgot
ICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIAogICAgIGlmICghbV9l
cnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAwNDg0NjI2YjJlNWRm
ZGRhN2NiMTZjNGY1NTIyZGVmODRjNGFjMTg2Li4yZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4
NmJhMmQ4MDM3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0
dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDUsNyArNDYsNiBAQCBj
bGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBA
IC0yMzcsNyArMjM3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNw
b25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCA1NzdkNjU2ZTY3ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxLi4wYjlmNDlkMzY0
YzI1OTVlMjIzYjMxMTRkZWFmY2VlOTJhNDAwZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMDYsMTAg
KzMwNiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJv
eEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1l
dGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
LmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0
d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzQsMTYg
KzczNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAmJiBtX3Jlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIp
CiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBp
c01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZl
cmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRh
LmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdl
YkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAg
IC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
IGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBz
cGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBh
cnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlG
b3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2
OSwxMCArODY5LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNh
c2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2Fj
aGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNo
ZS0+Y2FwYWNpdHkoKSAvIDg7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5z
aXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAg
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9
IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgp
KQogICAgICAgICByZXR1cm47CkBAIC04ODAsNyArODgwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXAKICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUo
KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVu
Y29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTA5LDExICs5MDksMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG8KICNlbmRpZgogCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJl
cGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJl
ZERhdGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3lu
Y2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdl
dCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKCFtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQ
YXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUu
Ci0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAg
ICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEuZ2V0KCksIC0xKTsKICAgICAgICAgfQogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VM
b2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KQEAgLTEyNTksMTIgKzEyNTksMTIgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogICAgIEFT
U0VSVChtX2J1ZmZlcmVkRGF0YSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCi0gICAg
aWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEuZ2V0KCkgfSwgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyODksMTIgKzEyODksMTIg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBz
ZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9u
ZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTog
U3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZSht
X25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVk
Qm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVu
dFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCksIFts
b2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLmM0MjM0NjUxYmE5
MjhiOTVkOGM2ZjU3YmUyNWM1ZjIxMTg5ODlmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVk
RGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhOwog
ICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyAr
MjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7
CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZv
ck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBk
YzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNl
aXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAg
ICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1
Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAg
IC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAg
ICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEw
MjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXIt
PnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAg
ICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVF
bnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkp
IHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBj
YW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2Fj
aGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1f
cmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jl
c3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlk
Q29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRi
MmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1
MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAt
NzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZjk0ZGU5
MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OC4uZWQ4Y2I2NTNlY2ZkZDEzNDczZWUx
ZDJhZjUwYmFhN2E2ZjdhMTAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKQEAgLTE4NywxMCArMTg3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9u
VHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92
ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNSwxNCAr
MjEyLDExIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
blR5cGU6OldhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgbV9jb21w
bGV0ZWQgPSB0cnVlOwotICAgIAotICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRh
ID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNp
emUoKSB9OwogCisgICAgaWYgKGlzU3luYygpKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gbV9z
eW5jRGF0YS5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNE
YXRhLnRha2VBc0NvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0Nv
bXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0g
ICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQ
YWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4
IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLmRkNmI3MjQxMGFkZDRl
ZjYzMWQyODA2OWUxNGEzZjJhMDBjNWNjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3MgRnJhbWVJbmZvOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTE1LDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVy
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
bV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5j
RGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fc3luY0RhdGE7CiAKICAg
ICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZh
bHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCBkYzU2ZDJjNjZlZDg2Yjk2Mjk1MGEzNDgyMDgzZTM0NThiMzJiNTJjLi4w
OGNmYmI1NTBlZGNiNTZjNTk5N2EwNDM2YzI5NjUzZWYwZTgwM2VmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDAzLDEwICs0MDMs
NyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAg
ICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpI
YXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0g
ICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwot
Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAg
ICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00MzcsNyArNDM0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0g
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YS5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI2
LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0
cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6Rmlu
aXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBp
ZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisg
ICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLmdldCgpOwogCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDMsOSArMTI0MCw5IEBAIHZvaWQgUGx1Z2luVmll
dzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAg
ICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFu
dWFsU3RyZWFtRGF0YS50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVt
ZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBt
X21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2
YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi43MzI3NDFkOTVlZTZhMmI2NTZmM2Q4YzA4YzhhZmZi
YTdlMmZhZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5WaWV3QmFz
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlciBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlz
IHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJp
bmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWlu
dGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRl
eCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi43NmRjNDMwNmQ1ZjIw
ODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9u
c2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVy
QnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBT
aGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9u
KG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmICht
X2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZl
cikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYg
KG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uYzhjMGQ4
NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0
Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJD
b3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNw
b25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2gg
eyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uNzk1NjI2
YjA0ODYyMjBmOWEzMDlkYjJmYjcyNWUwNGIyMjI1NGEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQ1LDcgKzQ0LDYgQEAgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAg
ICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkgfQogewogfQogCkBAIC01NywxMCArNTUsMTAgQEAgdm9pZCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fYnVmZmVyLT5p
c0VtcHR5KCkpCisgICAgaWYgKG1fYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgd2ViUGFnZS0+
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2ZpbGVOYW1lLCBt
X3V0aSk7CiAKLSAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9idWZmZXIuYXBw
ZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNo
TG9hZGluZygpCkBAIC02OSwxMyArNjcsMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdl
LT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci50
YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwo
KQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiB9CiAK
IHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZi
YzI2YzA3Y2I1M2RhODcuLjI3YWQxYzUyMDI2NjAxZTdjNDllZDE4Nzc3ZWVhZmY2MGNkMTliMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1f
ZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApp
bmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li42ZGM0YTQ4NTJh
MTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAog
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBC
U1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkK
IHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAg
ICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewpA
QCAtNTk1LDExICs1OTUsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8g
SVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgICAg
IC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8g
cmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0
IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRh
LT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5z
aXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
TmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBt
aW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDkzMGQ1OTBjZDRmMmM0MGRjOGY5MTRkNWMwYTEwNDEwMzFiODIzYzcuLmViZTIxMjVjYzg3
OWNjNDI5NDI0Y2JhODU2ZjNlODMxZjIzNTBhZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYmFh
ZTI3YTk5OGZmZDY5MWMxMDZiODg3MTU1NmJkNGYwNTIyYzIwMC4uOGYzMmFiYzg4MDFkNTE4ODg4
MjM1ZWZmYmQwY2VlYTc3N2RlM2M5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
QEAgLTc0LDI0ICs3NCwxNiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKICAgICBFWFBFQ1RfVFJVRSghbWVtY21w
KGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwot
ICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZl
ci0+ZGF0YSgpKTsKLX0KLQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKV0pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwg
MSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxk
ZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQ
RUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05OSwxMCArOTEsMTAgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERh
dGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNo
YXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNl
LCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0
RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIs
IHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVj
dGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEo
c3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1
ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTE0LDEw
ICsxMDYsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
TGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHZlY3RvcjAp
KTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFw
cGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRf
RVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAw
OyArK2kpIHsKQEAgLTE1NCwxNyArMTQ2LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
b3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMg
dXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVj
dHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNz
ZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0
ZXN0RGF0YSk7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1
aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwog
ICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNp
emUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQs
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBhdXRvIGNsb25lID0gc2hhcmVkQnVmZmVyLT5j
b3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFT
U0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBj
bG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1
LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6
ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOwor
ICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVu
Z3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRh
a2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8v
IGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxk
ZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0
YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHko
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZm
ZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQo
KSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQo
dGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIy
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBi
dWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7
CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVk
KQpAQCAtMTgyLDE5ICsyMTAsMjEgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVE
YXRhKQogICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKIAotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoczMpKTsKLSAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVm
ZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRT
b21lRGF0YSgwKTsKICAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAg
YXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CiAgICAgYXV0
byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJj
ZCIpOwogICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwpAQCAt
MjAzLDYgKzIzMyw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAg
ICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZm
ZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwogICAgIGNo
ZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVy
KGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKICAgICBFWFBFQ1RfRVEo
Z2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CiAgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gx
LnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCks
IGwuc2l6ZSgpLCAibCIpOwpAQCAtMjExLDE2ICsyNDIsMTggQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGdldFNvbWVEYXRhKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykK
IHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBj
b250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRv
JiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7
CiAgICAgfTsKICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
LCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7
CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAn
ZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VR
KCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywg
J2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsg
eyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAn
YScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
IH0gfSkuZ2V0KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0p
LmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKQEAgLTIzMCwxMSAr
MjYzLDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0g
ezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1
dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+
dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVm
ZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVy
LnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAK
QEAgLTI1NSwxNiArMjkwLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7
IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwot
ICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBF
Q1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsK
KyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0z
MTksMTUgKzM1NSwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNs
dWRlU2VwYXJhdG9yKQogICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBkYXRhLCAy
NTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hhciBjID0gaTsKLSAgICAgICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAgICAg
fQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKQEAgLTM2
NCwxNiArNDAyLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtE
YXRhKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxl
VGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0g
ICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxk
ZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVY
UEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQpAQCAtNDEyLDE3ICs0
NTEsMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5r
c0luTXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBzaW1w
bGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
KwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBFWFBF
Q1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDEpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsK
KyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBs
ZVRleHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1w
bGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQppbmRleCA4NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3Li44YmZi
ODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00OCwxNiArNDgsMTcgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJy
YXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
LSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxk
ZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5n
ZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxs
b0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAg
IGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1
ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXIt
PmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZE
YXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxs
b0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CkBAIC02OSwzMiArNzAsMzIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5T
RGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQo
KGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBD
RkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBA
WyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6
ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUlu
dGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVm
ZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkK
ICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgp
IGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5T
VUludGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAg
ICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAg
d2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0Vx
dWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBv
c2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRv
IGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAg
ICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6
ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNF
cXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2Rpbmdd
XSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446958</attachid>
            <date>2021-12-12 19:03:07 -0800</date>
            <delta_ts>2021-12-12 19:34:02 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211213140304.patch</filename>
            <type>text/plain</type>
            <size>551707</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRkNjBiOWJiMjJiNTU2
ZTZlOWVjM2FhZGU1NmIxNzRkN2FmYTI0YS4uNWNjYTEzMDRkZjc3ZTNlNzljMjlhMjM0ZDAwNGE5
YWY0NTcwMmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAg
YW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1
bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1h
ZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0
IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBh
cmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBB
cmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xl
IHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVu
IGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVu
IHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdl
CisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEg
Y2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8t
b3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAg
ICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2Yg
YSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAg
ICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJz
aW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFu
Y3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUg
U2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFu
ZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAg
IEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVy
YXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNo
YW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3Jhcnkg
bWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
IGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBj
aGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBp
cyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVu
bGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUg
bWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2Jz
ZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBO
ZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFk
ZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0
ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5k
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
Q0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJ
RkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhE
YXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJD
b3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFz
c2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29u
c3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6
Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhU
YWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZh
bGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhD
b3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxl
Ojpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFi
bGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRM
YW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNj
cmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERh
dGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
bkZ1bmMpOgorCiAyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CiAKICAgICAgICAgU2hhcmVkQnVmZmVyIHNob3VsZCB1c2UgV1RGOjpGaWxlU3lzdGVtIHdo
ZW4gY3JlYXRpbmcgZnJvbSBhIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVmZDQwZGFhOWMzNTNjMmM1NDkw
N2Y5ODdmYWMyN2E3YzJhOWViZS4uM2RkYjEyOWY0NDM3Njg4MjhlZjM5Zjc4NWVlMjBhMjNmZDM0
MGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpX
ZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21w
bGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFp
bCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAg
ICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
SVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERh
dGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9u
RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6
CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVT
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFw
cEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURh
dGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQ
cm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFy
eSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0
aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2lu
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVs
ZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpj
cmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5T
dGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0xMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb21lbnR1bSBFdmVudCBEaXNwYXRjaGVyOiBUYWlsIGZy
YW1lcyBhcmUgdGhlIHdyb25nIHZlbG9jaXR5IGlmIG1vbWVudHVtIGV2ZW50IGRpc3BhdGNoIHJh
dGUgZG9lc24ndCBtYXRjaCBzY3JlZW4gcmVmcmVzaCByYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggNTVlNGMxOGM0ZjRmMTEyZjY4NzE2NTY0MzBjNzRmOWUwMmQ2YjhmNS4uYmNm
MjdiMDlhZGQ1NDBhY2JmNzc0NDAyYTAxNDU2N2ZmZjQ3ZWQ2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAz
MAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgt
W0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRh
U291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVu
dUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dl
YlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0
YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0x
MSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHJl
ZHVuZGFudCBTdHlsZVJ1bGU6OlR5cGUgZW51bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGE4OTVjNjZjMWYxOTM3YmZhODlkMjYyOGQwYzBiOTYwOTEwYTk2YzAuLmZhNDRjYjRlZmNh
NzRkZDlhNjU2ZmRmMzQyOWMwODA3NjY5OTFiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAg
ICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWVtb3J5
U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAg
ICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVh
bS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RkOjpudWxscHRyX3QgY29uc3RydWN0
b3IgZm9yIFJlZlB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDMzNTRiNTJh
NTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRmYWMzYTk1NDA3ZjJiMzczYWE4OGRm
ZTM3MDdmMmI5YmVlYWFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
Ci12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3M2Mw
YjM3NDRkLi45YjU5ZWI1Y2M0OTU3ZjAzMzY2NzU4MmU4NjUzYWMwNzRmZThmMzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIx
NGRiZWU2NGJmOWM5MDc4Li42OWJjM2QzYTAzY2U0NWVjN2NlODYzNmQ0YjE3ZDkzNTlkM2NmMGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApA
QCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQogICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVM
b2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0b21E
YXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpOwotICAgICAgICBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkK
LSAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAg
ICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKAogICAgIGlmICghc3Ry
aW5nUmVzdWx0LmlzTnVsbCgpKQogICAgICAgICBtX2RhdGEgPSB7IHN0cmluZ1Jlc3VsdCB9Owog
ICAgIGVsc2UgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSBtX2Jsb2JMb2FkZXItPmFycmF5QnVmZmVy
UmVzdWx0KCkpCi0gICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB9OworICAgICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIH07CiAgICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsK
ICAgICBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAtMjY1LDggKzI2NSw4IEBAIHZv
aWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9z
KSB7CiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAg
ICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Cisg
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwogICAgICAgICAgICAgbWFya3VwVG9T
YW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9k
YXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1f
ZGF0YSk7CkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICB9
CiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZmZXJU
b1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAg
IGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKSk7
CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICB9
CiAKICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoYml0bWFwSW1hZ2Uu
Z2V0KCksIEZsb2F0UG9pbnQ6Onplcm8oKSk7Ci0gICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnRvRGF0YSgiaW1hZ2UvcG5nIl9zKSkgfTsKKyAgICAg
ICAgbV9kYXRhID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXIt
PnRvRGF0YSgiaW1hZ2UvcG5nIl9zKSkgfTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1
MzBjZDc3ZDU0Zjk5YTUyOWE3Li4yZGM5ZDUwMGYyNTM1ZThjYjIxY2JhMzNjZTRhZTFlMjU0MTMx
MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBA
IC0zNCwxMSArMzQsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmls
ZVJlYWRlckxvYWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBCdWZm
ZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAg
ICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBw
dWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMw
N2EzYTQ0MTAwLi4yOTNmNTIzMGQwZDc3MTIzZGIxMzBiMDE2OTM2OTlmYmFmZjU0YWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1dG8g
aW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRh
OmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4Njlk
YTdlNWJmLi4xNTdjNWY1MmMwMjZiZmFhOTc2NGVjZDI1MDQyM2IxNWQxODYzM2NhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNh
MjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4
MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5l
OjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9
IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9
LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUyMDk0ZjY1NDk5YmI5
MGRkN2YwMDcxZDQyNGMuLjQyZmU4ZmRmZDQ5ZDFlNjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODksNyAr
Mjg5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZv
cywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25u
ZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAg
ICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9
IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1d
IChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRs
ZXItPmlzRG9uZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OSwxNSAr
Mjk5LDE1IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5m
b3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0
YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25z
ZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVz
dD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8
RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBF
eGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5
KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5
LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBi
b2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBi
b2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJl
cXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNl
cHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUs
NyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+
aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSBy
ZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5
Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0
aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3Vt
ZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7
CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5m
bywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5z
aXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAg
ICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgK
aW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2Jj
ZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJv
b2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYp
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmVi
ZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlz
b2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9
LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9u
c2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAg
IH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAg
cmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNl
Qm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
YnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApp
bmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4
YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBj
b252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcg
UmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5
Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4
OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3
MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNL
ZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRl
ZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAg
aWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVl
OjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0
byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNo
U3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAg
ICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3Rh
dHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1
Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNo
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8g
bGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0
YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtl
eVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAz
LDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlw
ZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3Qt
PnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmly
c3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICBy
ZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3Rh
dHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQg
fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4
IGMwNDczMTI4NGY2NzZhYTVjNTBmOTQwYmU0ZjY2MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVm
MjE5OTJiOWUxYWQwNWFjYTU0ZTcyZDYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29u
c3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3du
ZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFy
ZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1f
Y29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRU
eXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNv
bnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFy
ZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxv
YWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0
cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlz
Rm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURh
dGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAg
ICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEg
RmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VE
YXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsK
QEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFr
ZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCku
ZW5jb2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhF
bmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVu
dGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQ
YXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6
VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1
ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgp
LmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSks
IGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJW
aWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJh
eUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0
ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThm
YzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsK
IAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zv
cm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKaW5kZXggZGM4NjVmN2RhMjM5N2FjNTU5M2I0NGI1MzlkM2U2NzFlNDNjZTZkYi4uZmFkZTYz
ZTRiZTQ5ZjRkMTkzOWQxZGI4YWUxMzIxODFhZDBhOWEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIs
NyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpj
bGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7
CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAg
bV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29u
c3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3Np
bmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6
Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6
OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJC
dWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0
byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5h
cHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0
eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2VBc0Nv
bnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1v
dmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBl
RnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNv
bnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRh
KCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQs
IGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2Fn
ZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkp
CiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+
KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChU
eXBlRXJyb3IpOwpAQCAtMzI0LDI2ICszMjYsMjQgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBt
X2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7CiB9CiAKLVJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKK30KIAotICAg
IGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAg
ICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7
CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9i
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQpAQCAtMzUxLDkgKzM1MSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4
X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1
dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRh
KGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9i
RnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRl
bnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAg
LTM2Miw4ICszNjAsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8g
dGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBi
dWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzgxLDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCkpOwogfQog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYg
ZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMu
LjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUw
LDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0K
LSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9i
dWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpA
QCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5n
IG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNl
PiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVm
ZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXgg
NGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBkM2Y4NDhmNjRmMi4uYjkzNDM5MmE5MDNkNGE1
ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5r
Q2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBj
aHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2Fs
bGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRo
UGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgp
LnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBb
dGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlO
dWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgp
LmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2
NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTkyNzI5MzBiYmMyZDE2NjZjNmFlYjU0N2ExYjVl
ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAg
ICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25z
ZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYm
LCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1Zjdl
OWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3
MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBB
cHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6
ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5j
b2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmVi
N2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWVi
OGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3Rl
eHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7
IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVy
ID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4g
ZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZh
ZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3
YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJy
YXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQ
YXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29k
ZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rv
cjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBr
ZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShj
b25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAg
ZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAK
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdCom
IGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4u
YWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
REJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJ
REJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVj
Yzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdi
OGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJ
bmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5z
YWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXpl
SURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGlu
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJz
aW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7
CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRo
KCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVj
dCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9i
amVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0
byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBk
YXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGlu
Zm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0
byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlm
ICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMg
KzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAl
cyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBp
bmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8g
aW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAo
IWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVl
KTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7
CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2
YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0
aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBh
dXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFr
ZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0
byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsx
NzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FM
aXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5t
b2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJv
bSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUg
ZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
c3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0
aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4g
b2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3Rv
cmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAg
ICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQog
ICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBs
b3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJL
ZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJf
cyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBr
ZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBr
ZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBw
ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAt
MjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChr
ZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYg
a2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9u
ZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3Jk
Il9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAg
ICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5Lmlz
TnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2Vy
S2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktl
eSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAog
ICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6
Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVw
cGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
IGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJm
ZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5
Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3
ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0
YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJ
VEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0
ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMx
NSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVt
ZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUlu
ZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3Vt
ZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3Yjk0YzllN2Vi
MGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNlMGI4
NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAg
ICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9w
ZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJ
ZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdl
LmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90
ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1
M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2
ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50
LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAg
ICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcm
IHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsK
ICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODllMC4uMjdhNmQ3
MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApA
QCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNv
bnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7
CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2Rh
dGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1f
cmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2Up
OwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5j
ZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNl
dCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVy
KCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0K
IAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0
ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVz
b3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlQXND
b250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsK
IAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIu
LmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
aApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQ
cm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4
MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3
ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9k
ZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJM
PiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAg
YXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUi
LCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVs
U291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRf
VU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgp
KTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMz
MDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBl
ZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQ
cm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAog
ICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigq
Z2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1l
bnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpu
dWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNm
MTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3Vy
Y2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNP
bmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1
b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWlu
c09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0
SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5z
T25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
IH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAg
bV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEs
NiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3Jp
cHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51
bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJs
ZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNo
ZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFp
bnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRl
eCBhZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBjM2E4YzY5YTljMzFkLi4zYzVlYTliODlhOWM5
ZTkwMzcwYjk4ZGY1Mjg1NjMwNjQ5OTAwN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNl
Ojpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1faW5E
b2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1l
bnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNl
RWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBvdGZGb250
ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAg
IG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZG
b250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkp
KTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1
c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNv
dXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1l
ZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5i
eXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNl
LT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAg
ICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250Ojpj
cmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAg
ICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdh
MTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZv
bnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBG
b250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGll
czsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9u
dFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVh
dHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NT
Rm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3Jj
aGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBt
X2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUg
cmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVk
T1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRl
ZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRl
U291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uZjVi
ZjJiNzI2ZTZhZTk2ODkzNTNjMGE3ZTA4YjQ1ZWZkYTVkOTA0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVU
eXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5h
ZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAg
IHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
MjgzMWNkM2ZhOWM2YTRmOWZmOWE5YTBlMjVjM2I0MmU1MmQxYjY0ZC4uY2YzMmFiYzE4MjdmY2Vi
NTRhZDVlYTAxYmEwMmViMDFmMTc0ZjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtNDE1OSw3ICs0MTU5LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21p
c2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0
aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAppbmRleCBiMDMxMzZmZmNmMWY2YjM3ZTZiMDdhYjYyMzJlNjFmNjZkZWU3NTg3Li44ZGE5ZmNj
NjQxNmI2NzIxN2QxNzQ5ZWJiODk3ODA3ZTQ3NjExMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFU
cmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwog
Y2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3Mg
RWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUzOCw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2Vu
ZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7
CkBAIC01NzUsNyArNTc2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5k
RGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAj
ZW5kaWYKIApAQCAtNjIzLDEyICs2MjQsMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3Jt
YXQoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJB
cmNoaXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3Qg
VVJMJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJp
bmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9y
bUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNl
NjdlZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5n
IG1pbWVUeXBlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggMDhhYTEyNDI2NjIwZjc2
OTUzYTc5YjM0ZWRlNWY2ZGYwNTI3YjAxNS4uMWQ5N2FjZDNjYzc5MTYxYjBhYzUwYzRiZjcwY2Ix
NTJmYzBmNDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50
UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgK
QEAgLTc4LDEwICs3OCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRG
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNlbmRpZgogfTsKIApAQCAtMTA1LDEwICsxMDUs
MTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAK
aW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVhMjRlYzIwZTRmMjFiZmEyNS4uNzRmZTgyODdl
OGMzOTNiZTE3YTY3NjY1MzhkOWYzNGEwOTBiMzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyAr
MzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250
ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmls
ZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4
dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZjYjRkMTU4MTQ2MzViMjRkOTBiYjcuLmU3YTA3
MWNhNDAzOWUwMWY0OGQwYjQ5OTUwMWVkNjRkZTYyNmYwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaApAQCAtNDEsNyAr
NDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAog
ICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0
OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIz
NTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiAr
NzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQg
PSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJp
YnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hp
dmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVk
QXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1
aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVy
cm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQ
YXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERh
dGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQo
RWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRS
YW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpA
QCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0
byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5
cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0
aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0
ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hp
dmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50
YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVj
dGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAg
U3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0
dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0
cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
IAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQz
MjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09M
IEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50
LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNv
dXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWlt
ZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAg
IGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUp
XTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpA
QCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxl
V3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChk
YXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJj
ZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUg
PSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAg
aWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmls
ZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJl
c291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQu
Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNo
YXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uNDQwNTli
ZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3MzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3
ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50
SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5n
IGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9y
aWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291
cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1p
bWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9
CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIs
NyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2Vy
dGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlw
ZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9i
amVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsK
ICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1h
cmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBi
dWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFy
ZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUg
eyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hp
dmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3Ry
aW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0
cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRl
c3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwo
c3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5k
QXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmlu
Zzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAg
ICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2
ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVu
dCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5p
dGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFn
aW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4g
IW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3Mo
KS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyArNjI2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjM5LDcgKzYzOSw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFn
ZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCmluZGV4IDMwMzZjZDMyZDZjZDgzMmMyMjAyODNhODQ0NWE4OTlhNWE2NmNh
M2MuLmRmMDkxOWY3NWFjZjc5YTgzOTI4MzIxMTkwYzVjYjJiYWY3NDdlNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEVk
aXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgpCiAgICAgUGFzdGVib2FyZEJ1ZmZlciBwYXN0ZWJvYXJk
QnVmZmVyOwogICAgIHBhc3RlYm9hcmRCdWZmZXIuY29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQu
b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLnR5
cGUgPSBsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKTsKLSAgICBwYXN0ZWJvYXJkQnVmZmVyLmRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RGF0YS5nZXQoKSk7CisgICAgcGFzdGVib2Fy
ZEJ1ZmZlci5kYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdl
dCgpKTsKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRCdWZmZXIpOwogfQogCkBAIC0y
NTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChO
b2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5z
ZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2
ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJm
YWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIg
b2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRo
aXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1Zp
ZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2Vk
IHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFj
Y2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkg
KzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5k
T25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFt
ZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0g
RlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVk
VGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIp
CiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3Ro
ICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyAr
Mjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5
RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURv
Y3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklY
TUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2ll
bnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0
ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBp
dCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXgg
Njc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uYjk5NzZhZjJlNGRkNDA5
YTg5YzNhNDI0NDEzOWEzZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogCkBAIC02Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0g
ICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZm
ZXIgPSBudWxscHRyOworICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAg
ICAgICBtX2RhdGFCdWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgp
KSB7CkBAIC04MSwzNiArODAsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwog
fQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBj
b25zdAoreworICAgIHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZm
ZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRh
dGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
IH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6
ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IG1fZGF0YUJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2Nv
bnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVu
Z3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAg
ICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIg
PSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxl
bmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4w
NGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEzODkxNzIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtMTAzLDEwICsxMDQs
MTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25z
ZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9
CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFC
dWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBo
YXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsK
ICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5z
aWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWlt
ZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0
aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFm
ODUyYzIzNjJiMzk5NDliZGQuLmU1OGJjYzJhYTdmODE0ZDk3N2ZmN2Q4ZjI2MjNjMzdlY2JhN2Mx
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxk
VHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2Uu
bWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAg
ICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBk
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAg
ICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggOWI1Y2FkOTU5YThlNmYyYzJi
ZjcwZTFhZWUxNDI4NzQ1OWQwNjYxMi4uYTNjNjBjM2I2OTZhODNkODMxZDg5N2Y4MTY3YTMyYmUy
MzczNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9j
dW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1
cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygp
LCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRh
dGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5n
TmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQo
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMx
NzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIx
OTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcg
KzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQp
OwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0g
cmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZm
ZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNl
QnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEu
LmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBA
IC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJl
ZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVx
dWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVl
c3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVu
dCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0
UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVu
dGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggY2Y2Y2NmMmJkMDg5
MjUwYzYwM2ZkMDRiNzRjM2VjOGMwZTQ5YzRmMS4uZmRmZDBlYWFmM2E1MDE4ZDkwMGJhMWE2ZDdh
NDhhZTU3MzJmMzRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0xNjA1LDExICsxNjA1LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBB
U1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNl
ID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9
ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUo
bWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNv
dXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEt
PmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiB9CkBAIC0xNjQ5LDcgKzE2NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVh
ckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1l
ci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURh
dGEuZ2V0KCk7CiB9CkBAIC0yMjUzLDcgKzIyNTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21t
aXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
Y29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2Fk
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNTEyMjdiOTZk
N2QxN2NhMDdlZTNiN2NmZjQxNjJmM2NiZTFhOTc1Zi4uNmJkMzJmYzJlY2Y0NmFmN2NkOTM3OWE5
ZDAwYzk5MTE2ZWI3YTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBD
b250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0
b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIzNSw3
ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVS
ZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9w
QXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNo
aXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlm
CkBAIC02MTIsNyArNjEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBt
X2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
ICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggYzEwZDVjMWRiZWJlZjA1NTI4NDNkZDlmYzBhNTMzZGRiNDc5M2E0Yi4uMDc2
ZjM3ZGUzMjU5YTAzYzM4N2ExZTBkMmFmY2FlZDJkODI1OWIxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1
OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0
VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29u
dGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNv
dXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZmUzMmQ5NGU0Mjg2NTlkNWQ2MWRh
YmE3MjE5OGViMTk1OWJhMjVmNi4uMGRhZjRjN2FiNjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIx
MDM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsy
NzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNo
YW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFh
ZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNi4uZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0
ZmFkMmJjM2ViNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0z
MTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVM
b2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1S
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVl
c3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNs
aWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVy
cm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1f
ZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExp
a2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVy
OjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggZWRlY2UxMmNkN2E5NmZlYjkzNWMzMzQ2NmM0NmNhZTAyMGUyZjNh
Yy4uOWMzZjc0YzQyZGI4ZTdiYWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVC
YXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hy
b21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2
IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xp
Y3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRB
cmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENs
aWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVu
ZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpv
cHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIs
IHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQz
Y2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJi
ZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAg
LTExOCw3ICsxMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkK
IAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0
cjsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1
ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAg
IGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVm
ZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jl
c291cmNlRGF0YS5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNo
VG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291
cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5n
ZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEo
KQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNv
bXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0
aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgog
ICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5
OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNv
ZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJl
Y2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGlu
dD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJk
MjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uMzdkNjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRi
MzM2ODg5ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIApAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciog
cmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAg
ICBjb25zdCBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xl
YXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxv
YWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVz
dDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291
cmNlRGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcmVzb3VyY2VEYXRhOwogICAgIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3
ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhi
ZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1
OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThm
MTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0
aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVk
QnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJl
ZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0
KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1f
ZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1f
ZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwm
JiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3Vy
bDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYz
ODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRl
NWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9u
Q2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICgh
bWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNr
IG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFy
c2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
IkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQg
c3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgx
ODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIz
MjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBA
QCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBw
YXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0
aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3Vy
Y2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTog
Q2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1
ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7
CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJl
c291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQog
ewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91
bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBA
IC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSBy
ZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2Yg
YSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFs
ZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYg
dGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0
aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsy
ODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxi
YWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9
IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJv
YWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAg
IC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVy
IHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3
MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3
NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGlj
YXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4
ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxs
YmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5
YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1
ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VM
b2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNw
b25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVz
cG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5
cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5
NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBw
bGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUy
MGJkMzBlNjM2NTk1Li5jNzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAo
PywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgo
KS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQK
ICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRh
U3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCku
Z2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21t
YW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAg
ICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5
IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFz
ZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1v
dW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAg
ICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigp
OwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAg
ICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAog
ICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5C
bG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5k
ZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3Zjdk
ZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcg
QEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJv
cGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBl
bXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAg
YXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBV
UkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJl
c2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2Ug
Zm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAg
ICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJl
c2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVz
cG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3Vy
Y2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENG
RGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lv
bktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBl
SUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNw
b25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFs
aWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Q
cm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVy
c2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsK
ICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAg
ICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVm
PihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRl
ZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAg
ICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlv
bmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25h
cnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVn
YWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25h
cnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBz
dGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25h
cnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNv
dXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5v
IG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7
CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGlj
dGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1
dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAg
ICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQg
Q0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChz
dWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBh
ZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICsz
NjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJl
c3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVz
cG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+
CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAg
ICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQg
ZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFu
b3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRz
IG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1c
Im5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwi
IGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmlu
ZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMw
ZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFn
ZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBh
cyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQg
QVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFz
Y2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsK
KyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog
IiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVy
bC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2Np
aVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRh
LmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAg
ICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBz
dHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRh
ID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJl
c291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5n
LCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVv
dGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAg
ICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1s
RGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAg
ICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAg
ICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93
IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENS
TEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZl
OjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAg
ICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5n
dGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0
YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAg
ICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAg
IG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgp
OworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAg
ICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUg
KGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNj
aWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwot
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0
cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRt
bERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBl
YWU0Y2IyZDBiZGI4MDE1ZS4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4YTcyNDE1MjMwZDEwOWIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7
CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50
Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5h
cnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQp
KTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGlu
ZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5l
eHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0g
MikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhh
dCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMg
c3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4K
LSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVu
Z3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBs
aW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRo
ZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRl
Y29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNv
bnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
KCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSAr
MTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQ
YXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZUFz
Q29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNv
ZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBk
ZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUo
KSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICgh
ZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29u
dGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBk
YXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29u
dGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJp
bmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250
aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8v
IEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ug
c2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUg
d2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3
I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0
ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNGYyMjhlOGQwMzg5
YjhiOGNiN2Y0MTQ4NmZkYjc4MWM5YmY2NWJkMi4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRi
YTMzOGE2NzMzMzVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3
YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQx
ZDU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwm
IG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRy
KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAw
YmE5YjE3NmYuLjlkMmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNo
ZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0
dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVk
IHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBv
ZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9
CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEzICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
CiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRD
YWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAv
LyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBz
aGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQor
ICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0
aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVs
eSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNl
ZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQzN2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYx
NjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5k
ZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjlhZDc3MTNjNjAz
YTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmlu
ZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1
cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENh
Y2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRh
dGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJy
ZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpA
QCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Z2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsK
KyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxs
cHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnko
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQo
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2Vi
ZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMTU0ZGI4Y2JhYmYzZDVhMzhl
MDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNM
b2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAg
dmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBw
aW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9t
RGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9v
bCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAg
dmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRh
RnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9u
dERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
YWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0
ZTBlNmY2YjU0Mi4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSAr
NDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBk
YXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0g
JmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIg
KzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUlt
YWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNb
aW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNj
cmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQor
ICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMp
ICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRh
LT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYo
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAg
ICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUg
c3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0
YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50
ZXJuYWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAg
bV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBk
Y2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uZDUxM2UxNmNiYTVhOTcwN2MzM2FmYzc5
MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdp
ZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQg
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNl
ZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0
YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBA
IC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODQy
YmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRh
KHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVw
ZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRo
ZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7
Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygp
OwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGls
ZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0
aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVtZW50
YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5
IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5p
bmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kg
PSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xp
Y3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEg
PSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChp
bmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNE
YXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1
NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRj
YmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVz
Q29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFs
bENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0
Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRp
bmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3
MmEzZTJhMDEwZTc4MTA4OC4uNTU2OTY0M2NkNWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWEx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZp
bmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2Rl
ZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewog
ICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3
QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7Cisg
ICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZl
ckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4u
MjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQog
ICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0
dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5z
aWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFj
ZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5
UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291
bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBp
bmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29k
ZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApp
bmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5iMGY3NmE1MDk2
MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBT
dHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9k
ZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3Qg
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBu
ZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBV
c2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxs
cHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+
c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkp
OwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmgKaW5kZXggZThjMTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJh
OThlZWRmNzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAg
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1
NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAt
ODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAg
ICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkx
LDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZG
b250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRG
b250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3
ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01
MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6
ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAg
ICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVt
ZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRp
bmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li4x
ZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVu
c2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFz
aDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlw
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2Mz
NGJjZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNv
dXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4
NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQy
ZTkxM2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVk
VGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklE
CiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAg
ICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNl
Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBj
bGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12
b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3Zv
aWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRl
QnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1l
dHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5o
CmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgz
MjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBj
Li5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02
MSwxMiArNjEsMTYgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29u
c3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBD
YWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBt
X3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRT
aXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAg
IG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNv
ZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIy
ZjdlYzVlMDA2NTRjZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJk
NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFs
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRl
eHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0
NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3
MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJp
dmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6
U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VC
ZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVG
aWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVl
c3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
c3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVl
N2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGlt
dW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8g
YmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25z
dCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2Up
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVk
VVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3Rv
cmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTEx
Myw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJl
c3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJs
b2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNo
ZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNr
ZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tl
ZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8q
IHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdCht
X3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1
MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmZmNDBjNDE2Y2M2MTZlOTJi
MTMwN2JhYmI3ZTM0M2IzN2U1NDYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQ
cmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CkBAIC0zNyw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2Fk
ZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcw
LDcgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2Nv
bnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291
cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRl
eCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li4yM2M5NzI0MmJiOWZi
NzUzZmFiNzQzN2FmN2UwOGEwOWRhOTYyMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGVn
YWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQ
cmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6
ZSgpKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5h
bERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJj
ZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2
aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBt
X29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAg
IHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdU
Rk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZp
ZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRl
ciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJl
dmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZp
ZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKaW5kZXggMTgxNzUzMWNiNjk4YjhhNGVkYTI4MTBjYzQ2NmM4MTY5Y2Ix
NjNlYi4uY2VkNTYwOWMwMDVhNTM1MmIzM2QxMTk4ZjQ1Yjk4YmE4NGE3MWQyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBGcmFtZTsKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNl
cyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5N2UwMWI1
YzY5NzZkNjdmMGYzYmRmY2VkZWM2YWJjZjA0ODUyYzQ0Li43Yjk2MWRiMDQwNGMxZDE5NzM2MDc0
ZTRhOWQ2YzFkYzk0MjEyMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NzMsNyArMTk3Myw3
IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFu
ZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5
IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4g
RG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQg
YXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRh
dGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91
c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNl
clN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXgg
MTY1YWE4MDU4YTAzOTBiNDUxNTc5YTE0NzYxYmQ4Njc5NDkzNjQzMy4uMDFlMTZkZDk4ZjRkZjBj
ZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxp
emVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5n
IHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jl
c291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmws
IGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6
OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3Ig
KGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwg
Y29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNo
YXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgog
ICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVu
dHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7
Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFM
OjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNl
cy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1
cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjph
ZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1h
ZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1f
cmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZm
ZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUy
OWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsK
IAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhl
MjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAog
c3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmls
ZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJl
NTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEz
YTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFS
ZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFy
c2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFS
ZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVE
YXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhd
LT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZp
bGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmls
ZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRp
Y19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5k
aW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2
MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAw
OwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVF
bnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcAppbmRleCBiYTE3ODcyNDcxYWUyODY0Zjc3MDgyYzQ3ZDY3ZjI2M2VkNWRmOTU4
Li41OTZhZmI4ZTkxODg4YzJhYTY3MmZjMGU1ZDA2Y2I2NDQ5ZGVkYTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcgUGFzdGVi
b2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBy
ZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDE0NzY0MWRkYjY1ODg1ZTM5YTgzYzZhNDU1NTZi
MWVhYTZiMzY1ZjcuLjRlMjc4MmQ5YmFjYjlkMDE5ZDEyMDAyMGRmZjAxMTZlMjUyMzJkMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJh
Z0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJv
YXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50
KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZv
cm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+
IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0
YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRh
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpA
QCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hp
dmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAh
UExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xp
ZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwor
ICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAj
ZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXpl
OwpAQCAtMTQzLDcgKzE0NCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkQnVmZmVyIHsKICAgICBTdHJp
bmcgY29udGVudE9yaWdpbjsKICNlbmRpZgogICAgIFN0cmluZyB0eXBlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiB9OwogCiAvLyBGb3IgcmVhZGluZyBmcm9tIHRoZSBwYXN0ZWJvYXJkLgpAQCAtMTY0LDEw
ICsxNjUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJl
YWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZl
cihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApA
QCAtMTgyLDcgKzE4Myw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmly
dHVhbCB+UGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFz
dGVib2FyZCB7CkBAIC0zMDgsNyArMzA5LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25z
dDsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6
ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC0zNDAsNyAr
MzQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNG
b3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmlu
ZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25z
dCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVj
aygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAj
ZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjIwY2Q2MWU3
MTEyMTMyMWNjNDZkMDc3MTk5MWFhYzVhYTQ3NTU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsK
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAg
cmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihvdGhl
cikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTgwLDcgKzgw
LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYm
IG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRh
U2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9t
U3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURh
dGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIo
V1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsK
IH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0
cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JN
b3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQg
UGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1v
dmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOwor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYo
KTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBA
QCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZm
ZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwot
ICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3Rk
OjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8
fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0
YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAy
YmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5jNmNiYzc5MGM3ZTA1ZjMx
NDgyMDVmYzVhMWNjNWE0NjgzYzZkNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBTdHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGN1
c3RvbURhdGE7Ci0gICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+
PiBwbGF0Zm9ybURhdGE7CisgICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwpAQCAtNjAsMTYgKzYwLDE2IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAg
ICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmln
aW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURl
Y29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAg
ICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRl
U3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7
CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFj
aFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYp
IGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVh
Y2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGU3NzlkYWVh
ZTY1OTUzNDE4ZDkwYzE3NTAxMmQ1OGZiOTY4YTUwMGMuLjliMWQ0Yjk1ZWRmYmRmYTA1OTU2YTM5
OTA3MWFiOWZkOTE4M2I5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9h
cmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25E
YXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC02Miw3ICs2
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmly
dHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRo
c0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3
Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRX
cml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAg
ICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1M
Rm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlYjQxYTY4Y2M1YWY5MjJlODgyZWMy
NjhlZGIyZTk5MDVmNDNjMjQ0Li41MjcwYzU5ODQzNTUxMDRmOTFhNWNlNTQyMjIzYjQ0OWMyYjUx
ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApA
QCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1
YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZv
cm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBo
YXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShj
b25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0
aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFl
N2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRiZGRmMDdjZjYxNjZhNTg2MGJh
YzA3NDYyNmQyOTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVy
dGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBAQCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFy
ZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEuZ2V0
KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAg
LTIyMSw4ICsyMjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQobV9zdGF0ZSA+PSBTdGF0
ZTo6Q29udmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZl
cnRpbmcoKnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFz
Q2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2
ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlmICghbV9wcmV2aWV3RGF0
YS5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAgIGNsaWVudC5wcmV2aWV3
Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLmdldCgpKTsKIAog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBAIHZvaWQgUHJldmlld0NvbnZl
cnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAg
IH0KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hlZENvbnZlcnRpbmcpOwot
ICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcHJl
dmlld0RhdGEuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3RXJyb3IuaXNOdWxsKCkp
OwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7
CiB9CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlld0RhdGEtPmFwcGVuZChkYXRh
KTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAogICAgIGl0ZXJhdGVDbGllbnRz
KFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2Uy
Yi4uZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRhOWY3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAt
NDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0
IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcHJldmlld0Rh
dGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0
aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFj
Yzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3Qg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFk
ZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMDJlYTNlYTg5YzI2YmJlNjY1NWZj
ZTYwMTBiMDIwM2MwZDJkNDE5Yi4uNmY1MzBkMTMyOWJiZmNlMTZhOWRhN2FkMDE1ODljYTUyZWQz
MDdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNywz
MSArMzcsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Cit9CisK
K1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Cit9CisKK1JlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHByb3ZpZGVyKSkpOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpID0gZGVmYXVs
dDsKKwogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgp
KQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAjaWYgVVNF
KEdTVFJFQU1FUikKQEAgLTczLDMxICs5NSwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
ICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwog
fQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0
YSkpKTsKLSAgICB9Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlKGZpbGVQYXRoKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7Ci19
Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywg
c2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEw
OCwzMCArMTA5LDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0
YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJp
bmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgp
IGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29u
dGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ug
b3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlv
bnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIg
Y2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5j
ZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVl
OwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVy
bjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGlj
X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
dGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUo
KSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
c2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0g
Y29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMu
Y2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09
IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4g
bV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWlu
dDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0yMDcsMTAgKzE5NCwxMCBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwor
ICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0
eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7
CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNl
Z21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5z
aXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIx
OCwxOSArMjA1LDE5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rvcikp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0
YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9z
aXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
QEAgLTI0OCwxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29w
eSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdt
ZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdt
ZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBl
bmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7
CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQo
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBw
cm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNv
bnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTgsMTIgKzM0MCw2
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAg
cmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5B
QkxFRAogYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsK
QEAgLTM3Nyw0MSArMzUzLDEyIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2
aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNp
ZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9
LAotI2VuZGlmCi0jaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVz
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlm
Ci0jaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgp
OyB9LAotI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlk
ZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7
Ci0gICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQot
Ym9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2Vu
ZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSgpKSwgc2l6ZSgpIH19OwotfQotCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShj
b25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhl
cikKQEAgLTQ2MSw3ICs0MDgsMTIzIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNp
emVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91
cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVu
dC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9
KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1
ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8
IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1
ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkp
CisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdt
ZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwor
fQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQor
eworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7
CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGlu
Z1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsKKyAgICB9CisKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRp
cmVGaWxlKGZpbGVQYXRoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KmJ1ZmZlcikpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsK
K30KKworV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
ZWNvZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKK30K
KworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCit7CisgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworI2lmIFVTRShDRikKK1JlZjxE
YXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRh
dGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR0xJQikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNl
Z21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYg
VVNFKEdTVFJFQU1FUikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZWZQ
dHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworUmVmPERhdGFT
ZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShQcm92aWRl
ciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRh
KCkgY29uc3QKK3sKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAorICAgICAg
ICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIGRhdGEuZGF0YSgpOyB9LAorI2lmIFVTRShDRikKKyAgICAgICAgW10oY29uc3QgUmV0YWlu
UHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdl
dEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICAgICAg
W10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBbXShj
b25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCisjZW5kaWYKKyAgICAgICAgW10oY29uc3QgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtd
KGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJv
dmlkZXIuZGF0YSgpOyB9CisgICAgKTsKKyAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBt
X2ltbXV0YWJsZURhdGEpOworfQorCitib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKK30KKworc2l6ZV90IERh
dGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVf
dCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ4MCw3ICs1NDMsNjAgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBz
ZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJl
dHVybjsKKyAgICBpbml0aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKworU2hh
cmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3I9KFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBtX2J1
ZmZlciA9IG51bGxwdHI7CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmluaXRp
YWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2J1ZmZl
cik7CisgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hh
cmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgIC8v
IG9uY2UgY3JlYXRlZC4KKyAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5p
c0NvbnRpZ3VvdXMoKSkgeworICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhcHBlbmQoYnVmZmVyKTsKK30KKworUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSgpCit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Cit9CisKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0
YWtlQXNDb250aWd1b3VzKCkKK3sKKyAgICByZXR1cm4gdGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICByZXR1cm4gdGFrZSgpLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1
ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworfQorCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhp
blNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdU
Rk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldp
dGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXpl
KCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTQsMjYgKzYxMCwxNiBAQCBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0
YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNp
emUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWdtZW50
LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0
YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVu
dCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwg
c2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgp
XSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9j
YXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAg
Y29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzOSw3ICs2NDUsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1
ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZTljOGVkMDg5MmQxNTg2MWEwMDdkYjVkY2UwZjVk
NzU0MmNhMTQ4ZS4uNzYwZWI3OGExODY2ZmVkMjNiMzA0M2NkNWUxNGFkNWNlZGRlNDcyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw2ICsyNyw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjIsMTQ2ICs2MywxMjUg
QEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
aGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBi
ZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3Rz
LgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFT
ZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBz
aXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7
IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1h
cHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBV
U0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFw
cGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRh
dGFSZWY+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0
ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmKTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0
YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNl
Z21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVu
dHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQg
dGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRl
cmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAg
ICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0
YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9p
ZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZl
IChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBl
eHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVz
IHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVy
IHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9
Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
KTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBG
dW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3Qo
KT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0Owot
ICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
LSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFByb3ZpZGVyJiYpOwogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNl
Z21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5
IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFs
bG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0Zp
dCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01h
cHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0
IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7
Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0
IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYK
LQotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURh
dGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
UmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVu
dChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlk
ZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJv
dmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAg
IFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0
ZUNGRGF0YQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xh
c3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZl
cj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0Rh
dGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Q0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRy
PEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAg
IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlm
Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFBy
b3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURh
dGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdo
ZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0
b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZm
ZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAv
LyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZs
YXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsg
fQorICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7
CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIHVzaW5nIERhdGFTZWdtZW50
ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRh
U2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0y
MTAsNTMgKzE5MCwxNjMgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0g
VmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4o
KTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29u
c3Q7CisgICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5z
aXplKCkgPT0gMTsgfQogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhp
cyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBT
dHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9I
ZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0Owot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhcios
IHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29s
IG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIoKTsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsg
fQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7IGFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYp
OwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRl
cyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsK
ICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXpl
IHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENG
KQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAot
ICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJu
cyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rv
cjx1aW50OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
IAorICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0
dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgorICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlv
bikgY29uc3Q7CiAKLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNl
Z21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJs
ZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVj
dGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2Rz
LgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgewor
cHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBp
ZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjpp
c19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIo
KSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9
CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBl
bnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZp
bGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElP
TikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQor
ICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoU2hhcmVkQnVmZmVyQnVpbGRlciYmKSA9IGRlZmF1
bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsg
fQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlcihzdGQ6OmluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQor
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0b3I9KFNoYXJlZEJ1ZmZlckJ1aWxkZXIm
JikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9w
ZXJhdG9yPShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAg
IHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKSB7
IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorCisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVk
QnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgp
IDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgU2NyaXB0QnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsK
KyAgICAvLyBDb3B5IGNvbnN0cnVjdG9yIHNob3VsZCBtYWtlIGEgY29weSBvZiB0aGUgdW5kZXJs
eWluZyBTaGFyZWRCdWZmZXIKKyAgICAvLyBUaGlzIGlzIHByZXZlbnRlZCBieSBTY3JpcHRCdWZm
ZXIgYW5kIEZldGNoQm9keUNvbnN1bWVyIGNsYXNzZXMgKGJ1ZyAyMzQyMTUpCisgICAgLy8gRm9y
IG5vdyBsZXQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3Ivb3BlcmF0b3IgdGFrZSBhIHJlZmVyZW5j
ZSB0byB0aGUKKyAgICAvLyBTaGFyZWRCdWZmZXIuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihj
b25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXImIG9wZXJhdG9yPShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5zdXJlQnVmZmVyKCk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NCwy
MyArMzU0LDI0IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlEYXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1
YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNpemVfdCBz
aXplKCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90
IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBz
dGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lm
IFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0
IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIo
Y29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2Qz
MTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uM2Y3ZmJhNDFhNGExZWZiMTFjY2RmZmQ1NzI2NzhjZGZm
ZTUzZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRh
LndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5
cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUo
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4
IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmEwMzljMjUyNWVkNWZl
NjM1MGNjYjBhMWFhMzY1MGQzMTk4NmY2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVi
bGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1
c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZv
aWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIo
KSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBj
MDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93
UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0
KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGlt
ZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1Bs
YXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRh
LCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5
aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1
NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMz
Njk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRB
cnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAg
IGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZv
cm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0
ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFs
OwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5
LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi40
N2MxMGY5ODAyMzRjOWFiYzYwODRlYzIxMDQ1NmY2YjE1NDgxOTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zNSwyMyArMzUsMjAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYgZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRhdGEp
OwogfQogCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmlj
aWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhp
cyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBj
b25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09u
ZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFp
blB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEp
KQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhj
ZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OSw2IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAg
ICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2Qz
MDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2
N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVi
b2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShN
QUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZm
ZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZl
cnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tO
U0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBb
aW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0
aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2Vu
ZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFk
VHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggZWU3YmQ0YjNmZGJmOWI3YmM2ZDhkYTBjNjM1Nzc1
Yzk1ODViNzE2OC4uYWQ5NmY3ZjUzYTJkY2MwNGQyOTMyMTAyZWVkODE5ODBmYmZkNTAxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBz
aXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJ
bnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxj
b25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIg
X3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0g
KHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5T
VUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk1LDIwICs5NSwxOSBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWlu
UHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRy
PE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAog
ewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRy
LCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBi
cmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIApA
QCAtMTE5LDcgKzExOCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxO
U0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBh
ZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21l
bnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXgg
NWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUx
MjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3
IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUg
YnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFu
eSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9
IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFm
Y2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNp
emUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0
dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAg
YXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBp
bml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
ICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9v
bCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwog
CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5
SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VO
QyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1
cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRh
dGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0
RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERh
dGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3
ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJy
YXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9
IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25E
YXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAg
a2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERh
dGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkg
fHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtl
eUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmpl
Y3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAg
Ly8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUg
YmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBr
ZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAg
ICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3Rv
cnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVl
YWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTcz
ZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5
ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRB
cnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rl
ckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwg
bV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgw
NTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5j
b2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJy
aWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3
OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMy
LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFj
ay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rlckds
aWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50
QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxH
VmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRl
cik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0
ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCks
IG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5n
ZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCks
IG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5n
ZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5
OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0
MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2Rlckds
aWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDJkYmEw
MTk1MjlhNzNkM2ViNGEyNGEwZjYxMTI4ZjdhMTg4NzgwZTQuLjg3ZDc4NGJjNjY1MThmYWIyNmIz
NDY2M2E0NjQ0MDA5M2RlMjcxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIFJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAg
ICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVl
X2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxT
aGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3
YzQ4NzhhYmVlMTAzZmJhZjIxZjU3MC4uMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIw
N2I0NWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGUKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxp
dHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZv
bnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2lu
IG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3
cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA3NDQyMDA0ZjAwYjVkYmEyN2YzYzMy
ZTY2N2IzNmJjY2Y3ODUxNGNkLi40YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEy
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJs
ZSwgSW52aXNpYmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0
ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJz
dGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2li
bGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGb250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4
NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3
NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBj
bGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNl
cyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBD
cmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7Cisg
ICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAg
IFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVm
PEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDJjZjQ0OGJlYTJm
YTZhZTRkNDdmOTY0MDAyYjNhOTA2YzAxMjkwNjcuLjY3NWUyNGI0MGFjN2FhZGU3NDA4NmYyNDJl
YWQwMTUyMjFjMDI0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFN0cmluZyBjcmVhdGVBVkND
b2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgQVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICAgICAgLCBoZXgocGFyYW1ldGVycy5sZXZlbElEQywgMikpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNl
QVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTA6MjAxNAogICAgIC8vIDcuMy4y
LjEuMSBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0IGRhdGEgc3ludGF4CkBAIC0yNTUsNyArMjU1LDcg
QEAgU3RyaW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgICAgICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5n
KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNE
ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYt
MTU6MjAxNAogICAgIC8vIDguMy4zLjEgSEVWQyBkZWNvZGVyIGNvbmZpZ3VyYXRpb24gcmVjb3Jk
CkBAIC00MzYsNyArNDM2LDcgQEAgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VE
b1ZpQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogICAgIHJldHVybiBwYXJh
bWV0ZXJzOwogfQogCi1zdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNv
ZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUg
Zm9ybWF0IG9mIHRoZSBEb1ZpIENvbmZpZ3VyYXRpb24gUmVjb3JkIGlzIGNvbnRhaW5lZCBpbiAi
RG9sYnkgVmlzaW9uIFN0cmVhbXMgV2l0aGluCiAgICAgLy8gdGhlIElTTyBCYXNlIE1lZGlhIEZp
bGUgRm9ybWF0LCBWZXJzaW9uIDIuMCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuaAppbmRleCBhZjc1YzYyZDExNTgwYWQwMzhkNzE3YmU5NGIz
MzFkMzlkZGRhMjdhLi5lZGZlY2IyNmQ4OTQ2N2EyM2QxZjU3MWNiYzVlOTFiMmZhMzQ3ODVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5o
CkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb3VyQ0M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKICAgICB1aW50OF90IHByb2ZpbGVJREMgeyAwIH07CkBA
IC00MSw3ICs0MSw3IEBAIHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1BhcmFtZXRlcnMo
U3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+
IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7
CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwog
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25z
dCBBVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBAIC01NSw3ICs1
NSw3IEBAIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5n
Vmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJz
ZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+
IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVI
RVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVj
dCBEb1ZpUGFyYW1ldGVycyB7CkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1ZpUGFyYW1ldGVy
cyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBw
YXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJl
Y29yZChjb25zdCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVE
b1ZpQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4
ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5Mjll
NjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVU
eXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
LCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9k
YXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQog
ICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4u
OTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVs
PiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5
LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8
TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwo
UmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7
CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYw
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90Piht
X2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCks
IDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwog
fQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwg
V1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNy
ZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1v
dmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
Y3BwCmluZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTcz
YjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7
IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50
MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUp
CitzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNl
dCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zm
c2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJ
bnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1
ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBi
b29sIHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9m
ZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXpl
b2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0
b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50
MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNX
T0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNp
Z25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29s
IGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBz
Zm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50Lmlz
RW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50
LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5
NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250
OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250
KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0
YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIg
aXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZG
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09G
RiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQg
KGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVy
d2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4K
LWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhf
dD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVy
IGlzIGEgV09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1
cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1
ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMs
CiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5
Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGlj
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFz
ZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
U3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVy
LnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0
byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmlu
ZGV4IDE2MTFiYWFjNDM3MGI1ZmM5OGEyOTIwNzcyMzVkNDVlMDJiNWQwYmEuLmZjOWFhOTlhNjlk
ZmFlODllNjViMmFiM2FmNDg5MTQwNzY4NWZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFN0cmlu
ZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1h
dERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGlj
X2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGlj
dCwgQ0ZTVFIoImF2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQog
ICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25z
KTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1
dG8gcGFyYW1ldGVycyA9IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmln
dXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuICJhdmMxIjsKQEAgLTEyMiw3ICsxMjIsNyBAQCBTdHJpbmcgY29k
ZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNj
cmlwdGlvbikKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0
PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENG
U1RSKCJodmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAg
ICAgICAgICAgICByZXR1cm4gImh2YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9u
UmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7Cisg
ICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBh
cmFtZXRlcnMgPSBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0Nv
ZGVjVHlwZV9IRVZDLCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlm
ICghcGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTM3LDcg
KzEzNyw3IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRl
bnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1w
bGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1w
bGVFeHRlbnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
YW1wbGVFeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsK
ICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0
aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFw
YXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMu
LjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09O
LCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5n
IGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24p
OwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFU
eXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAg
aW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBp
bml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAg
ICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEo
KSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRh
LT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXph
dGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5n
IH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0K
ICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAg
ICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9u
cywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAg
ICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhw
aXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkg
c3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxz
ZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAg
ICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVx
dWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAg
ICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0g
ICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNz
Q29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBj
b250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVz
cG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVx
dWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpb
UEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0
aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShy
ZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBv
bmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAg
LTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBm
b3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNl
c3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmll
cjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkg
ewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtl
eSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5
czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRB
VkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0
aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6
c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRL
ZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRv
KiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAg
aWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChB
VkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAg
W3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVu
dGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9w
dGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJl
cXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMs
NyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFu
Y2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0
c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8
TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzEx
OTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVl
c3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNl
Y29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50
cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+
c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5i
eXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5w
dXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBt
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5
SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAg
ICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250
ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRp
Zmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtl
eVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
VU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtr
ZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwg
Y29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSld
ICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChB
VkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0
byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0
LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250
ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRp
Zmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtl
eVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9
IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250
ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRm
NGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDks
NyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dl
YkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBh
cmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVw
ZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21w
bGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0
ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENI
X1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5
bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBA
IHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxv
bmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21f
bG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxE
YXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAog
ICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQppbmRleCAxYTQzYzdkZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEz
Li5hYmQ4MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIx
Myw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEo
U2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBz
ZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVz
ZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3Bh
cnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRh
UGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEz
MmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5
NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsK
LSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
IAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAg
IFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
aW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVk
ZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsK
IH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwg
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZm
ZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50
Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFz
cyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAog
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
KQpAQCAtMjM4LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAo
YXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFV
UkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3Vs
dCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1
LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAg
c3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3Qq
IGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFS
ZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgy
OTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZh
M2YwNGFmOWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMx
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3Jl
YXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YTsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9m
YWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0
NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODlj
ODU4YTNlNmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVBy
b3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9m
Zl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRC
dWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVk
QnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNp
emUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQot
ICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRp
SGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAg
CiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VT
b3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdl
RGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2Fu
IGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3ds
ZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2Vs
ZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlP
IGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0lt
YWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZE
YXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURh
dGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBD
R0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNv
bnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBv
c2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVz
ZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93
biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGlj
aAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBj
YWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxi
YWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRC
dWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNv
bnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAg
ICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCks
IGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5m
Zjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29k
ZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQo
KQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEo
KS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9w
dENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1
OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5
NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3
IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwg
b3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYx
MWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2
b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRf
Y2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byog
YnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAg
IGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRh
Q29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFj
OWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAg
UmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlD
aGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7
CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlU
YWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICBy
ZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1
NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRm
MjMzMDFhNzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVG
cmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWlu
aXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODEx
ZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0
OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25z
dAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5n
X2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlciht
X3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZh
Y2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
ICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBF
X01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJiYWVh
NWI4NDViZGVmYmI2ODZmZTI1MjU5MzMuLmI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTVi
MjkzYmY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkg
QEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QK
ICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkK
IHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVh
bWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmgKaW5kZXggZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5
MjM5YmI3ZjBkOGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRT
aXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBt
aW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAg
ICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8
R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKaW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1
MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMo
KSBjb25zdAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRh
dGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAg
ICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVy
OjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVu
KCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4
MjRkZmMxYzM4MWE1ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3
ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMzY2OSw3ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAg
ICBHU1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMg
ZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0Zjgo
KS5kYXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAg
ICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNp
emUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5t
X3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENv
bnRhaW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1
MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAg
Ym9vbCBpc1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBw
c3NoOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3Rh
dGljIHZvaWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBn
Y2hhciogZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVy
IHVzZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFy
a3VwVGV4dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRl
eHRMZW5ndGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4
dExlbmd0aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNl
ckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAg
ICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lk
IG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAog
c3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBt
YXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJy
b3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAg
ICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxv
YWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1
YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjMzMGJlMjEzYzdmZWZlZGIy
Zjc4OGI1YzFlYzQ0MWFmNzE5NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdT
VF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2Rl
YnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHBy
b3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFj
dENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJ
bml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9h
ZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChl
eHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYg
KHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0
Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAg
IG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03
MiwxMCArNzYsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwg
c28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0
ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsK
KyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAK
LSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7
IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVy
VHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMz
YTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQo
KSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVz
Y3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZm
ZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2Njdl
NDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4
YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1
bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpk
YXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMo
W2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQx
NzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNz
Q29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0Nv
cnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBj
b3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBn
ZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
R2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQx
Nl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0
IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
S2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBt
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09m
ZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5
cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgw
MQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJs
eVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBh
cnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jk
c1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJl
bWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFy
aWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZh
cmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50
cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcg
KzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAg
ICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50
R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNz
ZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1i
bHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkq
IGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9m
ZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0
aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50Owog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8g
VGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMg
YW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAot
ICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBj
b25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0
aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJv
b2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWlu
dDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlv
bnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRo
Q29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zm
c2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3
ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5m
byhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJ
bmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZz
ZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0
YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVN
YXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3
ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlx
dWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5k
ZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkw
YzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMs
NyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7
CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShj
aDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNo
MikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZl
ci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIs
NyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
VGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2Ugewog
cHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRF
bmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3Np
dGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlz
IGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRF
bmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
b25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2
X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxp
ZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90
IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZm
ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAg
IH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRh
YmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFn
ZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwg
R2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0
Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdl
SW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZv
cm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2Ez
ZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RI
ZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZv
bnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJl
d3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAo
d2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFi
b3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jv
b2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkK
IHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBj
b25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVy
Kj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVj
dG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250
IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAg
ICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIx
NWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJj
ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25z
dCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8
Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2
OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIz
OGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0x
MTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQg
Y292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292
ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFn
ZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJh
Z2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDog
U3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNb
MV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxk
IGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHlu
YW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5
cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0
U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBA
IHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxv
b2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAg
IGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2
X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChp
bmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50
XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2
IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNv
bnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0
aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBA
IHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZz
ZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0
dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVu
ZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBG
ZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmlu
ZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBm
ZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAm
ZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcg
KzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4
WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVh
dHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6
OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
ZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRh
YmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0
OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lz
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tj
b3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNl
IHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRz
WzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUq
IHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAg
LTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxl
KiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAg
IGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAt
MzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2Ny
aXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0g
ZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2
LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1
cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRM
aXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3Qq
IGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2
YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0K
LSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxv
b2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25z
dCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVy
LCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0g
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAg
IGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7
CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcg
ZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2
NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0
dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFw
PEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1
cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAg
ICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVj
dCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2
YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIg
PSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29u
c3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9w
ZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5U
eXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZv
aWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUg
aXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxl
KiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBA
QCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRW
ZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxh
dGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9w
ZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlw
ZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRW
ZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2Zl
NjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJj
ODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2
LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZv
bnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5n
IGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJj
ZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0
ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9u
dCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2Ny
aXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
c3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZh
cmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdz
PGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2
NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250
TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBm
b250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2Ug
PSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJv
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYy
MDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90
aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJl
dHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNm
ODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1E
YXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJl
c3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAg
IEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdP
UkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRj
LCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RP
YmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEu
LjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsg
bV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0
UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lk
IHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRh
ID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRh
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0
b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFy
Q3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRy
PEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2
MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3
ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVz
OjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkp
IHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdt
ZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAg
IG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250
aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2Vu
Y29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAg
ICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAg
IHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjFj
ODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFy
a2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0
YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQ
cm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3Qq
IGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+
bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtl
ci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJT
aXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNp
emUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVy
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVy
OworICAgIHJldHVybiBidWZmZXIudGFrZUFzQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAg
LTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlT
aXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVH
SW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZm
YjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4
MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQog
I2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OGNjMGU3MmFm
ODc2NTVlYmFlNmNhNWQ0Yjk3OGMuLmE3ZjQ1MDMyMGU5MDhjNmExZjVmMGY4OTU2MDkyYWUyNDc5
NWEyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CkBAIC0yNDAsMTQgKzI0MCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
dHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJU
RkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQ
YXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYg
cmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRl
clJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxU
b1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3ku
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJU
RigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5v
dFJlYWRUeXBlOwpAQCAtMjU1LDcgKzI1NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtz
dXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVy
bmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDlkYjBhYjM0YjI2MThhMDQwMmIwZDI0M2RjODcwN2EzNjc4MjNkZTMu
LmQ5ZjQ4ZWQxYjM0MDVkMmRlYTk3NzhjM2E2YzU3MmJjNTMyZmI5MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAt
NzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21f
cGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmIChOU0RhdGEg
KmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwog
fQogCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwog
fQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNs
aWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRl
bnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNs
aWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVu
dC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEg
PSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5
LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAog
ICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAg
aWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0
cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAg
aWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0
cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpu
dWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJl
c2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUyMSw3ICs1MjEs
NyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdl
JiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVU
eXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JN
SU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEu
Z2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJv
YXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
c2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDks
NyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJE
X1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNE
YXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9h
cmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAg
YXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAg
ICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRv
JiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4o
dmFsdWUpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwog
ICAgIH0pOwogCkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAg
cmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIGJ1
ZmZlckZvclR5cGUodHlwZSk7CkBAIC03NjEsNyArNzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
bmRleCwKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRl
bSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KaW5kZXggMjE2ZWRkODQ3NWUxNDg4ZGI5ZWE2MTBmMTIzYmFhODE5ZTZiMzFmYy4uYTE1MTZh
ZTM0ZjgyOWJhNzJjYTU2MWQ5NWU0ZmM5NzhiOTUyZDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBw
ZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQog
ewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRo
TUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTI2
Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVu
dChOU0ZpbGVXcmFwcGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbgogICAgIGlmICghUlRGRERhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFJURkREYXRhKS5wdHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBh
c3RlYm9hcmROYW1lLCBjb250ZXh0KTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjg1
LDcgKzI4NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAog
ICAgIG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZvclR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkSW1hZ2UudXJsLCBjb250ZXh0KCkpOwotICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZv
clR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBh
c3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgbV9jaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5w
dHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgaWYgKGF1dG8gYXJjaGl2ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVE
YXRhLmdldCgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKIApAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJl
ZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAg
cmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVy
cmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBh
c3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgp
CiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1J
bmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzc2LDcgKzM3Niw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRl
eHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRh
dGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRU
eXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBh
dHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGE3ZmU3MjU1NDM3NjY1
ZThiOGEwYzc0NTNkMzA0NzQ5ZDQ1NjJmNjcuLmI0OWFkN2MwNGE1MjgxODJhNTFiOGEzYTk4NGQ3
ZDkwNGQ2Mzk3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlw
ZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3QKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRh
IGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlw
ZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAg
ICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAg
ICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7
CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkK
ICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRh
KCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1
cm4gW21fcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlw
ZXMpLmdldCgpIG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2Vi
U2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0
Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWluZGV4KQogICAgICAgICBy
ZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGluZGV4LAogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBl
OnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAg
IH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA3LDggKzUwNyw4IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVi
b2FyZEN1c3RvbURhCiAgICAgICAgIGlmICghcGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5T
RGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8g
cGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERh
dGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5
OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAg
ICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9k
YXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1f
YXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1
ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwog
ICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3
cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlm
eSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAg
ICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAog
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBA
IC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21w
bGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9Owot
ICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICBy
ZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAppbmRleCAwYzkwODE3YzRlOWI0MWYzNDlhNDFhZTY0YjcxOTA2Yjk1MWViODlhLi42MjM2NGQ3
MTNjOTVhOWY4NDNjN2QyOWMwMWYwZGViOWFlNmQxNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0
X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJ
bkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZm
ZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1No
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50
cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+
PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRh
Ojphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCmluZGV4IGU5ZDM0NDNmOGI1YzY4MjQ0NjY1NmMxODgwNTY1N2NjMjlkMmQ4MzcuLjEw
ODI4MTEzMWY4M2U5OTM3MGZjNTA5NzgzM2NjNTBlZThhZGJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwog
Y2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgIHN0cnVjdCBFbmNvZGVkRmls
ZURhdGE7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3Jt
RGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFy
eTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRC
dWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFt
KCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0
cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUy
ZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291
cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURh
dGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFk
ZjEwNzBkYmI4MzgxOTI1MzY5NGFhLi44OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5
NzViNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsy
MTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwg
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAot
ICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFu
ZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAg
CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmlu
ZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBi
MzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAg
IDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3Vy
Y2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRh
c2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07
CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVz
aXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxl
ciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9Owog
ICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3Vj
Y2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwy
MiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZl
UmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZm
ZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhN
RTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRl
ciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAg
IC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBh
dCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVm
ZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0
dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlm
IChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBk
YXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0
YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9y
ID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rh
c2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFr
UHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0g
TlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEz
MCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRv
VGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5n
ZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEt
Pm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYg
KGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5l
bmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAg
ICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZl
ci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVk
Q29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3Rl
YWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50
TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpA
QCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVy
YXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpk
YXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0
YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0
N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcg
QEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9u
IGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBk
YXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1Jl
Y2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVn
YXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdT
ZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZl
RGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkz
MWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUw
Y2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9p
ZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47
IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0g
ICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsx
MzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGls
bCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQg
dGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5z
aXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJv
b2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICgh
Y2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3Vu
ZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhl
IGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBv
ay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7
CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMg
YSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91
dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0
YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0
KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFy
eS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4u
YWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03
OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJ
ZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1f
ZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxl
LCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25s
b2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThk
NWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQw
MzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
OjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlm
IChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENh
Y2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIo
Jm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
QnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXpl
KCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDczNjVmMDEwOTQ0
YTkyNmIwZWJjYTk5NmJkZGFlMTQ0OTUwZjYzZTMuLmY0OTg2YjAwMTA4YjE3OGY2NDdlNzZlNzM0
Y2EyYzNmNzNjMDc0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0
cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0cnVjdCBQYXN0ZWJvYXJk
RmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyArK2NvdW50OyB9Ci0gICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2Nv
dW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKIH07CkBAIC05NzgsOCArOTc4LDgg
QEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZm
ZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRh
KCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxl
Q29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
IAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDMwLDggKzEwMzAsOCBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmlu
ZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRl
bXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVT
dWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAg
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUo
KSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhh
bmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0
dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBp
ZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMw
NjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1
ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAt
MjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNl
LmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1h
a2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
VmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFy
cmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7
CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25z
ZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlh
S2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2Vy
dGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBj
ZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWls
ZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9
IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAg
ICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykp
KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3
N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAg
IG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlw
dEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRC
dWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5n
IFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29u
dGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVm
ZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNl
Z21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIp
Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0
ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4
IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJi
NDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxT
aGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRC
dWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVy
ID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0K
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVy
LT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5p
c0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxl
TWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlu
cyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4
IDQzM2Q5ZTFhNDVjMjk4ODU0MmIwNWU3NGI0NzE3YTc3MDU3MjhiYjYuLjJhNzEyNTQ3MThlYWVk
ZjUxYTQ0N2VjZTYyYzRjZDcxNmJiMDc1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRl
ICJGb250U2VsZWN0aW9uQWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIldPRkZGaWxlRm9ybWF0LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC03OCw5ICs3
NywxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAg
ICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAo
bV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
LnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29u
dGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250aWd1b3Vz
RGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0Rh
dGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEpOworICAg
ICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAg
ICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDEw
ICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li5kYWI3
M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJl
cXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAg
V2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNi
MGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNk
ODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsx
MzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQs
IEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNl
LT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZp
bmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNh
NDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0
U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFw
cGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0
b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91
bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFw
cGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZv
aWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApp
bmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4MDVjMjgxYjk0ODA1NDVhZTI2Li45YjExMmI5ZGIy
Y2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5n
QWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxCbG9iPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNl
aXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFj
ay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBp
ZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdl
KG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICAg
ICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKTsK
ICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRl
bnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNl
TUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShk
YXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsyMTcsNyBAQCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVy
KCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZl
cik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQg
PSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAg
ICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQodW5zaWdu
ZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVh
clJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAg
ICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBu
dWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQg
PSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9y
ZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAg
IGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vycm9yKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDA0ODQ2MjZiMmU1ZGZkZGE3Y2IxNmM0ZjU1MjJk
ZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEyZDgwMzc3NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIK
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNzIEJsb2I7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhy
ZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzcsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5n
QnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlm
MzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3
LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwK
ICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVl
c3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFs
Q2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVx
dWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRl
eCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFm
OTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0
LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0
dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3
Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVt
b3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpE
YXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93
cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBh
dXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAg
fSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRl
NGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjBiOWY0OWQzNjRjMjU5NWUyMjNiMzExNGRlYWZj
ZWU5MmE0MDBmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQg
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5j
aHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBp
ZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBl
bmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZm
ZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3Mo
Qm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTMwNiwxMCAr
MzA2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94
RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0
ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEu
ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3
b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczNCwxNiAr
NzM0LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikK
ICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlz
TWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEu
ZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2Vi
TG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAg
Ly8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMg
Z2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNw
ZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5p
c011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhLnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFy
dCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY5
LDEwICs4NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2Fz
ZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNo
ZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hl
LT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0g
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IHJlcAogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgp
OwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5j
b2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwog
ICAgICAgICByZXR1cm47CkBAIC05MDksMTEgKzkwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVk
RGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5j
aHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0
KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmICht
X2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBh
c3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4K
LSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAg
ICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxv
YWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1OSwxMiArMTI1OSwxMiBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNT
RVJUKG1fYnVmZmVyZWREYXRhKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBp
ZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERh
dGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI4OSwxMiArMTI4OSwxMiBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAg
IGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hl
RW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNl
c3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25l
dHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBT
dG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1f
bmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZm
ZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRC
b2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50
UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xv
YWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJs
ZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5k
ZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTky
OGI5NWQ4YzZmNTdiZTI1YzVmMjExODk4OWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQ
b2xpY3lWaW9sYXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
QEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWRE
YXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAg
ICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsy
NDEsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsK
ICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9y
TWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2Vu
ZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZk
YzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNjMmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQy
N2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlD
YWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAg
ICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0
Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwot
ICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2lu
ZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZv
aWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJh
OWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1
NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAg
ICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBz
aXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNj
MmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2
ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEs
NyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5m
b3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBX
VEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEg
Ym9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAg
LTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25z
dCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29y
ZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJv
ZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5
ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5k
YXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0
OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIo
KSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZm
ZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkg
fTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFk
ZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmlu
ZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4
NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQog
ICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7
CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFs
aWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8v
IDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hl
RW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3Qg
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmICht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVt
Q2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBw
ZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAg
LTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxl
dGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1f
b3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlS
ZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8v
IENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAg
ICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1f
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9j
YWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3
MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAg
ICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAg
ICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRl
eCBlNjdlMDViYTg0NzhhNTgxODMwZTM5NzA2OGIzMmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4
MTgzYzk2YjgzMTIwYjFmZWYxNTZiYjhjMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYx
LDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0
ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVz
dC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRv
IGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5k
YXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19t
ZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhj
ZWNlM2ZjZjRjYjMzZWY3MS4uMjlmNzFkN2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFy
ZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUo
KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZm
ZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNk
ODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJiMmQ4MDJhYzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xh
c3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0g
ZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsg
fQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZm
ZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkK
LSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAg
IDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0
aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQw
NmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUz
Y2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBz
aGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRl
U2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAg
ICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDcz
MDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0
ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
QEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFn
ZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwog
Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVf
dCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBj
YTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5
MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
V2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVh
c2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRh
KQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3Jl
YXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZl
UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAg
IC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0
YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0
ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRm
MTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2Vp
cHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmli
YmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250
RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFs
dWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0
byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91
cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwog
ICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUx
YmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAt
MTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0co
UmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXpl
ICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsg
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsK
IH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4
Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9v
bCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZl
cigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRo
aXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsg
KnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJl
ZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFw
KCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuaAppbmRleCBkYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUx
NjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVh
YmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAg
ICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFw
SW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3No
YXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4u
ZTkzZmQ4OWU3ZWZjMDc2YTliOTE4Nzc3YmQ2MDhjODM0NGI5NGFiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcg
QEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAg
ZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0g
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUp
KQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMu
c2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcg
KzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8
U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAo
dWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQog
ICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVy
IDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQu
cmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAg
ICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwg
WyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAg
c3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0x
NTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3Ry
aW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsK
IAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwog
ICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxh
dGZvcm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBz
dGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkp
OwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0
YSkKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUp
IHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0
Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3Zl
KGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1v
dmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgog
CiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQor
CitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3
ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29k
ZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlm
MDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkz
YWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
IGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3
ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAt
MTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENv
ZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21h
cnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFy
Z3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1
MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJz
V2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0
YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAg
Rm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwog
CiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQz
ZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAg
LTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJm
ZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcg
QEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRI
YXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5n
SW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0
dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVBy
b3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA2NDQ5MWUxNjJlYzZjNWJjZmEzZmM0Y2IyNDlmOGQ5
Y2NiNjM5YjIxLi4xYjliNTRiNjI3MTgxNDk1MDhmOTAyN2M4M2M2NzMyMDZiYTgyOTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ygog
ewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNw
YW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlv
bjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24o
eyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2
MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2Yw
ZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBA
QCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3Jh
cHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmls
ZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDA0Y2ZkMDI5YWM4NDgzYTdjMzIxYmE1NGIxMTgw
Yzg2ZmM0ZmQ3OGEuLjNlOTIzY2Y2NDlkOTZlMzRlZDJhNTFmOTE3MGQ1YjE3NDFmYTY1MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MTYwMCw3ICsxNjAwLDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNv
cmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAg
ICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGln
aHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpo
aWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6
bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQg
YWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9y
ZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAg
ICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0
LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdo
dC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmln
aW5hdGVkSW5BcHA6Olllc107CkBAIC0yMjIzLDcgKzIyMjMsNyBAQCAtICh2b2lkKV9zdGFydElt
YWdlQW5hbHlzaXM6KE5TU3RyaW5nICopaWRlbnRpZmllcgogCiAtICh2b2lkKV9yZXF1ZXN0UmVz
b3VyY2U6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
TlNEYXRhICosIE5TVVJMUmVzcG9uc2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgeworICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3Vy
Y2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiYgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bmlsLCBuaWwsIGVycm9yLm5zRXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNi
MDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUz
MTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVj
ZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcK
ICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0
a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAg
ICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1
c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0
PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4
NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4
Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+
bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcy
Nzc0ZTI2OTY1YjJkYmIyYTczNWUuLmJlMTQzNzBkZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRh
NWY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0Vy
ciAhPSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9u
cykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdp
c3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
cmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBh
dXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdp
c3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0
aW9uRGF0YSB9KSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7
CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3Vt
ZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkg
fSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMmUxMGRhNjZhYmY2NDg3MmY5MTNjMTMwNTNh
MmViN2RiN2E3ZmMyYy4uMTFjYzc1MjhhMWU1ZjZhODY4NGZjZTA2N2UwYWRhMDc0NjJlZTRjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5
ODMsNyArMjk4Myw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5
cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAg
ICB9CkBAIC00NDc3LDcgKzQ0NzcsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNl
dEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxl
VVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1
dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
bnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2Fy
ZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUw
OCw3ICs0NTA4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJk
KE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9t
aXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRn
ZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAg
LTQ1NjEsNyArNDU2MSw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRG
aWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAg
ICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBl
clJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NjEzLDcgKzQ2MTMsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NDYXRlZ29yeSBwYXN0ZUFjYwogICAgIGhpZGVET01QYXN0ZU1lbnVXaXRoUmVzdWx0KFdlYkNv
cmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNE
YXRhICpkYXRhID0gW3Bhc3RlYm9hcmRGb3JBY2Nlc3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVn
b3J5KSBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmll
cikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEo
cGFzdGVib2FyZE5hbWVGb3JBY2Nlc3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSk7CiAg
ICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRl
ZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZjQwMDBhNmI3MTkxMzVjMzQzYjRjZDA5
YzAyM2E2OGYyYzVlNzg1ZS4uZWFmNWVlYTk4MjNjYzRmMjU5ZWFkM2UwN2QwOTA4MzFkOWQzZjlk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzUsMTAgKzMzNSwxMCBAQCBEb3dubG9hZFByb3h5JiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdAogICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJv
eHkoZGF0YVN0b3JlLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0LCBmcmFtZUluZm8sIG9y
aWdpbmF0aW5nUGFnZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJl
c291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNv
dXJjZShwYWdlSUQsIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShy
ZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92
ZShlcnJvcikpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4NmYxYjMwNDRmYzg3OWQwOTNm
ZWU5NmNlYTZlYjEwYTUzODc2NjM0Li43MGI1N2I1NDQ1MzkyNjUzYjQyNmFkNzg4ZmIxMTIyNWI3
OTJhZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKQEAgLTEy
Myw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYg
Y3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2Vi
UGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
Jik+JiYpOworICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAog
ICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDE5NWMzYzgyMjA4OGE3
N2JiOWRmMTY3ODUwMTBmNDE1NmM2Y2M2NjEuLmVkOWQ4MzM3ZjQ3NGY3NzhlZjc2YjE5NGM2OTIw
YTExODRmMmE0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OSw3
ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8s
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJp
bmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFE
ZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBH
ZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODk1ZTdiOGNkNWI5
Mzk5MjY0OTM2MTVkOGY3NzU2Y2Y1ODdhODY1NS4uNzA3ZmQyZGU3YjdhYzBiMjYyZmQwZjc2NzNj
Mjg5ZDg4MjNhYmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC02Mzc3LDcgKzYzNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpbwogICAgIGRvd25s
b2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNz
KCkucmVxdWVzdFJlc291cmNlKGlkZW50aWZpZXIoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGY4OGJiNWI3OWViYzZmYTJhOWU4OTY1NDMzMTRmMDIw
MjhmNjVkMi4uOTAyMzdhZTU1ZmY5M2RlNWI5NDc5MTY5NmUxMzlhYjE1ZTM4NzM0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFz
cyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVy
OwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFz
cyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKQEAgLTExODMsNyArMTE4
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2
b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpOwogCkBAIC0xMzc1LDcgKzEzNzUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYpOwogICAgIHZvaWQgcmVz
dW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKICAgICB2b2lk
IGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNl
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5n
ZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZj
NDdiZWYwNTFkODBjMTZiZDEuLmVkOGNiNjUzZWNmZGQxMzQ3M2VlMWQyYWY1MGJhYTdhNmY3YTEw
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBA
IC0xODcsMTAgKzE4Nyw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2Vu
dCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEp
Ci0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAg
ICAgbV9zeW5jRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTUsMTQgKzIxMiwxMSBAQCBhdXRvIFdl
YlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAt
PiBFeGNlcHRpb25UeXBlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5nRm9y
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAg
ICAKLSAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0g
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+
ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAorICAgIGlmIChpc1N5bmMoKSkgeworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEuc2l6ZSgpOworICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS50YWtlQXNDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6
ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tE
aWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxv
YWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEz
MDg1MjY3Li5kZDZiNzI0MTBhZGQ0ZWY2MzFkMjgwNjllMTRhM2YyYTAwYzVjY2IyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC00Myw3ICs0Myw2IEBA
IGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlciBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggM2IwNGE4MzNkYmUwYjZiNjZlZTE0
ZDNjMzAwZjMwNjg3MThiZjJjZi4uNWM4ZTNiOTJmMDg5OTJlZjRkYWQ2MmIxNzdhODJmMzE2MDhi
YmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlk
Q2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xp
Y3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNV
SUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGZhYzllN2ZiNzhiZWUwZjYyOTQ1NjcyZTNiYjc0Yjll
MDUyMGUzMGYuLmI2ODRlMWM5NGVhY2I2NzI4YmIxMzA2OGNiNjk1MjI3MDFmYThmODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAg
LTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9u
RGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRW
aWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURh
dGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVM
TCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxMmYzYTE1YTQzYjhhYzRkMTUxZmYzMDNjM2M1Zjc3ZDEz
NTMwY2JlLi45OWFlZDAzNjg4ZTBlNWM2MTc0NzkwZmRkZDhkMjUwZTlhYjcwYTJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0Miw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZv
cldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNB
cnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVi
b2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGlu
SXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9t
UGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlm
IChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIu
Z2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAg
ICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NjUwLDcgKzY2NTAsNyBAQCBzdGF0aWMgQk9P
TCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3Jp
Z2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzYyMyw3ICs3NjIz
LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFX
aXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygi
U2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBz
aGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmls
ZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQ
TkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsg
ZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdl
UE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0
OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmll
dzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZGQ4Mjk1M2I5
MGY0ZjEzYmRiOGNhNzZjNDI4ZDBjMDcyYzBjNWRiOS4uN2E4ZmFjZDMxN2EwNjM5NmQ2M2I4ZGVl
YzY1NzFlNTUxM2VjNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpp
bmRleCBlNDQyN2UyYzIwZGYxZWFjYWE0MWQwMjM1N2U4N2ZiM2FlYzE3MGVlLi5jYTZiODczYjFj
ODNmNWE1MDdiODVlYTBmZjMxY2VkYWRkMWFhYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcg
V2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRl
eCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5
NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1w
bGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2Fy
ZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBE
cm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBX
ZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAw
YzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAt
ICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5n
RGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRp
bmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6
OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQy
LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0lu
RWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlw
ZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9y
UmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAg
ICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAg
ICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVi
b2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVb
dHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAg
ICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYy
ZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcg
KzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5n
ZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBp
ZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5
UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBw
YWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmco
KSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBl
PEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRl
bS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRh
Nzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQ
YWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdp
bGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAg
IGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92
ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5h
MzRlMjEyZDA3YWYyZmY1NzNlMWE4YTM0MGVjMWQzZmNlYjQyYTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1
bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSBy
ZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVl
c3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihk
YXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJl
YWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBp
ZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAg
IGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBj
aGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VT
aGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1
ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5
aW5nKGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCBy
ZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAg
ICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVz
dCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNv
ZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgp
KSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVl
MDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEz
N2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBA
IC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6
Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0g
MCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsK
KyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA5NGQ5ZDJjYzNlYjI4ODBjZGNmMjJj
MDcyYTM5YTk4OTU1ZmQ0NDMwLi45OGE2ZTJlN2I1N2U1MjMxOGY0MmM4Y2QxN2U0ZjBkZTA1MDk0
MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciBy
ZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0
ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRf
dCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9u
c2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFs
aWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29u
dHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRD
b250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2Rl
ZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQog
ICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZGM1NmQyYzY2ZWQ4NmI5NjI5NTBhMzQ4
MjA4M2UzNDU4YjMyYjUyYy4uMDhjZmJiNTUwZWRjYjU2YzU5OTdhMDQzNmMyOTY1M2VmMGU4MDNl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTQwMywxMCArNDAzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9t
YW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLQotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChi
eXRlcywgbGVuZ3RoKTsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywg
bGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDM3LDcgKzQzNCw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1T
dGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJl
YW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEucmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtOTI5LDggKzkyNiw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRl
cmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAg
ICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3Ry
ZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS5n
ZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQzLDkgKzEyNDAs
OSBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAKICAgICAvLyBE
ZWxpdmVyIHRoZSBkYXRhLgogICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICAgICAg
YXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEudGFrZSgpOworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+
c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNo
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5k
ZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uNzMyNzQxZDk1ZWU2
YTJiNjU2ZjNkOGMwOGM4YWZmYmE3ZTJmYWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNw
b25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAg
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAg
Ly8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhl
IHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2
MjhiZi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0g
ICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEp
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAg
IG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6Omdl
dDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90
JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsK
LSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRS
ZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRC
dWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgp
OwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQz
NjdkNzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBl
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29s
IG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFs
c2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRh
PiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAg
ICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggZGYyNzhhNzg4NGJhYzg5ZDVkMTVmN2RjNjQ5ZDY2ZDgwNTA0YzFmNC4uYTAxMDNiMDJh
MGY0ZDRhOTFlMTdmMzUyYmY4ZjlmMTA1MjVkOGNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFn
ZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2Fy
ZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNGM0ODg5
NzYwMTIyYWY3NmYwM2I4MGM0Zjg2NjJhMTIzZjRkOTE3ZS4uZTE2YjBjZjM4MTgwNjExMGRiYzZl
MTdlYjc1ZDkxZDNlNGIwOWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODgsNyArODgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9T
dGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNk
Nzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291
cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJj
ZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0
YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxv
YWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA2MGMyMDdl
ZDBlZWE4MzZiNDg3MGRkYTdjNmJiMzBhMTQ1NGNhNDk3Li40YzY2NmRkNDBkNWU5ZDQ1MWExZTA2
YzExZmQwODAwMjdhOThiMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5h
bWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNo
ZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwog
ICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVz
KCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3Zl
cnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRv
IG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4K
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0yMDksNyArMjA5LDcg
QEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9
CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK2lu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChidWZmZXIgJiYg
YnVmZmVyLT5zaXplKCkpIHsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQw
Niw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFu
ZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRl
bnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggMjAwYjZjMDE1OWI2ODhjNzJhM2ZhZGZiYWUwYTY5NDgzMWI5MzZl
MC4uMDQ1ZDRjYjg5YTk2NjRhMDhlMWI4MWEwNTMwMzVkYzVkOWQwYzU5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNG
b3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3Ry
aW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBh
ZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBX
ZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
aW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc5NTYyNmIwNDg2MjIw
ZjlhMzA5ZGIyZmI3MjVlMDRiMjIyNTRhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CkBAIC00NSw3ICs0NCw2IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlBy
ZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAg
OiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9w
YWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
IH0KIHsKIH0KIApAQCAtNTcsMTAgKzU1LDEwIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2J1ZmZlci0+aXNFbXB0eSgp
KQorICAgIGlmIChtX2J1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHdlYlBhZ2UtPmRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSwgbV91dGkpOwog
Ci0gICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmco
KQpAQCAtNjksMTMgKzY3LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmlu
aXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3
ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1
ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIudGFrZSgpLmdl
dCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAg
ICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogfQogCiB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2Ni
NTNkYTg3Li4yN2FkMWM1MjAyNjYwMWU3YzQ5ZWQxODc3N2VlYWZmNjBjZDE5YjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1l
OwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZh
OGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdh
YmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5k
YXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAg
ICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIp
OwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVk
TWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAw
OwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0
byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRn
ZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwog
ICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5k
ZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlh
NjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJG
cmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVz
b3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29k
ZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJj
ZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygp
IGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQppbmRleCBlNDY3ZWZmZmQ3OTQ3Yjc4YTRiODA3MGQ0ODg4YjA2YWY4ZWI3ZGM1
Li4zOWFiNzQ4ZTEyNjZkNTliN2M2MjBhNzdjMzM5ODM5ZWQxMjE4MTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2
LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVj
dGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBl
KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0
MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4
OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1h
Z2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggNDIwMTA3ZGE2NWI3NmI2ZDEyYzRjNDU4MTM5ZjMwODI1OGQ5M2ZmMy4uYzY1ZTk3ODg4Yjk2
YjczNzk1ODgwNWI2ZjhmYTAwOWRjZDFmYjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcg
KzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRp
b25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzQ2F0ZWdvcnksIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBh
c3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpp
bmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3
N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00
MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBp
bXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKaW5kZXggMWQ4MWZmYTE5ZDk3ZjA0ZWM3Y2M1NzViM2VjZTVlODg4MTQ0MGIzOS4uZTM1
MWVhOTk4YzA3ZTRiMzA0NmZjOTBkMjY0NWZhYjNlNmQwZDg4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
U3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVy
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRO
dW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzUsNyAr
NzUsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMTg4ZWM1MDA0NTA3N2Q3OGIwMTIwYTZkYWZiYjA0ZmI3
OTI3NjQ2NC4uYTNlM2M5MzE2OGQ4OTM2NTAyYWE2ZTdmNDU0ZTRlNTdlZDFiMTI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRU
eXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsK
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRU
eXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JU
eXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JU
eXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRC
dWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5
NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
QEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdl
YkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmlu
ZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZl
YWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAs
NyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRv
Y3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkg
eyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291
cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0
YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEz
MzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRk
NDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdl
LT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdl
IGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgp
IGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRk
T2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXIt
PnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVj
dGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggYjA4YzFkMjFjZjlmMDRlNjExYjU5NWVkZTNjYjY1YTE3
YzQ5OTc5ZS4uZDNiNTE2YzQxYTkwZTdmYTU3ZGFkOTg5MWQ0OWEzMzkxNDhhMzYxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMs
MjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRl
Y29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAg
IGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAg
ICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAg
IE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVu
Y29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
dXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1l
VHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7
CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVz
cG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwor
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURh
dGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNl
VVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJl
c291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2Rp
bmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAy
LDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
LT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAg
LSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRv
d3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBf
cHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURh
dGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgp
IDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3Bw
CmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBk
MmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0
cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5
U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyAr
NDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1l
bW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2Jh
Li4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5
U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09N
UHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElV
bmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAg
LTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgot
ICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBN
ZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7
IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDgxNTc5
OTYxMDc2N2UwYmI5YWQyMjQ1NjdkNzI1Y2QzY2RjZGIxZmYuLmIzYTJjNGNmZWIzZThmODJhMDUw
YTM4ZjU3MjU4ZDkwNmQwNmJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0
cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZE
YXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgp
KSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZE
YXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgp
KSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1
ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVj
OGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYx
LDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IDA4N2I2OWU3YThiMGI2ODhhY2JmZTQ0ZTRkYWIxYjdiZGE1NDFmMjguLjk1ODFhYmJkOTMy
YTUxYmJlOTgyMDVhMjMxM2E1YzgwOWJhNjk3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3
ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAg
dm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNl
clRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRU
b0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhl
Li4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNV
TFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0p
CiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAg
IHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3Vz
KCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJl
c2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiBy
ZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWVi
YzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5
Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcg
KzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6Omxv
YWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
c2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0
YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBA
IEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8g
QlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2Vz
IGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUg
U2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0
aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAg
ICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJl
ZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1
ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUo
c2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7
CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGlu
Z05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMw
ZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVh
dGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291
cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45
NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2Vi
UmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3Vy
Y2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93
bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzJhNTZkYzc3NzAz
NjZkMDBjNTMzNTVkZDMzMzY0YjAzNTFmODA3Ny4uYmE1NGY2MWE0ODgzNDY3OWZhZTcwNmIxODZj
MzcxNGVmZDM1YjNiZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0Mgor
ICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFi
bGV0LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIw
MjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIx
LTEyLTExICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4Njg5My4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNi
MWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uOGYzMmFiYzg4MDFkNTE4ODg4MjM1ZWZmYmQwY2Vl
YTc3N2RlM2M5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQzLDUyICs0
Myw0NyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhp
c3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVD
VF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKKyAgICBF
WFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKKyAgICBhdXRvIGNvcHkgPSBidWZm
ZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
LX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
LSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAg
RVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5k
YXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAg
RVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywg
YnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCArOTEsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEy
W10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9w
bGFjZSwgdGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
dGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERh
dGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBl
eHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJU
X0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJy
YXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTEx
MSwxMCArMTA2LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1
ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAn
YicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9y
MSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxh
Y2UsIFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9y
MSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUxLDE3ICsxNDYsNTMgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMg
cHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2lu
IGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVp
cy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHN0ZDo6
aW5fcGxhY2UsIHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
YnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBt
dXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVj
ayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgp
OwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+
c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NF
UlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBi
dWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkp
OworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUo
KSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5h
cHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Cisg
ICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZm
ZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUs
IGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEw
LCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkg
PSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7
IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5Lmdl
dCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAg
YnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVD
VF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBi
dWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hl
Y2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25z
dCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCArMjA2LDcwIEBAIHN0YXRpYyB2b2lkIGNoZWNr
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3Qg
Y2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZl
Y3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50
OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMp
KTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAg
IFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
czMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8g
YWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAg
IGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVy
LT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7
Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWpr
bCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2
KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwog
ICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFi
Y2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRh
KCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNp
emUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwog
ICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBj
aGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIo
YWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNr
QnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdo
aWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gx
LnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNp
emUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwu
c2l6ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQog
ewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNv
bnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8m
IGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
Y29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsK
ICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAn
ZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywg
J2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwog
Ci0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2Qn
fSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUSht
YWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQo
KSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydh
J30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAg
ICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycs
ICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1h
a2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwor
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4
MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8g
YnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9I
ZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVy
LT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRh
a2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKQEAg
LTI0OSwxNiArMjkwLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkr
KykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgp
LCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAg
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1Rf
RVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIp
OworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0zMTMs
MTUgKzM1NSwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRl
U2VwYXJhdG9yKQogICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBkYXRhLCAyNTYp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hhciBjID0gaTsKLSAgICAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoJmMsIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAgICAgfQot
ICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKQEAgLTM1OCwx
NiArNDAyLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRh
KQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4
dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAg
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAg
ICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVD
VF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
Mik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwor
ICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQpAQCAtNDA2LDE3ICs0NTEs
MTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0lu
TXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBzaW1wbGVU
ZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAg
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRl
eHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVl
YzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8
TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIu
ZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0Rh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChj
b25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXIt
PmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVs
bG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVk
RGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhw
ZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAg
ICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVy
LmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRl
TlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAg
ICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7
Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOwor
ICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAg
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlv
bik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0
YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAg
ICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAg
ICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhw
ZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0Rh
dGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdF
bmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446959</attachid>
            <date>2021-12-12 19:04:24 -0800</date>
            <delta_ts>2021-12-12 21:56:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233442-20211213140422.patch</filename>
            <type>text/plain</type>
            <size>136903</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZiOTBiMjY1MGEzMmIw
ZmU4NjU4Nzc1ZGIwNjg1NzcyZTkwYWZkNi4uNWNjYTEzMDRkZjc3ZTNlNzljMjlhMjM0ZDAwNGE5
YWY0NTcwMmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5ZGEyYzc4YTI3NWI4MzVhODQ1MWI1
NTFiM2E3YWIwYTM1ZmUwMWUuLjNkZGIxMjlmNDQzNzY4ODI4ZWYzOWY3ODVlZTIwYTIzZmQzNDBj
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJV
UkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxT
dHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwppbmRleCBmMWJlMzUwNmE5YjA1YjM0Y2Y1ZTU4ZjM3MWIzYzYyNjkwNTYy
ZGRlLi5mYTQ0Y2I0ZWZjYTc0ZGQ5YTY1NmZkZjM0MjljMDgwNzY2OTkxYmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDEgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVp
bGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uNDJmZThmZGZkNDlkMWU2MGE4ZGNmMTFjMTJmMmZi
MDNlMzQ2ODkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyArMzc1LDcg
QEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9u
c2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVj
ZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5n
ZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNl
aXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMs
OSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURh
dGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSks
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkg
fSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAzN2I4Mzg2YTc4YWU4NzVkYzI1
NjNlYmNiMmE3ODg4NWQzMGJhYzQ0Li5mYWRlNjNlNGJlNDlmNGQxOTM5ZDFkYjhhZTEzMjE4MWFk
MGE5YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRo
VHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25z
CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51
bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7
CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAg
LTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0
cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRh
YmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29u
dGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFk
YWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29u
dGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0
YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZUFzQ29udGlndW91cygp
OworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNl
KSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJl
YW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMjYgKzMyNiwyNCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXpl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZm
ZXIpOworICAgIG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIs
IDApOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgp
OworfQogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7
CitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0K
IAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUxLDcgQEAgUmVmPEJsb2I+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBW
ZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5
cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0
cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBi
bG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAg
cmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRh
KCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQpAQCAtMzYyLDggKzM2MCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2VBc0NvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVU
RjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0K
IApAQCAtMzgzLDEwICszODEsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1
bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hC
b2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsK
LSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0g
ICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZm
ZXIudGFrZUFzQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6Omxv
YWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNi
YTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhi
YjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkg
Y29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAg
ICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQo
KS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVm
UHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRy
PEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggNzVkZWFk
M2I5NjBiYTliYzUyYWNjNzIxZThhOTFjYjg0MjBhNjZmYS4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5
MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQog
CiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1f
ZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9y
ZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0
U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAog
ICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENs
aWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMK
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVCht
X2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAg
ICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3
ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNv
bXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFz
ZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtl
QXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJj
ODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVh
ZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IGQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMuLmI5
OTc2YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5OWI0ZTdjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzMsNyArMzMs
NiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXND
b250ZW50KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAg
ICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVy
LnNpemUoKTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYg
KGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92
ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7Cit9CisKIHNp
emVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OworICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlm
ICghbV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgp
KTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAg
YXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAg
ICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXIt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
aW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uMDRiMzU1MDcz
MzdjOGI4NjFiMzgzZDg4MTNkYzAzZjJhMzg5MTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEwMywxMCArMTA0LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3Rh
bXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAg
ICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9
CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgp
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAg
IHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRl
Y29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwog
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJ
bmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDJmMmU4MmMy
YjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMzZTRhYWJkNmEuLmI4NDkxYWIzMGU0OGM3MzE2Yjg4ODFi
YmQzOWNmMDRhMWM0ZjZiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBA
IC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygp
CiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxw
dHI7CisgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE3LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAg
ICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1
ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEucmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRj
aFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwxOSArMzMzLDI0IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRX
aG9sZVJlc291cmNlKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291
cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5n
ZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEo
KQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVl
NDJiOTE3Li4zN2Q2NjdkODM3NmQwMGRhNzg5NDYyZGNjZTFhZGIzMzY4ODlmZDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNl
cygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0y
MjcsNyArMjI4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJl
Y3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4
NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1
YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAg
ICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9Cisg
ICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRl
bGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5k
RGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vi
c3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVl
YjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA5Njk2ZGUxNzZk
MTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5Li5jNzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNl
NTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRh
dGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlm
ICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
IHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRy
eVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAg
Ly8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/
IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBh
IHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1
bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAg
ICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVz
b3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZh
ZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi45OTNjMmI4ZTgzMGRjM2Q3NWM1YWQzMTliYmFmZTlk
ZjQ1YzUwMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2Ug
dXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBD
UkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4g
aXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsK
ICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0Zjgo
KTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAo
YXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVh
cigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZl
OjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywg
IlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJc
biIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2Np
aVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcu
ZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFs
bHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5n
IHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRh
dGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7
CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShk
YXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWRE
YXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWRE
YXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5h
cHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCgh
c3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUg
bm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhl
IGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2
LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEo
UGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29k
ZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3Qg
bGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1M
aW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0
YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVu
Y29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBt
aHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4
aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmlu
ZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERh
dGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0g
ICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCmluZGV4IDczMzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYuLjY2
NWU2OWNhNzcxNGU0NDlhZmU0Y2E2OGE3MjQxNTIzMGQxMDliMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBh
cnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7
CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAh
ZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9
IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0g
TUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWlt
ZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVz
IGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQot
ICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQu
YXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9y
KCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlm
IChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgw
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgp
IGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAo
c3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50
LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVI
ZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJl
YWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBp
biB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYg
dGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4i
LCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDEwICsxOTMsMTAgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlQXNDb250aWd1b3VzKCk7CiAgICAg
c3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNl
IE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0
RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERh
dGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1LDExICsy
MDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVv
dGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpC
aW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5k
YXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBh
cnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggODRhYTcyZGYxOTYwM2ExOWZhYzhmMmQwZDc0
MjljZmI4ZDU3ZTc3My4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFl
NWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3Qg
QXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25z
dCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAuLjlkMmRjNzM2
NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQz
N2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMw
MjQxN2U0ODRhMjVjYy4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsNyAr
NjQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50
KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAwYjdlZDliZjFjNjA5OWY1NzVhYWIzMGU5NTM0
MWYxNzZmODExODZkLi4xNTRkYjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRh
RnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgw
ZWZjMDU3MGFkYzg5ZS4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00Njgs
NyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1f
dXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVw
ZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJh
Y2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU1NSw3ICs1NTUsNyBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
dXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAg
IGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
aW5kZXggNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNS4uZDUxM2UxNmNi
YTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7
IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBl
IHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZl
clVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURh
dGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBk
YXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJ
bnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJl
ZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDg3MzFlYjgyY2I4ZWYwMWFkM2Ix
NDdkOTAwOTFlOThmOTkyNGJkMWMuLjg0MmJmNWYyMGUwNmZkODNhNzA0NjU1ZDYwMGFkZmRjNjQ4
MDQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRh
dGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAg
IHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3Rl
ZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRp
bmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBA
IHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVt
ZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91
c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bp
bm5pbmcgYSBydW5sb29wLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJh
NjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7
CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwg
Q3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXll
ZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0
ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
aW5kZXggZGZiYTc2MWNiMDU4NjRmNTQyNDUyM2JhMzdjZDU1YzYwMDVkZWVjMC4uNTU2OTY0M2Nk
NWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lk
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRy
aWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5k
ZXggY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1Ny4uMjE4ZDc0ZjI3NzZh
OTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAg
dm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJy
b3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAKaW5kZXggZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0
NjE5ZS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0
byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUz
ZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBA
IC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBiOGIzMGI3ZTA4
MmNjYzE4ZWM1M2IxNjBhNzhkNmY5YTI4MDFmMmM4Li4xZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFm
ODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlw
dEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRj
YTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcw
NjlkOWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKaW5kZXggYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYS4uNTQyNjZk
ZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2Fj
aGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+
ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIo
ZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXgg
ODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3ODMyMWVkYzdj
YTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCmluZGV4IGMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAuLmI5YTY1
ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRj
ZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0
IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRi
OTRhMi4uZmY0MGM0MTZjYzYxNmU5MmIxMzA3YmFiYjdlMzQzYjM3ZTU0NjAwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRl
ckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0
YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8
UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9h
ZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2Vk
UmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3
ZWYyYTU3MzQuLjIzYzk3MjQyYmI5ZmI3NTNmYWI3NDM3YWY3ZTA4YTA5ZGE5NjIxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAg
LTY5LDcgKzY5LDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRo
IHNpemUgJWxkLiIsIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQo
YnVmZmVyKTsKKyAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZl
cnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZm
ZXIoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3Jp
Z2luYWxEYXRhLmVtcHR5KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVz
cG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0Nv
bnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNv
bnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZl
cnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERh
dGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdl
dCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRiZGRm
MDdjZjYxNjZhNTg2MGJhYzA3NDYyNmQyOTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRl
ICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBAQCBj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1f
cHJldmlld0RhdGEuZ2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFp
blJlc291cmNlKCkKQEAgLTIyMSw4ICsyMjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJl
cGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQo
bV9zdGF0ZSA+PSBTdGF0ZTo6Q29udmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5p
c0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29u
dmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlm
ICghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdE
YXRhLmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFo
YXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBAIHZv
aWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVu
dCYgY2xpZW50KQogICAgIH0KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hl
ZENvbnZlcnRpbmcpOwotICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlQoIW1fcHJldmlld0RhdGEuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3
RXJyb3IuaXNOdWxsKCkpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29u
dmVydGluZygqdGhpcyk7CiB9CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVy
dGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAg
ICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlld0Rh
dGEtPmFwcGVuZChkYXRhKTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAogICAg
IGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0
MGQxOTBiYTY0Y2Y4Y2UyYi4uZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRhOWY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgpAQCAtNDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
Q2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCAwNTUyNmJmZGJjODQ5ZDM1ZWVlZTYwNDI1MTVkZjc3NTI0MWViN2U4Li42ZjUz
MGQxMzI5YmJmY2UxNmE5ZGE3YWQwMTU4OWNhNTJlZDMwN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTU0Myw2ICs1NDMsNTkgQEAgc2l6ZV90IERhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2lt
bXV0YWJsZURhdGEpOwogfQogCitTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWls
ZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
Cit9CisKK1NoYXJlZEJ1ZmZlckJ1aWxkZXImIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
PShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlcikgewor
ICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisgICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGluaXRpYWxpemUoYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWls
ZGVyOjppbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIEFTU0VS
VCghbV9idWZmZXIpOworICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2Ug
dG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFi
bGUKKyAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYg
IWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKKyAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXBwZW5kKGJ1ZmZlcik7Cit9CisK
K1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQoreworICAgIHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgOiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
QnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCit7CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0
dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKwogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1f
c2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQo
cG9zaXRpb25XaXRoaW5TZWdtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCA3ZDg3ZDM5N2EzMmRhMTFjYTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2MyLi43NjBlYjc4
YTE4NjZmZWQyM2IzMDQzY2Q1ZTE0YWQ1Y2VkZGU0NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHV0aWxpdHk+
CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNzMsMTkgKzE3NCw2IEBAIHB1YmxpYzoKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0NvbnRpZ3Vv
dXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgotI2lmIFVTRShDRikKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwotI2VuZGlmCi0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKQEAgLTI0MSw2ICsyMjksMjAgQEAgcHJvdGVjdGVkOgogICAgIHNpemVf
dCBtX3NpemUgeyAwIH07CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
eyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Cisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRh
ICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
KwogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0
dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlv
bikgY29uc3Q7CkBAIC0yNjcsMTEgKzI2OSw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0K
IAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCi0gICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFz
ZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKLQogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwpA
QCAtMjk4LDYgKzI5NSw1OCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAorY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlcigpID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKFNoYXJlZEJ1ZmZlckJ1
aWxkZXImJikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBpbml0aWFsaXplKFdU
Rk1vdmUoYnVmZmVyKSk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoc3RkOjppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykKKyAg
ICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKSB7IH0KKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShTaGFy
ZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorCisg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXpl
KCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAg
ICB2b2lkIGVtcHR5KCkgeyBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgRmV0
Y2hCb2R5Q29uc3VtZXI7CisgICAgLy8gQ29weSBjb25zdHJ1Y3RvciBzaG91bGQgbWFrZSBhIGNv
cHkgb2YgdGhlIHVuZGVybHlpbmcgU2hhcmVkQnVmZmVyCisgICAgLy8gVGhpcyBpcyBwcmV2ZW50
ZWQgYnkgU2NyaXB0QnVmZmVyIGFuZCBGZXRjaEJvZHlDb25zdW1lciBjbGFzc2VzIChidWcgMjM0
MjE1KQorICAgIC8vIEZvciBub3cgbGV0IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yL29wZXJhdG9y
IHRha2UgYSByZWZlcmVuY2UgdG8gdGhlCisgICAgLy8gU2hhcmVkQnVmZmVyLgorICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYpID0gZGVmYXVsdDsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRl
ciYpID0gZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShSZWY8
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUJ1ZmZlcigp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25l
UmVmKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
aW5kZXggNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1OTI1NC4uNDdjMTBmOTgw
MjM0YzlhYmM2MDg0ZWMyMTA0NTZmNmIxNTQ4MTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQog
eworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhcHBlbmQoZGF0YSk7CiB9CiAKQEAg
LTY4LDcgKzY5LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAg
ICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2Iu
LjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9
IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRh
LgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7
CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJ
ZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygp
LnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEu
ZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9
CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
a2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0
RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlk
czsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQog
CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAg
ICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAg
a2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAg
cmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRh
dGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5
Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEz
MmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5
NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsK
LSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
IAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAg
IFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
aW5kZXggMzJjNWE2NjhhMTZhZTQ4ZWVlOGM5ZDM4ZGJmZjEzMzA1ZmRhYzBiMS4uYjZlMjM3YjVk
ZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsK
IH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwg
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCkBAIC0yMTMsMTAgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0g
ICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAg
bV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyPiB7CkBAIC0zODcsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFy
ZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0
IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggN2JiMjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMz
ZjM3YzQ1MWYzMmM1MC4uMzMwYmUyMTNjN2ZlZmVkYjJmNzg4YjVjMWVjNDQxYWY3MTk0OWQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01MCwxMyAr
NTAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21l
ZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9F
UlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQu
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXRE
YXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxv
YWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZm
ZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQo
c3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9h
ZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4oKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYg
KGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNv
bnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXls
b2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBl
bmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NiwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAg
IG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+
YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCpp
bml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9
CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC05MCw3
ICs5NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNk
YjllZmViNmM3ZDQ0NDQuLjFjODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0
YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAKIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19k
ZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChq
cGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsg
bWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2Vy
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJl
c3Nfc3RydWN0KiBpbmYKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVu
c2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsK
LSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZm
ZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSAr
IGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5p
c0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4g
YnVmZmVyLnRha2VBc0NvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNh
ZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1
MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRh
TG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFh
ODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3
LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhp
cyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0
IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tp
bmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRl
IGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAg
ICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChk
YXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92
ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwog
fQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5
NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDog
YnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25z
ZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAg
ICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dp
dmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDog
dWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNh
bGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5v
dFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+
IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7
CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8s
IFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJj
ZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVt
b3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQo
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFu
Z2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBj
b25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0
byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNp
emUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBh
IHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2Nl
cHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBs
b2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50
IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1
ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAg
cmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAg
ICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFz
a0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9
IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0
YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBn
aXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJT
aXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0
ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNV
CiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBi
eXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXpl
KCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNv
bWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8
IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJv
bURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEu
c3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAg
ICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAg
YXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
YXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NX
aXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdk
NjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBt
X2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRC
dWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVm
ZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJp
bmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNl
Z21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNl
Z21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBT
Y3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRh
aW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZl
ciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdt
ZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1f
YnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCkt
PnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZm
ZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4
ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3Ro
KCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBT
Y3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBi
MzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUyYjQ0
ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hh
cmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVm
ZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/
IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0g
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+
c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNF
bXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1h
cHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAog
cHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMg
dGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCBl
OGJjMzk3OWY5M2Y0M2RkNGZmZWQzYmUwNWU2MTc2ZGQ3YTM3ZDdlLi4yYTcxMjU0NzE4ZWFlZGY1
MWE0NDdlY2U2MmM0Y2Q3MTZiYjA3NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAi
Rm9udFNlbGVjdGlvbkFsZ29yaXRobS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9u
cy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJXT0ZGRmlsZUZvcm1hdC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgsMTUgKzc3
LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAg
ICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAg
ICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKLSAgICAg
ICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOwotICAgICAgICAgICAgaWYgKGNvbnRpZ3Vv
dXNEYXRhKSB7Ci0gICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOwotICAgICAgICAgICAgfQorICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250
aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGln
dW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEp
OworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
CisgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTIxLDEwICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYg
KG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0g
ICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICBtX2RhdGEtPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUw
NGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBz
dHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToK
ICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVs
bHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4MDVjMjgxYjk0ODA1NDVhZTI2Li45
YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxCbG9i
PiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2Ug
anVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRp
bmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6
OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEo
KTsKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0cmFj
dERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8v
IHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29y
cmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
V1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsyMTcs
NyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFy
cmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpB
cnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0
byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRy
LCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJyYXlC
dWZmZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVv
dXQodW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3Ry
aW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9j
dW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsK
KyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNo
ZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAg
ICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxl
bikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAg
IGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vycm9yKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDA0ODQ2MjZiMmU1ZGZkZGE3Y2Ix
NmM0ZjU1MjJkZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEyZDgw
Mzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNzIEJs
b2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
Y2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3
ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9j
dW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU3
N2Q2NTZlNjdmY2NhNDY0MDUwYmZkMzRkYWRjMmEzNjI1ZTIzMDEuLjBiOWY0OWQzNjRjMjU5NWUy
MjNiMzExNGRlYWZjZWU5MmE0MDBmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwNiwxMCArMzA2LDEw
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5z
aW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1h
eGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHko
KTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczNCwxNiArNzM0LDE2
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAg
ICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFN
SU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHko
KTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVy
U3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9y
IG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwg
aGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRp
cGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVm
ZmVyZWREYXRhLnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlk
YXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY5LDEwICs4
NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICBpZiAobV9idWZmZXJlZERhdGFG
b3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBz
dHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAg
ICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBh
Y2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSAr
IGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11
bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBw
ZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAog
ICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERh
dGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAg
ICByZXR1cm47CkBAIC05MDksMTEgKzkwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwog
I2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5n
ZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCkuZ2V0
KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1f
YnVmZmVyZWREYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSBy
ZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAg
ICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5k
QnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0
d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1OSwxMiArMTI1OSwxMiBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNTRVJUKG1f
YnVmZmVyZWREYXRhKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBpZiAobV9i
dWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVu
Y29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI4OSwxMiArMTI4OSwxMiBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChp
c0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkp
IHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6
IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24t
PnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVy
bCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUp
KTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtM
b2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5n
IGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29y
a0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBt
dXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xvYWRlciA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291
cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIz
NGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTkyOGI5NWQ4
YzZmNTdiZTI1YzVmMjExODk4OWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTIy
NSw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9y
ZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsg
MCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOwor
ICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAgICAgdW5z
aWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNo
cm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDEsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBS
ZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdl
Q2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVl
c3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4u
ZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAo
bV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAg
ICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
ID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVk
ICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJl
dmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNv
bnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgp
IDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAg
IH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAo
bV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYm
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsK
ICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0
b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVC
eURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAz
NThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlm
NmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFG
b3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBmOTRkZTkzM2ZkMGNk
NDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4Li5lZDhjYjY1M2VjZmRkMTM0NzNlZTFkMmFmNTBi
YWE3YTZmN2ExMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcApAQCAtMTg3LDEwICsxODcsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAg
IG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmICht
X3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZl
cik7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE1LDE0ICsyMTIsMTEg
QEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBtX2NvbXBsZXRlZCA9
IHRydWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1f
c3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07
CiAKKyAgICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRh
LnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEudGFr
ZUFzQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlv
bkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAg
bV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVy
LT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYw
MjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uZGQ2YjcyNDEwYWRkNGVmNjMxZDI4
MDY5ZTE0YTNmMmEwMGM1Y2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyAr
MTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5j
Q29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNS
ZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOwor
ICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJvb2wg
bV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IGRjNTZkMmM2NmVkODZiOTYyOTUwYTM0ODIwODNlMzQ1OGIzMmI1MmMuLjA4Y2ZiYjU1
MGVkY2I1NmM1OTk3YTA0MzZjMjk2NTNlZjBlODAzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MDMsMTAgKzQwMyw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
QVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2Vp
dmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAg
ICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YS5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQzNyw3ICs0MzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxp
emVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
LnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjYsOCBAQCB2
b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0
YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkK
LSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAg
ICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpAQCAtMTI0Myw5ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRl
bGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAo
bV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJl
YW1EYXRhLnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVy
LmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2Vn
bWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3Rh
dGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVl
YjJiZDViZmNkNjgwMjNmMjMuLjczMjc0MWQ5NWVlNmEyYjY1NmYzZDhjMDhjOGFmZmJhN2UyZmFm
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgpAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0
byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWlu
dGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25h
cHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThm
ZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEz
OGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEg
PSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVy
PihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9y
ZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNw
b25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmlu
aXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIp
KTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Cisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1E
YXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRl
eCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5
MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9i
TG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZv
cm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0
YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNl
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRl
eCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi43OTU2MjZiMDQ4NjIy
MGY5YTMwOWRiMmZiNzI1ZTA0YjIyMjU0YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgpAQCAtNDUsNyArNDQsNiBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAg
IDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1f
cGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSB9CiB7CiB9CiAKQEAgLTU3LDEwICs1NSwxMCBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9idWZmZXItPmlzRW1wdHko
KSkKKyAgICBpZiAobV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAgICB3ZWJQYWdlLT5kaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZmlsZU5hbWUsIG1fdXRpKTsK
IAotICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVm
ZmVyKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
KCkKQEAgLTY5LDEzICs2NywxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZp
bmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
d2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9i
dWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLnRha2UoKS5n
ZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0g
ICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXIucmVzZXQoKTsKIH0KIAogdm9pZCBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZjMDdj
YjUzZGE4Ny4uMjdhZDFjNTIwMjY2MDFlN2M0OWVkMTg3NzdlZWFmZjYwY2QxOWIxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFt
ZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkw
YTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjZkYzRhNDg1MmExNGQ5MTQ0
M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxU
IFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWlt
ZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAo
U1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CkBAIC01OTUs
MTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFt
KiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogICAgICAgICAgICAgLy8gRklY
TUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJp
Z2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZl
Y3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQo
ZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSks
ICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAg
ICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsb2Fk
RGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1
cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBl
LCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjBh
MmE3YzhmYTk3NmFmOGRkNmJkNzEyZWFlZDFjMGQwNDA3MDVmYi4uYmE1NGY2MWE0ODgzNDY3OWZh
ZTcwNmIxODZjMzcxNGVmZDM1YjNiZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBiYWFlMjdhOTk4
ZmZkNjkxYzEwNmI4ODcxNTU2YmQ0ZjA1MjJjMjAwLi44ZjMyYWJjODgwMWQ1MTg4ODgyMzVlZmZi
ZDBjZWVhNzc3ZGUzYzllIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNzQs
MjQgKzc0LDE2IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVy
LT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAg
ICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQ
RUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRh
KCkpOwotfQotCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOwotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
KyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRf
Tk9UX05VTEwoYnVmZmVyKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEo
J2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk5LDEwICs5MSwxMCBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9
ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0
RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwg
c3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVu
KHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25j
YXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4o
ZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5k
YXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTQsMTAgKzEwNiwx
MCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNl
Z21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUodmVjdG9yMCkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBi
dWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQw
MDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkg
ewpAQCAtMTU0LDE3ICsxNDYsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAg
ICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2Fn
aXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgog
ICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRp
Y3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRh
KTsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRh
LCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjEoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEu
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8g
c2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAw
eDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOwotICAgIGF1dG8gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsK
LSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VR
KDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25l
LT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVY
UEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVp
bGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1
LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRl
ciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sK
KyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwor
ICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAg
IGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVY
UEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBT
aGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8g
QnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0
YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIy
LnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIy
LmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0x
ODIsMTkgKzIxMCwyMSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKICAgICBWZWN0
b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OwogCi0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
czEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShzMykpOwotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIp
KTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBi
dWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRh
KDApOwogICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGgg
PSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRv
IGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKICAgICBhdXRvIGdoMiA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVm
ZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDEx
KTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7CiAg
ICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CkBAIC0yMDMsNiAr
MjMzLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIGNoZWNr
QnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNk
ZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CiAgICAgY2hlY2tCdWZm
ZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2hpamts
LmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOwogICAgIEVYUEVDVF9FUShnaDEuc2l6
ZSgpLCBnaDIuc2l6ZSgpKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgp
LCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXpl
KCksICJsIik7CkBAIC0yMTEsMTYgKzI0MiwxOCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Z2V0U29tZURhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAg
IGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRz
KSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRl
bnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVu
dCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9
OwogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9
IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAg
IGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsK
LSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycs
ICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxk
ZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdj
JywgJ2QnIH0gfSkuZ2V0KCkpOworCiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2In
IH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7
ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5n
ZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCks
IG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwpAQCAtMjMwLDExICsyNjMsMTMg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwg
MHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZm
ZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0
cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNs
ZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjU1
LDE2ICsyOTAsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2lt
cGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQot
ICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
LmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1
KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShz
aGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Cisg
ICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNo
ZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTMxOSwxNSAr
MzU1LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBh
cmF0b3IpCiAgICAgdWludDhfdCBkYXRhWzI1Nl07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCAyNTY7ICsraSkKICAgICAgICAgZGF0YVtpXSA9IGk7Ci0KICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVkQnVm
ZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIGRhdGEsIDI1Nik7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAy
NTY7ICsraSkgewogICAgICAgICBjaGFyIGMgPSBpOwotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmYywgMSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZjLCAxKTsKICAgICB9Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQpAQCAtMzY0LDE2ICs0
MDIsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VR
KHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCkBAIC00MTIsMTcgKzQ1MSwxOSBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0
aVNlZ21lbnQpCiAgICAgfTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHNpbXBsZVRleHQs
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIEVYUEVDVF9FUShz
aGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Cisg
ICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNo
ZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7
IGkgKz0gNSkKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUp
OwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgNSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2lt
cGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmlu
ZGV4IDg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcuLjhiZmI4NWVjNjFk
MzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDE2
ICs0OCwxNyBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0Rh
dGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0
eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVy
LT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5k
KChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwg
d29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKQEAgLTY5LDMyICs3MCwzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9y
RGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Indv
cmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJl
Zil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxv
RGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVs
bG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBz
ZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0
KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVh
bFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9F
UShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdl
ciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxl
IChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAo
YnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0Rh
dGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24g
Kz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5
dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRv
IGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAg
ICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446960</attachid>
            <date>2021-12-12 19:34:26 -0800</date>
            <delta_ts>2021-12-12 22:08:53 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>attachment.txt</filename>
            <type>text/plain</type>
            <size>551707</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRkNjBiOWJiMjJiNTU2
ZTZlOWVjM2FhZGU1NmIxNzRkN2FmYTI0YS4uNWNjYTEzMDRkZjc3ZTNlNzljMjlhMjM0ZDAwNGE5
YWY0NTcwMmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAg
YW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1
bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1h
ZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0
IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBh
cmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBB
cmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xl
IHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVu
IGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVu
IHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdl
CisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEg
Y2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8t
b3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAg
ICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2Yg
YSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAg
ICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJz
aW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFu
Y3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUg
U2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFu
ZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAg
IEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVy
YXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNo
YW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3Jhcnkg
bWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
IGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBj
aGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBp
cyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVu
bGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUg
bWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2Jz
ZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBO
ZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFk
ZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0
ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5k
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
Q0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJ
RkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhE
YXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJD
b3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFz
c2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29u
c3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6
Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhU
YWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZh
bGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhD
b3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxl
Ojpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFi
bGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRM
YW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNj
cmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERh
dGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
bkZ1bmMpOgorCiAyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CiAKICAgICAgICAgU2hhcmVkQnVmZmVyIHNob3VsZCB1c2UgV1RGOjpGaWxlU3lzdGVtIHdo
ZW4gY3JlYXRpbmcgZnJvbSBhIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVmZDQwZGFhOWMzNTNjMmM1NDkw
N2Y5ODdmYWMyN2E3YzJhOWViZS4uM2RkYjEyOWY0NDM3Njg4MjhlZjM5Zjc4NWVlMjBhMjNmZDM0
MGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpX
ZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21w
bGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFp
bCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAg
ICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
SVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERh
dGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9u
RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6
CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVT
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFw
cEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURh
dGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQ
cm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFy
eSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0
aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2lu
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVs
ZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpj
cmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5T
dGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0xMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb21lbnR1bSBFdmVudCBEaXNwYXRjaGVyOiBUYWlsIGZy
YW1lcyBhcmUgdGhlIHdyb25nIHZlbG9jaXR5IGlmIG1vbWVudHVtIGV2ZW50IGRpc3BhdGNoIHJh
dGUgZG9lc24ndCBtYXRjaCBzY3JlZW4gcmVmcmVzaCByYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggNTVlNGMxOGM0ZjRmMTEyZjY4NzE2NTY0MzBjNzRmOWUwMmQ2YjhmNS4uYmNm
MjdiMDlhZGQ1NDBhY2JmNzc0NDAyYTAxNDU2N2ZmZjQ3ZWQ2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAz
MAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgt
W0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRh
U291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVu
dUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dl
YlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0
YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0x
MSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHJl
ZHVuZGFudCBTdHlsZVJ1bGU6OlR5cGUgZW51bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGE4OTVjNjZjMWYxOTM3YmZhODlkMjYyOGQwYzBiOTYwOTEwYTk2YzAuLmZhNDRjYjRlZmNh
NzRkZDlhNjU2ZmRmMzQyOWMwODA3NjY5OTFiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAg
ICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWVtb3J5
U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAg
ICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVh
bS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RkOjpudWxscHRyX3QgY29uc3RydWN0
b3IgZm9yIFJlZlB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDMzNTRiNTJh
NTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRmYWMzYTk1NDA3ZjJiMzczYWE4OGRm
ZTM3MDdmMmI5YmVlYWFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
Ci12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3M2Mw
YjM3NDRkLi45YjU5ZWI1Y2M0OTU3ZjAzMzY2NzU4MmU4NjUzYWMwNzRmZThmMzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIx
NGRiZWU2NGJmOWM5MDc4Li42OWJjM2QzYTAzY2U0NWVjN2NlODYzNmQ0YjE3ZDkzNTlkM2NmMGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApA
QCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQogICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVM
b2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0b21E
YXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpOwotICAgICAgICBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkK
LSAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAg
ICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKAogICAgIGlmICghc3Ry
aW5nUmVzdWx0LmlzTnVsbCgpKQogICAgICAgICBtX2RhdGEgPSB7IHN0cmluZ1Jlc3VsdCB9Owog
ICAgIGVsc2UgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSBtX2Jsb2JMb2FkZXItPmFycmF5QnVmZmVy
UmVzdWx0KCkpCi0gICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB9OworICAgICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIH07CiAgICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsK
ICAgICBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAtMjY1LDggKzI2NSw4IEBAIHZv
aWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9z
KSB7CiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAg
ICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Cisg
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwogICAgICAgICAgICAgbWFya3VwVG9T
YW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9k
YXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1f
ZGF0YSk7CkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICB9
CiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZmZXJU
b1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAg
IGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKSk7
CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICB9
CiAKICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoYml0bWFwSW1hZ2Uu
Z2V0KCksIEZsb2F0UG9pbnQ6Onplcm8oKSk7Ci0gICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnRvRGF0YSgiaW1hZ2UvcG5nIl9zKSkgfTsKKyAgICAg
ICAgbV9kYXRhID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXIt
PnRvRGF0YSgiaW1hZ2UvcG5nIl9zKSkgfTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1
MzBjZDc3ZDU0Zjk5YTUyOWE3Li4yZGM5ZDUwMGYyNTM1ZThjYjIxY2JhMzNjZTRhZTFlMjU0MTMx
MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBA
IC0zNCwxMSArMzQsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmls
ZVJlYWRlckxvYWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBCdWZm
ZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAg
ICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBw
dWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMw
N2EzYTQ0MTAwLi4yOTNmNTIzMGQwZDc3MTIzZGIxMzBiMDE2OTM2OTlmYmFmZjU0YWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1dG8g
aW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRh
OmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4Njlk
YTdlNWJmLi4xNTdjNWY1MmMwMjZiZmFhOTc2NGVjZDI1MDQyM2IxNWQxODYzM2NhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNh
MjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4
MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5l
OjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9
IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9
LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUyMDk0ZjY1NDk5YmI5
MGRkN2YwMDcxZDQyNGMuLjQyZmU4ZmRmZDQ5ZDFlNjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODksNyAr
Mjg5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZv
cywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25u
ZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAg
ICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9
IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1d
IChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRs
ZXItPmlzRG9uZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OSwxNSAr
Mjk5LDE1IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5m
b3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0
YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25z
ZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVz
dD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8
RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBF
eGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5
KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5
LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBi
b2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBi
b2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJl
cXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNl
cHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUs
NyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+
aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSBy
ZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5
Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0
aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3Vt
ZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7
CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5m
bywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5z
aXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAg
ICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgK
aW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2Jj
ZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJv
b2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYp
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmVi
ZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlz
b2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9
LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9u
c2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAg
IH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAg
cmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNl
Qm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
YnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApp
bmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4
YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBj
b252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcg
UmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5
Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4
OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3
MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNL
ZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRl
ZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAg
aWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVl
OjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0
byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNo
U3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAg
ICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3Rh
dHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1
Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNo
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8g
bGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0
YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtl
eVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAz
LDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlw
ZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3Qt
PnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmly
c3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICBy
ZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3Rh
dHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQg
fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4
IGMwNDczMTI4NGY2NzZhYTVjNTBmOTQwYmU0ZjY2MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVm
MjE5OTJiOWUxYWQwNWFjYTU0ZTcyZDYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29u
c3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3du
ZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFy
ZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1f
Y29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRU
eXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNv
bnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFy
ZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxv
YWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0
cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlz
Rm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURh
dGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAg
ICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEg
RmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VE
YXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsK
QEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFr
ZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCku
ZW5jb2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhF
bmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVu
dGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQ
YXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6
VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1
ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgp
LmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSks
IGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJW
aWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJh
eUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0
ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThm
YzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsK
IAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zv
cm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKaW5kZXggZGM4NjVmN2RhMjM5N2FjNTU5M2I0NGI1MzlkM2U2NzFlNDNjZTZkYi4uZmFkZTYz
ZTRiZTQ5ZjRkMTkzOWQxZGI4YWUxMzIxODFhZDBhOWEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIs
NyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpj
bGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7
CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAg
bV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29u
c3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3Np
bmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6
Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6
OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJC
dWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0
byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5h
cHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0
eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2VBc0Nv
bnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1v
dmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBl
RnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNv
bnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRh
KCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQs
IGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2Fn
ZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkp
CiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+
KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChU
eXBlRXJyb3IpOwpAQCAtMzI0LDI2ICszMjYsMjQgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBt
X2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7CiB9CiAKLVJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKK30KIAotICAg
IGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAg
ICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7
CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9i
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQpAQCAtMzUxLDkgKzM1MSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4
X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1
dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRh
KGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9i
RnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRl
bnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAg
LTM2Miw4ICszNjAsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8g
dGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBi
dWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzgxLDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCkpOwogfQog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYg
ZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMu
LjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUw
LDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0K
LSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9i
dWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpA
QCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5n
IG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNl
PiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVm
ZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXgg
NGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBkM2Y4NDhmNjRmMi4uYjkzNDM5MmE5MDNkNGE1
ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5r
Q2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBj
aHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2Fs
bGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRo
UGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgp
LnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBb
dGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlO
dWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgp
LmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2
NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTkyNzI5MzBiYmMyZDE2NjZjNmFlYjU0N2ExYjVl
ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAg
ICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25z
ZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYm
LCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1Zjdl
OWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3
MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBB
cHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6
ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5j
b2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmVi
N2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWVi
OGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3Rl
eHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7
IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVy
ID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4g
ZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZh
ZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3
YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJy
YXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQ
YXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29k
ZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rv
cjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBr
ZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShj
b25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAg
ZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAK
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdCom
IGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4u
YWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
REJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJ
REJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVj
Yzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdi
OGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJ
bmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5z
YWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXpl
SURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGlu
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJz
aW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7
CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRo
KCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVj
dCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9i
amVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0
byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBk
YXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGlu
Zm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0
byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlm
ICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMg
KzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAl
cyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBp
bmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8g
aW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAo
IWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVl
KTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7
CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2
YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0
aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBh
dXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFr
ZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0
byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsx
NzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FM
aXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5t
b2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJv
bSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUg
ZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
c3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0
aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4g
b2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3Rv
cmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAg
ICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQog
ICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBs
b3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJL
ZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJf
cyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBr
ZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBr
ZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBw
ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAt
MjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChr
ZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYg
a2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9u
ZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3Jk
Il9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAg
ICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5Lmlz
TnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2Vy
S2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktl
eSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAog
ICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6
Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVw
cGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
IGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJm
ZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5
Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3
ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0
YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJ
VEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0
ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMx
NSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVt
ZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUlu
ZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3Vt
ZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3Yjk0YzllN2Vi
MGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNlMGI4
NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAg
ICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9w
ZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJ
ZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdl
LmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90
ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1
M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2
ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50
LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAg
ICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcm
IHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsK
ICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODllMC4uMjdhNmQ3
MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApA
QCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNv
bnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7
CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2Rh
dGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1f
cmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2Up
OwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5j
ZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNl
dCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVy
KCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0K
IAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0
ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVz
b3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlQXND
b250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsK
IAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIu
LmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
aApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQ
cm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4
MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3
ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9k
ZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJM
PiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAg
YXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUi
LCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVs
U291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRf
VU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgp
KTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMz
MDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBl
ZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQ
cm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAog
ICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigq
Z2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1l
bnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpu
dWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNm
MTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3Vy
Y2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNP
bmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1
b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWlu
c09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0
SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5z
T25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
IH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAg
bV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEs
NiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3Jp
cHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51
bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJs
ZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNo
ZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFp
bnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRl
eCBhZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBjM2E4YzY5YTljMzFkLi4zYzVlYTliODlhOWM5
ZTkwMzcwYjk4ZGY1Mjg1NjMwNjQ5OTAwN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNl
Ojpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1faW5E
b2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1l
bnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNl
RWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBvdGZGb250
ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAg
IG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZG
b250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkp
KTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1
c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNv
dXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1l
ZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5i
eXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNl
LT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAg
ICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250Ojpj
cmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAg
ICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdh
MTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZv
bnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBG
b250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGll
czsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9u
dFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVh
dHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NT
Rm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3Jj
aGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBt
X2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUg
cmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVk
T1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRl
ZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRl
U291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uZjVi
ZjJiNzI2ZTZhZTk2ODkzNTNjMGE3ZTA4YjQ1ZWZkYTVkOTA0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVU
eXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5h
ZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAg
IHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
MjgzMWNkM2ZhOWM2YTRmOWZmOWE5YTBlMjVjM2I0MmU1MmQxYjY0ZC4uY2YzMmFiYzE4MjdmY2Vi
NTRhZDVlYTAxYmEwMmViMDFmMTc0ZjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtNDE1OSw3ICs0MTU5LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21p
c2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0
aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAppbmRleCBiMDMxMzZmZmNmMWY2YjM3ZTZiMDdhYjYyMzJlNjFmNjZkZWU3NTg3Li44ZGE5ZmNj
NjQxNmI2NzIxN2QxNzQ5ZWJiODk3ODA3ZTQ3NjExMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFU
cmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwog
Y2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3Mg
RWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUzOCw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2Vu
ZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7
CkBAIC01NzUsNyArNTc2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5k
RGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAj
ZW5kaWYKIApAQCAtNjIzLDEyICs2MjQsMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3Jt
YXQoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJB
cmNoaXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3Qg
VVJMJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJp
bmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9y
bUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNl
NjdlZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5n
IG1pbWVUeXBlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggMDhhYTEyNDI2NjIwZjc2
OTUzYTc5YjM0ZWRlNWY2ZGYwNTI3YjAxNS4uMWQ5N2FjZDNjYzc5MTYxYjBhYzUwYzRiZjcwY2Ix
NTJmYzBmNDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50
UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgK
QEAgLTc4LDEwICs3OCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRG
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNlbmRpZgogfTsKIApAQCAtMTA1LDEwICsxMDUs
MTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAK
aW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVhMjRlYzIwZTRmMjFiZmEyNS4uNzRmZTgyODdl
OGMzOTNiZTE3YTY3NjY1MzhkOWYzNGEwOTBiMzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyAr
MzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250
ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmls
ZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4
dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZjYjRkMTU4MTQ2MzViMjRkOTBiYjcuLmU3YTA3
MWNhNDAzOWUwMWY0OGQwYjQ5OTUwMWVkNjRkZTYyNmYwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaApAQCAtNDEsNyAr
NDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAog
ICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0
OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIz
NTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiAr
NzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQg
PSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJp
YnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hp
dmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVk
QXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1
aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVy
cm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQ
YXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERh
dGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQo
RWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRS
YW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpA
QCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0
byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5
cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0
aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0
ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hp
dmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50
YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVj
dGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAg
U3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0
dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0
cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
IAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQz
MjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09M
IEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50
LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNv
dXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWlt
ZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAg
IGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUp
XTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpA
QCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxl
V3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChk
YXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJj
ZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUg
PSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAg
aWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmls
ZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJl
c291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQu
Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNo
YXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uNDQwNTli
ZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3MzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3
ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50
SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5n
IGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9y
aWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291
cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1p
bWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9
CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIs
NyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2Vy
dGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlw
ZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9i
amVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsK
ICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1h
cmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBi
dWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFy
ZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUg
eyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hp
dmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3Ry
aW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0
cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRl
c3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwo
c3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5k
QXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmlu
Zzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAg
ICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2
ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVu
dCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5p
dGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFn
aW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4g
IW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3Mo
KS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyArNjI2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjM5LDcgKzYzOSw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFn
ZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCmluZGV4IDMwMzZjZDMyZDZjZDgzMmMyMjAyODNhODQ0NWE4OTlhNWE2NmNh
M2MuLmRmMDkxOWY3NWFjZjc5YTgzOTI4MzIxMTkwYzVjYjJiYWY3NDdlNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEVk
aXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgpCiAgICAgUGFzdGVib2FyZEJ1ZmZlciBwYXN0ZWJvYXJk
QnVmZmVyOwogICAgIHBhc3RlYm9hcmRCdWZmZXIuY29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQu
b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLnR5
cGUgPSBsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKTsKLSAgICBwYXN0ZWJvYXJkQnVmZmVyLmRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RGF0YS5nZXQoKSk7CisgICAgcGFzdGVib2Fy
ZEJ1ZmZlci5kYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdl
dCgpKTsKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRCdWZmZXIpOwogfQogCkBAIC0y
NTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChO
b2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5z
ZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2
ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJm
YWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIg
b2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRo
aXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1Zp
ZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2Vk
IHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFj
Y2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkg
KzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5k
T25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFt
ZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0g
RlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVk
VGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIp
CiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3Ro
ICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyAr
Mjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5
RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURv
Y3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklY
TUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2ll
bnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0
ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBp
dCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXgg
Njc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uYjk5NzZhZjJlNGRkNDA5
YTg5YzNhNDI0NDEzOWEzZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogCkBAIC02Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0g
ICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZm
ZXIgPSBudWxscHRyOworICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAg
ICAgICBtX2RhdGFCdWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgp
KSB7CkBAIC04MSwzNiArODAsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwog
fQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBj
b25zdAoreworICAgIHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZm
ZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRh
dGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
IH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6
ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IG1fZGF0YUJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2Nv
bnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVu
Z3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAg
ICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIg
PSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxl
bmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4w
NGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEzODkxNzIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtMTAzLDEwICsxMDQs
MTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25z
ZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9
CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFC
dWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBo
YXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsK
ICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5z
aWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWlt
ZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0
aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFm
ODUyYzIzNjJiMzk5NDliZGQuLmU1OGJjYzJhYTdmODE0ZDk3N2ZmN2Q4ZjI2MjNjMzdlY2JhN2Mx
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxk
VHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2Uu
bWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAg
ICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBk
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAg
ICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggOWI1Y2FkOTU5YThlNmYyYzJi
ZjcwZTFhZWUxNDI4NzQ1OWQwNjYxMi4uYTNjNjBjM2I2OTZhODNkODMxZDg5N2Y4MTY3YTMyYmUy
MzczNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9j
dW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1
cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygp
LCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRh
dGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5n
TmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQo
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMx
NzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIx
OTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcg
KzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQp
OwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0g
cmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZm
ZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNl
QnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEu
LmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBA
IC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJl
ZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVx
dWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVl
c3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVu
dCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0
UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVu
dGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggY2Y2Y2NmMmJkMDg5
MjUwYzYwM2ZkMDRiNzRjM2VjOGMwZTQ5YzRmMS4uZmRmZDBlYWFmM2E1MDE4ZDkwMGJhMWE2ZDdh
NDhhZTU3MzJmMzRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0xNjA1LDExICsxNjA1LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBB
U1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNl
ID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9
ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUo
bWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNv
dXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEt
PmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiB9CkBAIC0xNjQ5LDcgKzE2NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVh
ckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1l
ci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURh
dGEuZ2V0KCk7CiB9CkBAIC0yMjUzLDcgKzIyNTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21t
aXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
Y29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2Fk
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNTEyMjdiOTZk
N2QxN2NhMDdlZTNiN2NmZjQxNjJmM2NiZTFhOTc1Zi4uNmJkMzJmYzJlY2Y0NmFmN2NkOTM3OWE5
ZDAwYzk5MTE2ZWI3YTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBD
b250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0
b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIzNSw3
ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVS
ZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9w
QXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNo
aXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlm
CkBAIC02MTIsNyArNjEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBt
X2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
ICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggYzEwZDVjMWRiZWJlZjA1NTI4NDNkZDlmYzBhNTMzZGRiNDc5M2E0Yi4uMDc2
ZjM3ZGUzMjU5YTAzYzM4N2ExZTBkMmFmY2FlZDJkODI1OWIxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1
OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0
VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29u
dGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNv
dXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZmUzMmQ5NGU0Mjg2NTlkNWQ2MWRh
YmE3MjE5OGViMTk1OWJhMjVmNi4uMGRhZjRjN2FiNjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIx
MDM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsy
NzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNo
YW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFh
ZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNi4uZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0
ZmFkMmJjM2ViNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0z
MTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVM
b2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1S
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVl
c3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNs
aWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVy
cm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1f
ZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExp
a2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVy
OjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggZWRlY2UxMmNkN2E5NmZlYjkzNWMzMzQ2NmM0NmNhZTAyMGUyZjNh
Yy4uOWMzZjc0YzQyZGI4ZTdiYWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVC
YXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hy
b21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2
IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xp
Y3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRB
cmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENs
aWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVu
ZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpv
cHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIs
IHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQz
Y2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJi
ZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAg
LTExOCw3ICsxMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkK
IAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0
cjsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1
ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAg
IGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVm
ZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jl
c291cmNlRGF0YS5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNo
VG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291
cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5n
ZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEo
KQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNv
bXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0
aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgog
ICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5
OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNv
ZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJl
Y2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGlu
dD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJk
MjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uMzdkNjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRi
MzM2ODg5ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIApAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciog
cmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAg
ICBjb25zdCBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xl
YXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxv
YWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVz
dDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291
cmNlRGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcmVzb3VyY2VEYXRhOwogICAgIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3
ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhi
ZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1
OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThm
MTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0
aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVk
QnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJl
ZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0
KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1f
ZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1f
ZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwm
JiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3Vy
bDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYz
ODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRl
NWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9u
Q2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICgh
bWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNr
IG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFy
c2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
IkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQg
c3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgx
ODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIz
MjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBA
QCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBw
YXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0
aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3Vy
Y2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTog
Q2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1
ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7
CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJl
c291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQog
ewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91
bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBA
IC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSBy
ZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2Yg
YSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFs
ZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYg
dGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0
aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsy
ODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxi
YWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9
IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJv
YWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAg
IC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVy
IHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3
MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3
NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGlj
YXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4
ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxs
YmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5
YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1
ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VM
b2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNw
b25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVz
cG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5
cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5
NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBw
bGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUy
MGJkMzBlNjM2NTk1Li5jNzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAo
PywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgo
KS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQK
ICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRh
U3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCku
Z2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21t
YW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAg
ICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5
IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFz
ZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1v
dW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAg
ICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigp
OwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAg
ICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAog
ICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5C
bG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5k
ZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3Zjdk
ZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcg
QEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJv
cGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBl
bXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAg
YXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBV
UkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJl
c2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2Ug
Zm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAg
ICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJl
c2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVz
cG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3Vy
Y2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENG
RGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lv
bktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBl
SUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNw
b25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFs
aWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Q
cm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVy
c2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsK
ICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAg
ICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVm
PihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRl
ZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAg
ICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlv
bmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25h
cnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVn
YWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25h
cnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBz
dGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25h
cnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNv
dXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5v
IG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7
CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGlj
dGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1
dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAg
ICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQg
Q0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChz
dWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBh
ZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICsz
NjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJl
c3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVz
cG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+
CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAg
ICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQg
ZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFu
b3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRz
IG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1c
Im5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwi
IGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmlu
ZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMw
ZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFn
ZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBh
cyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQg
QVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFz
Y2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsK
KyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog
IiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVy
bC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2Np
aVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRh
LmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAg
ICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBz
dHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRh
ID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJl
c291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5n
LCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVv
dGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAg
ICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1s
RGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAg
ICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAg
ICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93
IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENS
TEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZl
OjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAg
ICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5n
dGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0
YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAg
ICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAg
IG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgp
OworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAg
ICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUg
KGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNj
aWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwot
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0
cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRt
bERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBl
YWU0Y2IyZDBiZGI4MDE1ZS4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4YTcyNDE1MjMwZDEwOWIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7
CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50
Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5h
cnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQp
KTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGlu
ZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5l
eHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0g
MikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhh
dCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMg
c3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4K
LSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVu
Z3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBs
aW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRo
ZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRl
Y29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNv
bnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
KCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSAr
MTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQ
YXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZUFz
Q29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNv
ZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBk
ZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUo
KSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICgh
ZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29u
dGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBk
YXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29u
dGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJp
bmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250
aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8v
IEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ug
c2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUg
d2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3
I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0
ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNGYyMjhlOGQwMzg5
YjhiOGNiN2Y0MTQ4NmZkYjc4MWM5YmY2NWJkMi4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRi
YTMzOGE2NzMzMzVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3
YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQx
ZDU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwm
IG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRy
KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAw
YmE5YjE3NmYuLjlkMmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNo
ZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0
dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVk
IHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBv
ZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9
CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEzICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
CiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRD
YWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAv
LyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBz
aGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQor
ICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0
aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVs
eSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNl
ZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQzN2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYx
NjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5k
ZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjlhZDc3MTNjNjAz
YTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmlu
ZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1
cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENh
Y2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRh
dGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJy
ZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpA
QCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Z2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsK
KyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxs
cHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnko
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQo
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2Vi
ZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMTU0ZGI4Y2JhYmYzZDVhMzhl
MDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNM
b2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAg
dmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBw
aW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9t
RGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9v
bCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAg
dmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRh
RnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9u
dERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
YWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0
ZTBlNmY2YjU0Mi4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSAr
NDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBk
YXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0g
JmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIg
KzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUlt
YWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNb
aW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNj
cmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQor
ICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMp
ICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRh
LT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYo
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAg
ICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUg
c3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0
YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50
ZXJuYWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAg
bV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBk
Y2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uZDUxM2UxNmNiYTVhOTcwN2MzM2FmYzc5
MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdp
ZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQg
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNl
ZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0
YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBA
IC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODQy
YmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRh
KHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVw
ZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRo
ZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7
Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygp
OwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGls
ZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0
aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVtZW50
YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5
IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5p
bmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kg
PSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xp
Y3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEg
PSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChp
bmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNE
YXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1
NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRj
YmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVz
Q29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFs
bENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0
Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRp
bmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3
MmEzZTJhMDEwZTc4MTA4OC4uNTU2OTY0M2NkNWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWEx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZp
bmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2Rl
ZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewog
ICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3
QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7Cisg
ICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZl
ckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4u
MjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQog
ICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0
dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5z
aWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFj
ZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5
UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291
bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBp
bmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29k
ZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApp
bmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5iMGY3NmE1MDk2
MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBT
dHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9k
ZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3Qg
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBu
ZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBV
c2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxs
cHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+
c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkp
OwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmgKaW5kZXggZThjMTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJh
OThlZWRmNzMyYzA4MmMzNjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAg
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1
NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAt
ODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAg
ICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkx
LDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZG
b250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRG
b250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3
ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01
MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6
ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAg
ICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVt
ZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRp
bmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li4x
ZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVu
c2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFz
aDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlw
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2Mz
NGJjZWRlN2UyM2QuLjc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNv
dXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4
NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQy
ZTkxM2FkZTgxZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVk
VGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklE
CiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAg
ICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNl
Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBj
bGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12
b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3Zv
aWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRl
QnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1l
dHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5o
CmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgz
MjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBj
Li5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02
MSwxMiArNjEsMTYgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29u
c3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBD
YWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBt
X3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRT
aXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAg
IG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNv
ZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIy
ZjdlYzVlMDA2NTRjZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJk
NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFs
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRl
eHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0
NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3
MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJp
dmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6
U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VC
ZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVG
aWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVl
c3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
c3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tD
YWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVl
N2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGlt
dW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8g
YmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25z
dCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2Up
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVk
VVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3Rv
cmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTEx
Myw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJl
c3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJs
b2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNo
ZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNr
ZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tl
ZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8q
IHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdCht
X3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1
MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmZmNDBjNDE2Y2M2MTZlOTJi
MTMwN2JhYmI3ZTM0M2IzN2U1NDYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQ
cmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CkBAIC0zNyw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2Fk
ZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcw
LDcgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2Nv
bnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291
cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRl
eCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li4yM2M5NzI0MmJiOWZi
NzUzZmFiNzQzN2FmN2UwOGEwOWRhOTYyMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGVn
YWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQ
cmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6
ZSgpKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5h
bERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJj
ZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2
aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBt
X29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAg
IHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdU
Rk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZp
ZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRl
ciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJl
dmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZp
ZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKaW5kZXggMTgxNzUzMWNiNjk4YjhhNGVkYTI4MTBjYzQ2NmM4MTY5Y2Ix
NjNlYi4uY2VkNTYwOWMwMDVhNTM1MmIzM2QxMTk4ZjQ1Yjk4YmE4NGE3MWQyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBGcmFtZTsKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNl
cyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5N2UwMWI1
YzY5NzZkNjdmMGYzYmRmY2VkZWM2YWJjZjA0ODUyYzQ0Li43Yjk2MWRiMDQwNGMxZDE5NzM2MDc0
ZTRhOWQ2YzFkYzk0MjEyMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NzMsNyArMTk3Myw3
IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFu
ZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5
IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4g
RG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQg
YXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRh
dGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91
c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNl
clN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXgg
MTY1YWE4MDU4YTAzOTBiNDUxNTc5YTE0NzYxYmQ4Njc5NDkzNjQzMy4uMDFlMTZkZDk4ZjRkZjBj
ZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxp
emVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5n
IHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jl
c291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmws
IGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6
OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3Ig
KGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwg
Y29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNo
YXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgog
ICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVu
dHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7
Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFM
OjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNl
cy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1
cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjph
ZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1h
ZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1f
cmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZm
ZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUy
OWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsK
IAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhl
MjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAog
c3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmls
ZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJl
NTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEz
YTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFS
ZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFy
c2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFS
ZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVE
YXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhd
LT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZp
bGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmls
ZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRp
Y19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5k
aW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2
MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAw
OwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVF
bnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcAppbmRleCBiYTE3ODcyNDcxYWUyODY0Zjc3MDgyYzQ3ZDY3ZjI2M2VkNWRmOTU4
Li41OTZhZmI4ZTkxODg4YzJhYTY3MmZjMGU1ZDA2Y2I2NDQ5ZGVkYTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcgUGFzdGVi
b2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBy
ZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDE0NzY0MWRkYjY1ODg1ZTM5YTgzYzZhNDU1NTZi
MWVhYTZiMzY1ZjcuLjRlMjc4MmQ5YmFjYjlkMDE5ZDEyMDAyMGRmZjAxMTZlMjUyMzJkMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJh
Z0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJv
YXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50
KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZv
cm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+
IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0
YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRh
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpA
QCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hp
dmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAh
UExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xp
ZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwor
ICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAj
ZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXpl
OwpAQCAtMTQzLDcgKzE0NCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkQnVmZmVyIHsKICAgICBTdHJp
bmcgY29udGVudE9yaWdpbjsKICNlbmRpZgogICAgIFN0cmluZyB0eXBlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiB9OwogCiAvLyBGb3IgcmVhZGluZyBmcm9tIHRoZSBwYXN0ZWJvYXJkLgpAQCAtMTY0LDEw
ICsxNjUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJl
YWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZl
cihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApA
QCAtMTgyLDcgKzE4Myw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmly
dHVhbCB+UGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFz
dGVib2FyZCB7CkBAIC0zMDgsNyArMzA5LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25z
dDsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6
ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC0zNDAsNyAr
MzQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNG
b3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmlu
ZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25z
dCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVj
aygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAj
ZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjIwY2Q2MWU3
MTEyMTMyMWNjNDZkMDc3MTk5MWFhYzVhYTQ3NTU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsK
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAg
cmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihvdGhl
cikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTgwLDcgKzgw
LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYm
IG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRh
U2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9t
U3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURh
dGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIo
V1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsK
IH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0
cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JN
b3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQg
UGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1v
dmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOwor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYo
KTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBA
QCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZm
ZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwot
ICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3Rk
OjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8
fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0
YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAy
YmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5jNmNiYzc5MGM3ZTA1ZjMx
NDgyMDVmYzVhMWNjNWE0NjgzYzZkNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBTdHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGN1
c3RvbURhdGE7Ci0gICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+
PiBwbGF0Zm9ybURhdGE7CisgICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwpAQCAtNjAsMTYgKzYwLDE2IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAg
ICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmln
aW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURl
Y29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAg
ICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRl
U3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7
CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFj
aFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYp
IGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVh
Y2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGU3NzlkYWVh
ZTY1OTUzNDE4ZDkwYzE3NTAxMmQ1OGZiOTY4YTUwMGMuLjliMWQ0Yjk1ZWRmYmRmYTA1OTU2YTM5
OTA3MWFiOWZkOTE4M2I5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9h
cmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25E
YXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC02Miw3ICs2
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmly
dHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRo
c0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3
Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRX
cml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAg
ICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1M
Rm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlYjQxYTY4Y2M1YWY5MjJlODgyZWMy
NjhlZGIyZTk5MDVmNDNjMjQ0Li41MjcwYzU5ODQzNTUxMDRmOTFhNWNlNTQyMjIzYjQ0OWMyYjUx
ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApA
QCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1
YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZv
cm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBo
YXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShj
b25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0
aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFl
N2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRiZGRmMDdjZjYxNjZhNTg2MGJh
YzA3NDYyNmQyOTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVy
dGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBAQCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFy
ZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEuZ2V0
KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAg
LTIyMSw4ICsyMjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQobV9zdGF0ZSA+PSBTdGF0
ZTo6Q29udmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZl
cnRpbmcoKnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFz
Q2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2
ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlmICghbV9wcmV2aWV3RGF0
YS5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAgIGNsaWVudC5wcmV2aWV3
Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLmdldCgpKTsKIAog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBAIHZvaWQgUHJldmlld0NvbnZl
cnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAg
IH0KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hlZENvbnZlcnRpbmcpOwot
ICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcHJl
dmlld0RhdGEuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3RXJyb3IuaXNOdWxsKCkp
OwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7
CiB9CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlld0RhdGEtPmFwcGVuZChkYXRh
KTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAogICAgIGl0ZXJhdGVDbGllbnRz
KFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2Uy
Yi4uZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRhOWY3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAt
NDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0
IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcHJldmlld0Rh
dGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0
aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFj
Yzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3Qg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFk
ZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMDJlYTNlYTg5YzI2YmJlNjY1NWZj
ZTYwMTBiMDIwM2MwZDJkNDE5Yi4uNmY1MzBkMTMyOWJiZmNlMTZhOWRhN2FkMDE1ODljYTUyZWQz
MDdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNywz
MSArMzcsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Cit9CisK
K1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Cit9CisKK1JlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHByb3ZpZGVyKSkpOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpID0gZGVmYXVs
dDsKKwogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgp
KQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAjaWYgVVNF
KEdTVFJFQU1FUikKQEAgLTczLDMxICs5NSwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
ICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwog
fQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0
YSkpKTsKLSAgICB9Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlKGZpbGVQYXRoKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7Ci19
Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywg
c2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEw
OCwzMCArMTA5LDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0
YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJp
bmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgp
IGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29u
dGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ug
b3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlv
bnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIg
Y2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5j
ZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVl
OwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVy
bjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGlj
X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
dGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUo
KSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
c2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0g
Y29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMu
Y2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09
IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4g
bV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWlu
dDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0yMDcsMTAgKzE5NCwxMCBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwor
ICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0
eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7
CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNl
Z21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5z
aXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIx
OCwxOSArMjA1LDE5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rvcikp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0
YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9z
aXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
QEAgLTI0OCwxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29w
eSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdt
ZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdt
ZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBl
bmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7
CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQo
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBw
cm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNv
bnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTgsMTIgKzM0MCw2
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAg
cmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5B
QkxFRAogYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsK
QEAgLTM3Nyw0MSArMzUzLDEyIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2
aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNp
ZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9
LAotI2VuZGlmCi0jaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVz
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlm
Ci0jaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgp
OyB9LAotI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlk
ZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7
Ci0gICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQot
Ym9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2Vu
ZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSgpKSwgc2l6ZSgpIH19OwotfQotCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShj
b25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhl
cikKQEAgLTQ2MSw3ICs0MDgsMTIzIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNp
emVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91
cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVu
dC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9
KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1
ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8
IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1
ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkp
CisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdt
ZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwor
fQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQor
eworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7
CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGlu
Z1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsKKyAgICB9CisKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRp
cmVGaWxlKGZpbGVQYXRoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KmJ1ZmZlcikpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsK
K30KKworV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
ZWNvZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKK30K
KworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCit7CisgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworI2lmIFVTRShDRikKK1JlZjxE
YXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRh
dGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR0xJQikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNl
Z21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYg
VVNFKEdTVFJFQU1FUikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZWZQ
dHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworUmVmPERhdGFT
ZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShQcm92aWRl
ciYmIHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRh
KCkgY29uc3QKK3sKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAorICAgICAg
ICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIGRhdGEuZGF0YSgpOyB9LAorI2lmIFVTRShDRikKKyAgICAgICAgW10oY29uc3QgUmV0YWlu
UHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdl
dEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICAgICAg
W10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBbXShj
b25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCisjZW5kaWYKKyAgICAgICAgW10oY29uc3QgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtd
KGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJv
dmlkZXIuZGF0YSgpOyB9CisgICAgKTsKKyAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBt
X2ltbXV0YWJsZURhdGEpOworfQorCitib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKK30KKworc2l6ZV90IERh
dGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVf
dCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ4MCw3ICs1NDMsNjAgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBz
ZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJl
dHVybjsKKyAgICBpbml0aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKworU2hh
cmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3I9KFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBtX2J1
ZmZlciA9IG51bGxwdHI7CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmluaXRp
YWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2J1ZmZl
cik7CisgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hh
cmVkQnVmZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgIC8v
IG9uY2UgY3JlYXRlZC4KKyAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5p
c0NvbnRpZ3VvdXMoKSkgeworICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhcHBlbmQoYnVmZmVyKTsKK30KKworUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSgpCit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Cit9CisKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0
YWtlQXNDb250aWd1b3VzKCkKK3sKKyAgICByZXR1cm4gdGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICByZXR1cm4gdGFrZSgpLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1
ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworfQorCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhp
blNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdU
Rk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldp
dGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXpl
KCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTQsMjYgKzYxMCwxNiBAQCBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0
YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNp
emUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWdtZW50
LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0
YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVu
dCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwg
c2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgp
XSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9j
YXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAg
Y29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzOSw3ICs2NDUsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1
ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZTljOGVkMDg5MmQxNTg2MWEwMDdkYjVkY2UwZjVk
NzU0MmNhMTQ4ZS4uNzYwZWI3OGExODY2ZmVkMjNiMzA0M2NkNWUxNGFkNWNlZGRlNDcyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw2ICsyNyw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjIsMTQ2ICs2MywxMjUg
QEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
aGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBi
ZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3Rz
LgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFT
ZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBz
aXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7
IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1h
cHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBV
U0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFw
cGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRh
dGFSZWY+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0
ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmKTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0
YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNl
Z21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVu
dHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQg
dGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRl
cmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAg
ICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0
YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9p
ZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZl
IChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBl
eHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVz
IHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVy
IHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9
Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
KTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBG
dW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3Qo
KT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0Owot
ICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
LSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFByb3ZpZGVyJiYpOwogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNl
Z21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5
IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFs
bG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0Zp
dCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01h
cHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0
IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7
Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0
IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYK
LQotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURh
dGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
UmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVu
dChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlk
ZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJv
dmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAg
IFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0
ZUNGRGF0YQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xh
c3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZl
cj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0Rh
dGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Q0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRy
PEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAg
IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlm
Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFBy
b3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURh
dGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdo
ZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0
b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZm
ZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAv
LyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZs
YXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsg
fQorICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7
CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIHVzaW5nIERhdGFTZWdtZW50
ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRh
U2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0y
MTAsNTMgKzE5MCwxNjMgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0g
VmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4o
KTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29u
c3Q7CisgICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5z
aXplKCkgPT0gMTsgfQogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhp
cyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBT
dHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9I
ZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0Owot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhcios
IHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29s
IG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIoKTsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsg
fQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7IGFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYp
OwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRl
cyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsK
ICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXpl
IHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENG
KQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAot
ICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJu
cyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rv
cjx1aW50OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
IAorICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0
dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgorICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlv
bikgY29uc3Q7CiAKLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNl
Z21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJs
ZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVj
dGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2Rz
LgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgewor
cHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBp
ZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjpp
c19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIo
KSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9
CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBl
bnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZp
bGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElP
TikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQor
ICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoU2hhcmVkQnVmZmVyQnVpbGRlciYmKSA9IGRlZmF1
bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsg
fQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlcihzdGQ6OmluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQor
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0b3I9KFNoYXJlZEJ1ZmZlckJ1aWxkZXIm
JikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9w
ZXJhdG9yPShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAg
IHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKSB7
IG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorCisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVk
QnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgp
IDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgU2NyaXB0QnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsK
KyAgICAvLyBDb3B5IGNvbnN0cnVjdG9yIHNob3VsZCBtYWtlIGEgY29weSBvZiB0aGUgdW5kZXJs
eWluZyBTaGFyZWRCdWZmZXIKKyAgICAvLyBUaGlzIGlzIHByZXZlbnRlZCBieSBTY3JpcHRCdWZm
ZXIgYW5kIEZldGNoQm9keUNvbnN1bWVyIGNsYXNzZXMgKGJ1ZyAyMzQyMTUpCisgICAgLy8gRm9y
IG5vdyBsZXQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3Ivb3BlcmF0b3IgdGFrZSBhIHJlZmVyZW5j
ZSB0byB0aGUKKyAgICAvLyBTaGFyZWRCdWZmZXIuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihj
b25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXImIG9wZXJhdG9yPShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5zdXJlQnVmZmVyKCk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NCwy
MyArMzU0LDI0IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlEYXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1
YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNpemVfdCBz
aXplKCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90
IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBz
dGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lm
IFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0
IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIo
Y29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2Qz
MTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uM2Y3ZmJhNDFhNGExZWZiMTFjY2RmZmQ1NzI2NzhjZGZm
ZTUzZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRh
LndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5
cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUo
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4
IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmEwMzljMjUyNWVkNWZl
NjM1MGNjYjBhMWFhMzY1MGQzMTk4NmY2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVi
bGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1
c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZv
aWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIo
KSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBj
MDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93
UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0
KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGlt
ZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1Bs
YXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRh
LCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5
aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1
NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMz
Njk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRB
cnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAg
IGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZv
cm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0
ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFs
OwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5
LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi40
N2MxMGY5ODAyMzRjOWFiYzYwODRlYzIxMDQ1NmY2YjE1NDgxOTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zNSwyMyArMzUsMjAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYgZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRhdGEp
OwogfQogCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmlj
aWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhp
cyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBj
b25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09u
ZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFp
blB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEp
KQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhj
ZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OSw2IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAg
ICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2Qz
MDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2
N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVi
b2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShN
QUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZm
ZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZl
cnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tO
U0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBb
aW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0
aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2Vu
ZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFk
VHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggZWU3YmQ0YjNmZGJmOWI3YmM2ZDhkYTBjNjM1Nzc1
Yzk1ODViNzE2OC4uYWQ5NmY3ZjUzYTJkY2MwNGQyOTMyMTAyZWVkODE5ODBmYmZkNTAxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBz
aXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJ
bnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxj
b25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIg
X3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0g
KHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5T
VUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk1LDIwICs5NSwxOSBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWlu
UHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRy
PE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAog
ewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRy
LCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBi
cmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIApA
QCAtMTE5LDcgKzExOCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxO
U0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBh
ZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21l
bnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXgg
NWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUx
MjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3
IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUg
YnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFu
eSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9
IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFm
Y2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNp
emUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0
dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAg
YXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBp
bml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
ICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9v
bCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwog
CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5
SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VO
QyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1
cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRh
dGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0
RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERh
dGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3
ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJy
YXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9
IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25E
YXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAg
a2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERh
dGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkg
fHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtl
eUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmpl
Y3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAg
Ly8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUg
YmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBr
ZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAg
ICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3Rv
cnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVl
YWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTcz
ZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5
ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRB
cnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rl
ckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwg
bV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgw
NTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5j
b2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJy
aWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3
OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMy
LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFj
ay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rlckds
aWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50
QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxH
VmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRl
cik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0
ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCks
IG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5n
ZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCks
IG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5n
ZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5
OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0
MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2Rlckds
aWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDJkYmEw
MTk1MjlhNzNkM2ViNGEyNGEwZjYxMTI4ZjdhMTg4NzgwZTQuLjg3ZDc4NGJjNjY1MThmYWIyNmIz
NDY2M2E0NjQ0MDA5M2RlMjcxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIFJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAg
ICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVl
X2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxT
aGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3
YzQ4NzhhYmVlMTAzZmJhZjIxZjU3MC4uMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIw
N2I0NWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGUKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxp
dHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZv
bnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2lu
IG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3
cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA3NDQyMDA0ZjAwYjVkYmEyN2YzYzMy
ZTY2N2IzNmJjY2Y3ODUxNGNkLi40YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEy
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJs
ZSwgSW52aXNpYmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0
ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJz
dGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2li
bGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGb250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4
NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3
NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBj
bGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNl
cyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBD
cmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7Cisg
ICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAg
IFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVm
PEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDJjZjQ0OGJlYTJm
YTZhZTRkNDdmOTY0MDAyYjNhOTA2YzAxMjkwNjcuLjY3NWUyNGI0MGFjN2FhZGU3NDA4NmYyNDJl
YWQwMTUyMjFjMDI0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFN0cmluZyBjcmVhdGVBVkND
b2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgQVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICAgICAgLCBoZXgocGFyYW1ldGVycy5sZXZlbElEQywgMikpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNl
QVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTA6MjAxNAogICAgIC8vIDcuMy4y
LjEuMSBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0IGRhdGEgc3ludGF4CkBAIC0yNTUsNyArMjU1LDcg
QEAgU3RyaW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgICAgICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5n
KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNE
ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYt
MTU6MjAxNAogICAgIC8vIDguMy4zLjEgSEVWQyBkZWNvZGVyIGNvbmZpZ3VyYXRpb24gcmVjb3Jk
CkBAIC00MzYsNyArNDM2LDcgQEAgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VE
b1ZpQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogICAgIHJldHVybiBwYXJh
bWV0ZXJzOwogfQogCi1zdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNv
ZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUg
Zm9ybWF0IG9mIHRoZSBEb1ZpIENvbmZpZ3VyYXRpb24gUmVjb3JkIGlzIGNvbnRhaW5lZCBpbiAi
RG9sYnkgVmlzaW9uIFN0cmVhbXMgV2l0aGluCiAgICAgLy8gdGhlIElTTyBCYXNlIE1lZGlhIEZp
bGUgRm9ybWF0LCBWZXJzaW9uIDIuMCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuaAppbmRleCBhZjc1YzYyZDExNTgwYWQwMzhkNzE3YmU5NGIz
MzFkMzlkZGRhMjdhLi5lZGZlY2IyNmQ4OTQ2N2EyM2QxZjU3MWNiYzVlOTFiMmZhMzQ3ODVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5o
CkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb3VyQ0M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKICAgICB1aW50OF90IHByb2ZpbGVJREMgeyAwIH07CkBA
IC00MSw3ICs0MSw3IEBAIHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1BhcmFtZXRlcnMo
U3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+
IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7
CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwog
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25z
dCBBVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBAIC01NSw3ICs1
NSw3IEBAIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5n
Vmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJz
ZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+
IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVI
RVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVj
dCBEb1ZpUGFyYW1ldGVycyB7CkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1ZpUGFyYW1ldGVy
cyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBw
YXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJl
Y29yZChjb25zdCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVE
b1ZpQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4
ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5Mjll
NjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVU
eXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRh
LCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9k
YXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQog
ICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4u
OTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVs
PiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5
LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8
TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwo
UmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7
CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYw
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90Piht
X2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCks
IDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwog
fQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwg
V1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNy
ZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1v
dmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
Y3BwCmluZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTcz
YjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7
IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50
MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUp
CitzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNl
dCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zm
c2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJ
bnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1
ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBi
b29sIHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9m
ZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXpl
b2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0
b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50
MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNX
T0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNp
Z25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29s
IGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBz
Zm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50Lmlz
RW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50
LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5
NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250
OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250
KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0
YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIg
aXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZG
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09G
RiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQg
KGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVy
d2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4K
LWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhf
dD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVy
IGlzIGEgV09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1
cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1
ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMs
CiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5
Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGlj
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFz
ZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
U3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVy
LnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0
byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmlu
ZGV4IDE2MTFiYWFjNDM3MGI1ZmM5OGEyOTIwNzcyMzVkNDVlMDJiNWQwYmEuLmZjOWFhOTlhNjlk
ZmFlODllNjViMmFiM2FmNDg5MTQwNzY4NWZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFN0cmlu
ZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1h
dERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGlj
X2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGlj
dCwgQ0ZTVFIoImF2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQog
ICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25z
KTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1
dG8gcGFyYW1ldGVycyA9IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmln
dXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuICJhdmMxIjsKQEAgLTEyMiw3ICsxMjIsNyBAQCBTdHJpbmcgY29k
ZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNj
cmlwdGlvbikKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0
PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENG
U1RSKCJodmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAg
ICAgICAgICAgICByZXR1cm4gImh2YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9u
UmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7Cisg
ICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBh
cmFtZXRlcnMgPSBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0Nv
ZGVjVHlwZV9IRVZDLCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlm
ICghcGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTM3LDcg
KzEzNyw3IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRl
bnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1w
bGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1w
bGVFeHRlbnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
YW1wbGVFeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsK
ICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0
aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFw
YXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMu
LjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09O
LCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5n
IGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24p
OwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFU
eXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAg
aW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBp
bml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAg
ICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEo
KSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRh
LT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXph
dGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5n
IH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0K
ICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAg
ICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9u
cywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAg
ICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhw
aXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkg
c3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxz
ZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAg
ICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVx
dWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAg
ICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0g
ICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNz
Q29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBj
b250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVz
cG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVx
dWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpb
UEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0
aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShy
ZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBv
bmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAg
LTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBm
b3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNl
c3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmll
cjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkg
ewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtl
eSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5
czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRB
VkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0
aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6
c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRL
ZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRv
KiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAg
aWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChB
VkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAg
W3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVu
dGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9w
dGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJl
cXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMs
NyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFu
Y2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0
c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8
TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzEx
OTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVl
c3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNl
Y29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50
cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+
c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5i
eXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5w
dXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBt
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5
SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAg
ICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250
ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRp
Zmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtl
eVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
VU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtr
ZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwg
Y29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSld
ICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChB
VkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0
byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0
LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250
ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRp
Zmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtl
eVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9
IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250
ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRm
NGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDks
NyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dl
YkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBh
cmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVw
ZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21w
bGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0
ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENI
X1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5
bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBA
IHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxv
bmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21f
bG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxE
YXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAog
ICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQppbmRleCAxYTQzYzdkZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEz
Li5hYmQ4MWU1ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIx
Myw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEo
U2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBz
ZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVz
ZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3Bh
cnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRh
UGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEz
MmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5
NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsK
LSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
IAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAg
IFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
aW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVk
ZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsK
IH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwg
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZm
ZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50
Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFz
cyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAog
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
KQpAQCAtMjM4LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAo
YXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFV
UkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3Vs
dCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1
LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAg
c3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3Qq
IGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFS
ZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgy
OTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZh
M2YwNGFmOWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMx
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3Jl
YXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YTsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9m
YWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0
NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODlj
ODU4YTNlNmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVBy
b3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9m
Zl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRC
dWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVk
QnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNp
emUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQot
ICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRp
SGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAg
CiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VT
b3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdl
RGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2Fu
IGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3ds
ZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2Vs
ZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlP
IGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0lt
YWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZE
YXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURh
dGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBD
R0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNv
bnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBv
c2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVz
ZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93
biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGlj
aAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBj
YWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxi
YWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRC
dWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNv
bnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAg
ICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCks
IGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5m
Zjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29k
ZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQo
KQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEo
KS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9w
dENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1
OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5
NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3
IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwg
b3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYx
MWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2
b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRf
Y2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byog
YnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAg
IGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRh
Q29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFj
OWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAg
UmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlD
aGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7
CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlU
YWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICBy
ZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1
NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRm
MjMzMDFhNzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVG
cmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWlu
aXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODEx
ZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0
OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25z
dAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5n
X2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlciht
X3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZh
Y2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
ICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBF
X01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJiYWVh
NWI4NDViZGVmYmI2ODZmZTI1MjU5MzMuLmI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTVi
MjkzYmY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkg
QEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QK
ICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkK
IHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVh
bWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmgKaW5kZXggZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5
MjM5YmI3ZjBkOGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRT
aXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBt
aW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAg
ICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8
R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKaW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1
MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMo
KSBjb25zdAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRh
dGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAg
ICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVy
OjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVu
KCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4
MjRkZmMxYzM4MWE1ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3
ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMzY2OSw3ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAg
ICBHU1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMg
ZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0Zjgo
KS5kYXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAg
ICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNp
emUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5t
X3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENv
bnRhaW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1
MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAg
Ym9vbCBpc1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBw
c3NoOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3Rh
dGljIHZvaWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBn
Y2hhciogZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVy
IHVzZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFy
a3VwVGV4dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRl
eHRMZW5ndGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4
dExlbmd0aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNl
ckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAg
ICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lk
IG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAog
c3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBt
YXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJy
b3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAg
ICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxv
YWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1
YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjMzMGJlMjEzYzdmZWZlZGIy
Zjc4OGI1YzFlYzQ0MWFmNzE5NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdT
VF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2Rl
YnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHBy
b3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFj
dENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJ
bml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFw
cGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9h
ZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChl
eHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYg
KHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0
Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAg
IG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03
MiwxMCArNzYsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwg
c28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0
ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsK
KyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAK
LSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7
IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVy
VHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMz
YTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQo
KSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVz
Y3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZm
ZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2Njdl
NDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4
YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1
bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpk
YXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMo
W2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQx
NzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNz
Q29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0Nv
cnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBj
b3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBn
ZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
R2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQx
Nl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0
IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRo
S2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBt
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09m
ZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5
cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgw
MQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJs
eVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBh
cnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jk
c1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJl
bWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFy
aWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZh
cmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50
cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcg
KzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAg
ICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50
R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNz
ZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1i
bHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkq
IGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9m
ZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0
aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50Owog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8g
VGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMg
YW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAot
ICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBj
b25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0
aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJv
b2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWlu
dDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlv
bnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRo
Q29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zm
c2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3
ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5m
byhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJ
bmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZz
ZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0
YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVN
YXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3
ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlx
dWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5k
ZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkw
YzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMs
NyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7
CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShj
aDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNo
MikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZl
ci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIs
NyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
VGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2Ugewog
cHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRF
bmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3Np
dGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlz
IGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRF
bmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
b25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2
X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxp
ZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90
IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZm
ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAg
IH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRh
YmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFn
ZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwg
R2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0
Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdl
SW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZv
cm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2Ez
ZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RI
ZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZv
bnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJl
d3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAo
d2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFi
b3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jv
b2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkK
IHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBj
b25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVy
Kj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVj
dG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250
IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAg
ICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIx
NWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJj
ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25z
dCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8
Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2
OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIz
OGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0x
MTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQg
Y292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292
ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFn
ZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJh
Z2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDog
U3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNb
MV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxk
IGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHlu
YW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5
cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0
U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBA
IHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxv
b2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAg
IGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2
X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChp
bmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50
XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2
IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNv
bnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0
aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBA
IHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZz
ZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0
dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVu
ZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBG
ZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmlu
ZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBm
ZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAm
ZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcg
KzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4
WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVh
dHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6
OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
ZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRh
YmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0
OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lz
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tj
b3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNl
IHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRz
WzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUq
IHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAg
LTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxl
KiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAg
IGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAt
MzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2Ny
aXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0g
ZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2
LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1
cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRM
aXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3Qq
IGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2
YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0K
LSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxv
b2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25z
dCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVy
LCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0g
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAg
IGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7
CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcg
ZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2
NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0
dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFw
PEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1
cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAg
ICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVj
dCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2
YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIg
PSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29u
c3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9w
ZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5U
eXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZv
aWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUg
aXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxl
KiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBA
QCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRW
ZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxh
dGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9w
ZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlw
ZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRW
ZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2Zl
NjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJj
ODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2
LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZv
bnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5n
IGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJj
ZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0
ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9u
dCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2Ny
aXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
c3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZh
cmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdz
PGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2
NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250
TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBm
b250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2Ug
PSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJv
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYy
MDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90
aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJl
dHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNm
ODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1E
YXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJl
c3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAg
IEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdP
UkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRj
LCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RP
YmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEu
LjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsg
bV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0
UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lk
IHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRh
ID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRh
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0
b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFy
Q3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRy
PEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2
MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3
ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVz
OjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkp
IHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdt
ZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAg
IG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250
aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2Vu
Y29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAg
ICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAg
IHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjFj
ODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFy
a2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0
YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQ
cm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3Qq
IGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+
bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtl
ci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJT
aXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNp
emUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVy
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVy
OworICAgIHJldHVybiBidWZmZXIudGFrZUFzQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAg
LTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlT
aXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVH
SW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZm
YjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4
MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQog
I2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OGNjMGU3MmFm
ODc2NTVlYmFlNmNhNWQ0Yjk3OGMuLmE3ZjQ1MDMyMGU5MDhjNmExZjVmMGY4OTU2MDkyYWUyNDc5
NWEyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CkBAIC0yNDAsMTQgKzI0MCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
dHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJU
RkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQ
YXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYg
cmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRl
clJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxU
b1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3ku
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJU
RigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5v
dFJlYWRUeXBlOwpAQCAtMjU1LDcgKzI1NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtz
dXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVy
bmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDlkYjBhYjM0YjI2MThhMDQwMmIwZDI0M2RjODcwN2EzNjc4MjNkZTMu
LmQ5ZjQ4ZWQxYjM0MDVkMmRlYTk3NzhjM2E2YzU3MmJjNTMyZmI5MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAt
NzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21f
cGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmIChOU0RhdGEg
KmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwog
fQogCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwog
fQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNs
aWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRl
bnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNs
aWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVu
dC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEg
PSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5
LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAog
ICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAg
aWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0
cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAg
aWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0
cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpu
dWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJl
c2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUyMSw3ICs1MjEs
NyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdl
JiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVU
eXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JN
SU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEu
Z2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJv
YXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
c2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDks
NyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJE
X1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNE
YXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9h
cmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAg
YXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAg
ICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRv
JiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4o
dmFsdWUpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwog
ICAgIH0pOwogCkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAg
cmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIGJ1
ZmZlckZvclR5cGUodHlwZSk7CkBAIC03NjEsNyArNzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
bmRleCwKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRl
bSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KaW5kZXggMjE2ZWRkODQ3NWUxNDg4ZGI5ZWE2MTBmMTIzYmFhODE5ZTZiMzFmYy4uYTE1MTZh
ZTM0ZjgyOWJhNzJjYTU2MWQ5NWU0ZmM5NzhiOTUyZDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBw
ZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQog
ewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRo
TUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTI2
Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVu
dChOU0ZpbGVXcmFwcGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbgogICAgIGlmICghUlRGRERhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFJURkREYXRhKS5wdHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBh
c3RlYm9hcmROYW1lLCBjb250ZXh0KTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjg1
LDcgKzI4NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAog
ICAgIG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZvclR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkSW1hZ2UudXJsLCBjb250ZXh0KCkpOwotICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZv
clR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBh
c3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgbV9jaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5w
dHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgaWYgKGF1dG8gYXJjaGl2ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVE
YXRhLmdldCgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKIApAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJl
ZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAg
cmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVy
cmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBh
c3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgp
CiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1J
bmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzc2LDcgKzM3Niw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRl
eHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRh
dGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRU
eXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBh
dHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGE3ZmU3MjU1NDM3NjY1
ZThiOGEwYzc0NTNkMzA0NzQ5ZDQ1NjJmNjcuLmI0OWFkN2MwNGE1MjgxODJhNTFiOGEzYTk4NGQ3
ZDkwNGQ2Mzk3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlw
ZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3QKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRh
IGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlw
ZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAg
ICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAg
ICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7
CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkK
ICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRh
KCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1
cm4gW21fcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlw
ZXMpLmdldCgpIG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2Vi
U2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0
Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWluZGV4KQogICAgICAgICBy
ZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGluZGV4LAogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBl
OnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAg
IH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA3LDggKzUwNyw4IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVi
b2FyZEN1c3RvbURhCiAgICAgICAgIGlmICghcGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5T
RGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8g
cGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERh
dGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5
OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAg
ICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9k
YXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1f
YXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1
ZTgzODRmMzZiN2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwog
ICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3
cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlm
eSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAg
ICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAog
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBA
IC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21w
bGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBzaXplKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9Owot
ICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICBy
ZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAppbmRleCAwYzkwODE3YzRlOWI0MWYzNDlhNDFhZTY0YjcxOTA2Yjk1MWViODlhLi42MjM2NGQ3
MTNjOTVhOWY4NDNjN2QyOWMwMWYwZGViOWFlNmQxNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0
X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJ
bkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZm
ZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1No
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50
cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+
PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRh
Ojphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCmluZGV4IGU5ZDM0NDNmOGI1YzY4MjQ0NjY1NmMxODgwNTY1N2NjMjlkMmQ4MzcuLjEw
ODI4MTEzMWY4M2U5OTM3MGZjNTA5NzgzM2NjNTBlZThhZGJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwog
Y2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgIHN0cnVjdCBFbmNvZGVkRmls
ZURhdGE7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3Jt
RGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFy
eTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRC
dWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFt
KCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0
cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUy
ZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291
cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURh
dGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFk
ZjEwNzBkYmI4MzgxOTI1MzY5NGFhLi44OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5
NzViNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsy
MTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwg
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAot
ICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFu
ZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAg
CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmlu
ZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBi
MzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAg
IDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3Vy
Y2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRh
c2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07
CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVz
aXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxl
ciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9Owog
ICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3Vj
Y2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwy
MiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZl
UmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZm
ZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhN
RTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRl
ciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAg
IC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBh
dCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVm
ZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0
dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlm
IChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBk
YXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0
YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9y
ID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rh
c2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFr
UHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0g
TlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEz
MCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRv
VGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5n
ZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEt
Pm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYg
KGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5l
bmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAg
ICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZl
ci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVk
Q29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3Rl
YWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50
TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpA
QCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVy
YXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpk
YXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0
YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0
N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcg
QEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9u
IGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBk
YXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1Jl
Y2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVn
YXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdT
ZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZl
RGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkz
MWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUw
Y2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9p
ZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47
IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0g
ICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsx
MzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGls
bCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQg
dGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5z
aXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJv
b2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICgh
Y2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3Vu
ZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhl
IGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBv
ay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7
CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMg
YSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91
dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0
YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0
KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFy
eS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4u
YWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03
OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJ
ZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1f
ZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxl
LCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25s
b2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThk
NWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQw
MzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
OjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlm
IChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENh
Y2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIo
Jm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
QnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXpl
KCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDczNjVmMDEwOTQ0
YTkyNmIwZWJjYTk5NmJkZGFlMTQ0OTUwZjYzZTMuLmY0OTg2YjAwMTA4YjE3OGY2NDdlNzZlNzM0
Y2EyYzNmNzNjMDc0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0
cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0cnVjdCBQYXN0ZWJvYXJk
RmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyArK2NvdW50OyB9Ci0gICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2Nv
dW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKIH07CkBAIC05NzgsOCArOTc4LDgg
QEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZm
ZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRh
KCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxl
Q29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
IAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDMwLDggKzEwMzAsOCBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmlu
ZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRl
bXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVT
dWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAg
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUo
KSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhh
bmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0
dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBp
ZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMw
NjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1
ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAt
MjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNl
LmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1h
a2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
VmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFy
cmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7
CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25z
ZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlh
S2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2Vy
dGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBj
ZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWls
ZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9
IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAg
ICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykp
KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3
N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAg
IG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlw
dEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRC
dWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5n
IFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29u
dGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVm
ZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNl
Z21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIp
Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0
ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4
IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJi
NDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxT
aGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRC
dWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVy
ID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0K
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVy
LT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5p
c0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxl
TWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlu
cyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4
IDQzM2Q5ZTFhNDVjMjk4ODU0MmIwNWU3NGI0NzE3YTc3MDU3MjhiYjYuLjJhNzEyNTQ3MThlYWVk
ZjUxYTQ0N2VjZTYyYzRjZDcxNmJiMDc1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRl
ICJGb250U2VsZWN0aW9uQWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIldPRkZGaWxlRm9ybWF0LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC03OCw5ICs3
NywxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAg
ICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAo
bV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
LnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29u
dGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250aWd1b3Vz
RGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0Rh
dGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEpOworICAg
ICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAg
ICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDEw
ICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li5kYWI3
M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJl
cXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAg
V2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNi
MGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNk
ODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsx
MzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQs
IEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNl
LT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZp
bmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNh
NDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0
U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFw
cGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0
b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91
bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFw
cGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZv
aWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApp
bmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4MDVjMjgxYjk0ODA1NDVhZTI2Li45YjExMmI5ZGIy
Y2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5n
QWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxCbG9iPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNl
aXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFj
ay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBp
ZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdl
KG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICAg
ICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKTsK
ICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRl
bnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNl
TUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShk
YXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsyMTcsNyBAQCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVy
KCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZl
cik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQg
PSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAg
ICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQodW5zaWdu
ZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVh
clJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAg
ICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBu
dWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQg
PSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9y
ZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAg
IGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vycm9yKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDA0ODQ2MjZiMmU1ZGZkZGE3Y2IxNmM0ZjU1MjJk
ZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEyZDgwMzc3NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIK
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNzIEJsb2I7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhy
ZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzcsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5n
QnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlm
MzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3
LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwK
ICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVl
c3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFs
Q2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVx
dWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRl
eCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFm
OTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0
LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0
dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3
Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1Nh
bXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVt
b3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpE
YXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93
cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBh
dXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAg
fSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRl
NGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjBiOWY0OWQzNjRjMjU5NWUyMjNiMzExNGRlYWZj
ZWU5MmE0MDBmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQg
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5j
aHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBp
ZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBl
bmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZm
ZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3Mo
Qm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTMwNiwxMCAr
MzA2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94
RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0
ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEu
ZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3
b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczNCwxNiAr
NzM0LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikK
ICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlz
TWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEu
ZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2Vi
TG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAg
Ly8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMg
Z2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNw
ZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5p
c011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhLnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFy
dCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY5
LDEwICs4NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2Fz
ZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNo
ZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hl
LT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0g
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IHJlcAogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgp
OwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5j
b2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwog
ICAgICAgICByZXR1cm47CkBAIC05MDksMTEgKzkwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVk
RGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5j
aHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0
KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmICht
X2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBh
c3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4K
LSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAg
ICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxv
YWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1OSwxMiArMTI1OSwxMiBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNT
RVJUKG1fYnVmZmVyZWREYXRhKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBp
ZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERh
dGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI4OSwxMiArMTI4OSwxMiBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAg
IGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hl
RW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNl
c3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25l
dHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBT
dG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1f
bmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZm
ZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRC
b2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50
UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xv
YWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJs
ZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5k
ZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTky
OGI5NWQ4YzZmNTdiZTI1YzVmMjExODk4OWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQ
b2xpY3lWaW9sYXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
QEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWRE
YXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAg
ICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsy
NDEsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsK
ICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9y
TWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2Vu
ZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZk
YzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNjMmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQy
N2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlD
YWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAg
ICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0
Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwot
ICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2lu
ZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZv
aWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJh
OWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1
NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAg
ICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBz
aXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNj
MmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2
ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEs
NyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5m
b3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBX
VEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEg
Ym9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAg
LTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25z
dCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29y
ZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJv
ZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5
ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5k
YXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0
OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIo
KSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZm
ZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkg
fTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFk
ZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmlu
ZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4
NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQog
ICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7
CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFs
aWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8v
IDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hl
RW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3Qg
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmICht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVt
Q2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBw
ZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAg
LTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxl
dGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1f
b3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlS
ZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8v
IENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAg
ICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1f
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9j
YWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3
MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAg
ICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAg
ICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRl
eCBlNjdlMDViYTg0NzhhNTgxODMwZTM5NzA2OGIzMmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4
MTgzYzk2YjgzMTIwYjFmZWYxNTZiYjhjMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYx
LDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0
ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVz
dC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRv
IGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5k
YXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19t
ZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhj
ZWNlM2ZjZjRjYjMzZWY3MS4uMjlmNzFkN2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFy
ZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUo
KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZm
ZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNk
ODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJiMmQ4MDJhYzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xh
c3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0g
ZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsg
fQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZm
ZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkK
LSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAg
IDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0
aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQw
NmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUz
Y2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBz
aGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRl
U2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAg
ICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDcz
MDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0
ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
QEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFn
ZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwog
Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVf
dCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBj
YTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5
MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
V2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVh
c2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRh
KQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3Jl
YXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZl
UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAg
IC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0
YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0
ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRm
MTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2Vp
cHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmli
YmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250
RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFs
dWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0
byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91
cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwog
ICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUx
YmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAt
MTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0co
UmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXpl
ICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsg
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsK
IH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4
Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9v
bCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZl
cigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRo
aXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsg
KnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJl
ZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFw
KCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuaAppbmRleCBkYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUx
NjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVh
YmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAg
ICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFw
SW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3No
YXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4u
ZTkzZmQ4OWU3ZWZjMDc2YTliOTE4Nzc3YmQ2MDhjODM0NGI5NGFiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcg
QEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAg
ZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0g
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUp
KQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMu
c2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcg
KzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8
U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAo
dWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQog
ICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVy
IDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQu
cmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAg
ICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwg
WyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAg
c3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0x
NTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3Ry
aW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsK
IAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwog
ICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxh
dGZvcm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBz
dGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkp
OwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0
YSkKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUp
IHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0
Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3Zl
KGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1v
dmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgog
CiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQor
CitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3
ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29k
ZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlm
MDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkz
YWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
IGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3
ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAt
MTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENv
ZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21h
cnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFy
Z3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1
MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJz
V2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0
YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAg
Rm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwog
CiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQz
ZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAg
LTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJm
ZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcg
QEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRI
YXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5n
SW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0
dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVBy
b3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA2NDQ5MWUxNjJlYzZjNWJjZmEzZmM0Y2IyNDlmOGQ5
Y2NiNjM5YjIxLi4xYjliNTRiNjI3MTgxNDk1MDhmOTAyN2M4M2M2NzMyMDZiYTgyOTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ygog
ewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNw
YW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlv
bjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24o
eyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2
MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2Yw
ZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBA
QCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3Jh
cHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmls
ZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFt
X3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDA0Y2ZkMDI5YWM4NDgzYTdjMzIxYmE1NGIxMTgw
Yzg2ZmM0ZmQ3OGEuLjNlOTIzY2Y2NDlkOTZlMzRlZDJhNTFmOTE3MGQ1YjE3NDFmYTY1MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MTYwMCw3ICsxNjAwLDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNv
cmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAg
ICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGln
aHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpo
aWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6
bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQg
YWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9y
ZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAg
ICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0
LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdo
dC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmln
aW5hdGVkSW5BcHA6Olllc107CkBAIC0yMjIzLDcgKzIyMjMsNyBAQCAtICh2b2lkKV9zdGFydElt
YWdlQW5hbHlzaXM6KE5TU3RyaW5nICopaWRlbnRpZmllcgogCiAtICh2b2lkKV9yZXF1ZXN0UmVz
b3VyY2U6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
TlNEYXRhICosIE5TVVJMUmVzcG9uc2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgeworICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3Vy
Y2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiYgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bmlsLCBuaWwsIGVycm9yLm5zRXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNi
MDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUz
MTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVj
ZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcK
ICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0
a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAg
ICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1
c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0
PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4
NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4
Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+
bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcy
Nzc0ZTI2OTY1YjJkYmIyYTczNWUuLmJlMTQzNzBkZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRh
NWY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0Vy
ciAhPSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9u
cykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdp
c3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
cmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBh
dXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdp
c3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0
aW9uRGF0YSB9KSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7
CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3Vt
ZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkg
fSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMmUxMGRhNjZhYmY2NDg3MmY5MTNjMTMwNTNh
MmViN2RiN2E3ZmMyYy4uMTFjYzc1MjhhMWU1ZjZhODY4NGZjZTA2N2UwYWRhMDc0NjJlZTRjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5
ODMsNyArMjk4Myw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5
cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAg
ICB9CkBAIC00NDc3LDcgKzQ0NzcsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNl
dEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxl
VVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1
dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
bnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2Fy
ZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUw
OCw3ICs0NTA4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJk
KE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9t
aXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRn
ZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAg
LTQ1NjEsNyArNDU2MSw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRG
aWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAg
ICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBl
clJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NjEzLDcgKzQ2MTMsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NDYXRlZ29yeSBwYXN0ZUFjYwogICAgIGhpZGVET01QYXN0ZU1lbnVXaXRoUmVzdWx0KFdlYkNv
cmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNE
YXRhICpkYXRhID0gW3Bhc3RlYm9hcmRGb3JBY2Nlc3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVn
b3J5KSBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmll
cikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEo
cGFzdGVib2FyZE5hbWVGb3JBY2Nlc3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSk7CiAg
ICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRl
ZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZjQwMDBhNmI3MTkxMzVjMzQzYjRjZDA5
YzAyM2E2OGYyYzVlNzg1ZS4uZWFmNWVlYTk4MjNjYzRmMjU5ZWFkM2UwN2QwOTA4MzFkOWQzZjlk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzUsMTAgKzMzNSwxMCBAQCBEb3dubG9hZFByb3h5JiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdAogICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJv
eHkoZGF0YVN0b3JlLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0LCBmcmFtZUluZm8sIG9y
aWdpbmF0aW5nUGFnZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJl
c291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNv
dXJjZShwYWdlSUQsIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShy
ZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92
ZShlcnJvcikpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4NmYxYjMwNDRmYzg3OWQwOTNm
ZWU5NmNlYTZlYjEwYTUzODc2NjM0Li43MGI1N2I1NDQ1MzkyNjUzYjQyNmFkNzg4ZmIxMTIyNWI3
OTJhZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKQEAgLTEy
Myw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYg
Y3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2Vi
UGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
Jik+JiYpOworICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAog
ICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDE5NWMzYzgyMjA4OGE3
N2JiOWRmMTY3ODUwMTBmNDE1NmM2Y2M2NjEuLmVkOWQ4MzM3ZjQ3NGY3NzhlZjc2YjE5NGM2OTIw
YTExODRmMmE0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OSw3
ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8s
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJp
bmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFE
ZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBH
ZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODk1ZTdiOGNkNWI5
Mzk5MjY0OTM2MTVkOGY3NzU2Y2Y1ODdhODY1NS4uNzA3ZmQyZGU3YjdhYzBiMjYyZmQwZjc2NzNj
Mjg5ZDg4MjNhYmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC02Mzc3LDcgKzYzNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpbwogICAgIGRvd25s
b2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNz
KCkucmVxdWVzdFJlc291cmNlKGlkZW50aWZpZXIoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGY4OGJiNWI3OWViYzZmYTJhOWU4OTY1NDMzMTRmMDIw
MjhmNjVkMi4uOTAyMzdhZTU1ZmY5M2RlNWI5NDc5MTY5NmUxMzlhYjE1ZTM4NzM0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFz
cyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVy
OwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFz
cyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKQEAgLTExODMsNyArMTE4
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2
b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpOwogCkBAIC0xMzc1LDcgKzEzNzUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYpOwogICAgIHZvaWQgcmVz
dW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKICAgICB2b2lk
IGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNl
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5n
ZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZj
NDdiZWYwNTFkODBjMTZiZDEuLmVkOGNiNjUzZWNmZGQxMzQ3M2VlMWQyYWY1MGJhYTdhNmY3YTEw
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBA
IC0xODcsMTAgKzE4Nyw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2Vu
dCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEp
Ci0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAg
ICAgbV9zeW5jRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTUsMTQgKzIxMiwxMSBAQCBhdXRvIFdl
YlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAt
PiBFeGNlcHRpb25UeXBlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5nRm9y
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAg
ICAKLSAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0g
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+
ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAorICAgIGlmIChpc1N5bmMoKSkgeworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEuc2l6ZSgpOworICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS50YWtlQXNDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6
ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tE
aWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxv
YWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEz
MDg1MjY3Li5kZDZiNzI0MTBhZGQ0ZWY2MzFkMjgwNjllMTRhM2YyYTAwYzVjY2IyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC00Myw3ICs0Myw2IEBA
IGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlciBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggM2IwNGE4MzNkYmUwYjZiNjZlZTE0
ZDNjMzAwZjMwNjg3MThiZjJjZi4uNWM4ZTNiOTJmMDg5OTJlZjRkYWQ2MmIxNzdhODJmMzE2MDhi
YmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlk
Q2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xp
Y3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNV
SUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGZhYzllN2ZiNzhiZWUwZjYyOTQ1NjcyZTNiYjc0Yjll
MDUyMGUzMGYuLmI2ODRlMWM5NGVhY2I2NzI4YmIxMzA2OGNiNjk1MjI3MDFmYThmODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAg
LTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9u
RGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRW
aWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURh
dGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVM
TCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxMmYzYTE1YTQzYjhhYzRkMTUxZmYzMDNjM2M1Zjc3ZDEz
NTMwY2JlLi45OWFlZDAzNjg4ZTBlNWM2MTc0NzkwZmRkZDhkMjUwZTlhYjcwYTJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0Miw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZv
cldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNB
cnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVi
b2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGlu
SXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9t
UGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlm
IChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIu
Z2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAg
ICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NjUwLDcgKzY2NTAsNyBAQCBzdGF0aWMgQk9P
TCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3Jp
Z2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzYyMyw3ICs3NjIz
LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFX
aXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygi
U2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBz
aGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmls
ZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQ
TkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsg
ZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdl
UE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0
OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmll
dzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZGQ4Mjk1M2I5
MGY0ZjEzYmRiOGNhNzZjNDI4ZDBjMDcyYzBjNWRiOS4uN2E4ZmFjZDMxN2EwNjM5NmQ2M2I4ZGVl
YzY1NzFlNTUxM2VjNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpp
bmRleCBlNDQyN2UyYzIwZGYxZWFjYWE0MWQwMjM1N2U4N2ZiM2FlYzE3MGVlLi5jYTZiODczYjFj
ODNmNWE1MDdiODVlYTBmZjMxY2VkYWRkMWFhYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcg
V2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRl
eCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5
NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1w
bGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2Fy
ZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBE
cm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBX
ZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAw
YzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAt
ICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5n
RGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRp
bmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6
OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQy
LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0lu
RWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlw
ZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9y
UmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAg
ICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAg
ICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVi
b2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVb
dHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAg
ICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYy
ZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcg
KzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5n
ZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBp
ZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5
UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBw
YWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmco
KSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBl
PEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRl
bS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRh
Nzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQ
YWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdp
bGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAg
IGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92
ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5h
MzRlMjEyZDA3YWYyZmY1NzNlMWE4YTM0MGVjMWQzZmNlYjQyYTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1
bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSBy
ZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVl
c3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihk
YXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJl
YWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBp
ZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAg
IGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBj
aGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VT
aGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1
ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5
aW5nKGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCBy
ZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAg
ICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVz
dCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNv
ZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgp
KSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVl
MDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEz
N2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBA
IC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6
Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0g
MCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsK
KyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA5NGQ5ZDJjYzNlYjI4ODBjZGNmMjJj
MDcyYTM5YTk4OTU1ZmQ0NDMwLi45OGE2ZTJlN2I1N2U1MjMxOGY0MmM4Y2QxN2U0ZjBkZTA1MDk0
MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciBy
ZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0
ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRf
dCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9u
c2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFs
aWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29u
dHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRD
b250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2Rl
ZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQog
ICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZGM1NmQyYzY2ZWQ4NmI5NjI5NTBhMzQ4
MjA4M2UzNDU4YjMyYjUyYy4uMDhjZmJiNTUwZWRjYjU2YzU5OTdhMDQzNmMyOTY1M2VmMGU4MDNl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTQwMywxMCArNDAzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9t
YW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLQotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChi
eXRlcywgbGVuZ3RoKTsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywg
bGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDM3LDcgKzQzNCw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1T
dGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJl
YW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEucmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtOTI5LDggKzkyNiw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRl
cmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAg
ICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3Ry
ZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS5n
ZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQzLDkgKzEyNDAs
OSBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAKICAgICAvLyBE
ZWxpdmVyIHRoZSBkYXRhLgogICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICAgICAg
YXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEudGFrZSgpOworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+
c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNo
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5k
ZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uNzMyNzQxZDk1ZWU2
YTJiNjU2ZjNkOGMwOGM4YWZmYmE3ZTJmYWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNw
b25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAg
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAg
Ly8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhl
IHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2
MjhiZi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0g
ICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEp
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAg
IG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6Omdl
dDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90
JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsK
LSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRS
ZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRC
dWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgp
OwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQz
NjdkNzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBl
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29s
IG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFs
c2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRh
PiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAg
ICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggZGYyNzhhNzg4NGJhYzg5ZDVkMTVmN2RjNjQ5ZDY2ZDgwNTA0YzFmNC4uYTAxMDNiMDJh
MGY0ZDRhOTFlMTdmMzUyYmY4ZjlmMTA1MjVkOGNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFn
ZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2Fy
ZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNGM0ODg5
NzYwMTIyYWY3NmYwM2I4MGM0Zjg2NjJhMTIzZjRkOTE3ZS4uZTE2YjBjZjM4MTgwNjExMGRiYzZl
MTdlYjc1ZDkxZDNlNGIwOWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODgsNyArODgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9T
dGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNk
Nzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291
cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJj
ZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0
YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxv
YWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA2MGMyMDdl
ZDBlZWE4MzZiNDg3MGRkYTdjNmJiMzBhMTQ1NGNhNDk3Li40YzY2NmRkNDBkNWU5ZDQ1MWExZTA2
YzExZmQwODAwMjdhOThiMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5h
bWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNo
ZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwog
ICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVz
KCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3Zl
cnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRv
IG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4K
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0yMDksNyArMjA5LDcg
QEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9
CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK2lu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChidWZmZXIgJiYg
YnVmZmVyLT5zaXplKCkpIHsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQw
Niw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFu
ZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRl
bnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggMjAwYjZjMDE1OWI2ODhjNzJhM2ZhZGZiYWUwYTY5NDgzMWI5MzZl
MC4uMDQ1ZDRjYjg5YTk2NjRhMDhlMWI4MWEwNTMwMzVkYzVkOWQwYzU5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNG
b3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3Ry
aW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBh
ZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBX
ZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
aW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc5NTYyNmIwNDg2MjIw
ZjlhMzA5ZGIyZmI3MjVlMDRiMjIyNTRhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CkBAIC00NSw3ICs0NCw2IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlBy
ZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAg
OiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9w
YWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
IH0KIHsKIH0KIApAQCAtNTcsMTAgKzU1LDEwIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2J1ZmZlci0+aXNFbXB0eSgp
KQorICAgIGlmIChtX2J1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHdlYlBhZ2UtPmRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSwgbV91dGkpOwog
Ci0gICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmco
KQpAQCAtNjksMTMgKzY3LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmlu
aXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3
ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1
ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIudGFrZSgpLmdl
dCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAg
ICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogfQogCiB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2Ni
NTNkYTg3Li4yN2FkMWM1MjAyNjYwMWU3YzQ5ZWQxODc3N2VlYWZmNjBjZDE5YjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1l
OwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZh
OGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdh
YmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5k
YXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAg
ICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIp
OwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVk
TWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAw
OwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0
byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRn
ZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwog
ICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5k
ZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlh
NjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJG
cmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVz
b3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29k
ZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJj
ZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygp
IGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQppbmRleCBlNDY3ZWZmZmQ3OTQ3Yjc4YTRiODA3MGQ0ODg4YjA2YWY4ZWI3ZGM1
Li4zOWFiNzQ4ZTEyNjZkNTliN2M2MjBhNzdjMzM5ODM5ZWQxMjE4MTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2
LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVj
dGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBl
KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0
MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4
OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1h
Z2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggNDIwMTA3ZGE2NWI3NmI2ZDEyYzRjNDU4MTM5ZjMwODI1OGQ5M2ZmMy4uYzY1ZTk3ODg4Yjk2
YjczNzk1ODgwNWI2ZjhmYTAwOWRjZDFmYjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcg
KzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRp
b25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzQ2F0ZWdvcnksIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBh
c3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpp
bmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3
N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00
MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBp
bXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKaW5kZXggMWQ4MWZmYTE5ZDk3ZjA0ZWM3Y2M1NzViM2VjZTVlODg4MTQ0MGIzOS4uZTM1
MWVhOTk4YzA3ZTRiMzA0NmZjOTBkMjY0NWZhYjNlNmQwZDg4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
U3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVy
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRO
dW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzUsNyAr
NzUsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMTg4ZWM1MDA0NTA3N2Q3OGIwMTIwYTZkYWZiYjA0ZmI3
OTI3NjQ2NC4uYTNlM2M5MzE2OGQ4OTM2NTAyYWE2ZTdmNDU0ZTRlNTdlZDFiMTI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRU
eXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsK
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRU
eXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JU
eXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JU
eXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRC
dWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5
NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
QEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdl
YkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmlu
ZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZl
YWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAs
NyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRv
Y3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkg
eyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291
cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0
YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEz
MzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRk
NDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdl
LT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdl
IGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgp
IGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMgYWRk
T2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXIt
PnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVj
dGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggYjA4YzFkMjFjZjlmMDRlNjExYjU5NWVkZTNjYjY1YTE3
YzQ5OTc5ZS4uZDNiNTE2YzQxYTkwZTdmYTU3ZGFkOTg5MWQ0OWEzMzkxNDhhMzYxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMs
MjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRl
Y29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAg
IGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAg
ICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAg
IE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVu
Y29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSBy
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
dXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1l
VHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7
CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVz
cG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwor
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURh
dGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNl
VVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJl
c291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2Rp
bmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAy
LDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
LT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAg
LSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRv
d3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBf
cHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURh
dGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgp
IDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3Bw
CmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBk
MmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0
cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5
U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyAr
NDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1l
bW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2Jh
Li4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5
U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09N
UHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElV
bmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAg
LTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgot
ICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBN
ZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7
IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDgxNTc5
OTYxMDc2N2UwYmI5YWQyMjQ1NjdkNzI1Y2QzY2RjZGIxZmYuLmIzYTJjNGNmZWIzZThmODJhMDUw
YTM4ZjU3MjU4ZDkwNmQwNmJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0
cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZE
YXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgp
KSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZE
YXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgp
KSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1
ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVj
OGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYx
LDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IDA4N2I2OWU3YThiMGI2ODhhY2JmZTQ0ZTRkYWIxYjdiZGE1NDFmMjguLjk1ODFhYmJkOTMy
YTUxYmJlOTgyMDVhMjMxM2E1YzgwOWJhNjk3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3
ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAg
dm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNl
clRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRU
b0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhl
Li4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNV
TFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0p
CiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAg
IHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3Vz
KCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJl
c2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiBy
ZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWVi
YzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5
Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcg
KzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6Omxv
YWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
c2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0
YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBA
IEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8g
QlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2Vz
IGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUg
U2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0
aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAg
ICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJl
ZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1
ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUo
c2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7
CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGlu
Z05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMw
ZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVh
dGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291
cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45
NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2Vi
UmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3Vy
Y2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93
bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzJhNTZkYzc3NzAz
NjZkMDBjNTMzNTVkZDMzMzY0YjAzNTFmODA3Ny4uYmE1NGY2MWE0ODgzNDY3OWZhZTcwNmIxODZj
MzcxNGVmZDM1YjNiZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0Mgor
ICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFi
bGV0LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIw
MjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIx
LTEyLTExICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4Njg5My4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNi
MWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uOGYzMmFiYzg4MDFkNTE4ODg4MjM1ZWZmYmQwY2Vl
YTc3N2RlM2M5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQzLDUyICs0
Myw0NyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhp
c3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVD
VF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKKyAgICBF
WFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKKyAgICBhdXRvIGNvcHkgPSBidWZm
ZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
LX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
LSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAg
RVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5k
YXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAg
RVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywg
YnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCArOTEsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEy
W10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9w
bGFjZSwgdGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
dGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERh
dGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBl
eHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJU
X0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJy
YXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTEx
MSwxMCArMTA2LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1
ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAn
YicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9y
MSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxh
Y2UsIFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9y
MSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTUxLDE3ICsxNDYsNTMgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMg
cHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2lu
IGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVp
cy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHN0ZDo6
aW5fcGxhY2UsIHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
YnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBt
dXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVj
ayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgp
OwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+
c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NF
UlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBi
dWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkp
OworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUo
KSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5h
cHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Cisg
ICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZm
ZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUs
IGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEw
LCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkg
PSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7
IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5Lmdl
dCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAg
YnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVD
VF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBi
dWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hl
Y2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25z
dCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCArMjA2LDcwIEBAIHN0YXRpYyB2b2lkIGNoZWNr
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3Qg
Y2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZl
Y3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50
OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMp
KTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAg
IFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
czMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8g
YWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAg
IGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVy
LT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7
Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWpr
bCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2
KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwog
ICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFi
Y2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRh
KCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNp
emUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwog
ICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBj
aGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIo
YWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNr
QnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdo
aWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gx
LnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNp
emUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwu
c2l6ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQog
ewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNv
bnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8m
IGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
Y29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsK
ICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAn
ZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywg
J2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwog
Ci0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2Qn
fSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUSht
YWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQo
KSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydh
J30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAg
ICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycs
ICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1h
a2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwor
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4
MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8g
YnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9I
ZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVy
LT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRh
a2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKQEAg
LTI0OSwxNiArMjkwLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkr
KykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgp
LCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAg
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1Rf
RVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIp
OworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0zMTMs
MTUgKzM1NSwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRl
U2VwYXJhdG9yKQogICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBkYXRhLCAyNTYp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hhciBjID0gaTsKLSAgICAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoJmMsIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAgICAgfQot
ICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKQEAgLTM1OCwx
NiArNDAyLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRh
KQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4
dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAg
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAg
ICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVD
VF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
Mik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwor
ICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQpAQCAtNDA2LDE3ICs0NTEs
MTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0lu
TXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBzaW1wbGVU
ZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAg
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRl
eHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVl
YzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8
TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIu
ZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0Rh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChj
b25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXIt
PmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVs
bG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVk
RGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhw
ZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAg
ICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVy
LmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRl
TlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAg
ICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7
Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOwor
ICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAg
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlv
bik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0
YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAg
ICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAg
ICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEp
OworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhw
ZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0Rh
dGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdF
bmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAg
ICB9Cg==
</data>
<flag name="commit-queue"
          id="472488"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446967</attachid>
            <date>2021-12-12 21:57:27 -0800</date>
            <delta_ts>2021-12-13 08:25:09 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233442-20211213165718.patch</filename>
            <type>text/plain</type>
            <size>553729</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRkNjBiOWJiMjJiNTU2
ZTZlOWVjM2FhZGU1NmIxNzRkN2FmYTI0YS4uNWNjYTEzMDRkZjc3ZTNlNzljMjlhMjM0ZDAwNGE5
YWY0NTcwMmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4NCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAg
YW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1
bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1h
ZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0
IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBh
cmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBB
cmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xl
IHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVu
IGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVu
IHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdl
CisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEg
Y2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8t
b3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAg
ICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2Yg
YSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAg
ICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJz
aW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFu
Y3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUg
U2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFu
ZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAg
IEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVy
YXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNo
YW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3Jhcnkg
bWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
IGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBj
aGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBp
cyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVu
bGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUg
bWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2Jz
ZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBO
ZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFk
ZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0
ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5k
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRC
dWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VD
b250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
Q0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJ
RkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhE
YXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
YWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJD
b3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFz
c2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlw
aENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29u
c3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6
Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhU
YWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZh
bGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlk
YXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhD
b3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxl
Ojpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFi
bGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRM
YW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNj
cmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6
ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERh
dGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
bkZ1bmMpOgorCiAyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CiAKICAgICAgICAgU2hhcmVkQnVmZmVyIHNob3VsZCB1c2UgV1RGOjpGaWxlU3lzdGVtIHdo
ZW4gY3JlYXRpbmcgZnJvbSBhIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVmZDQwZGFhOWMzNTNjMmM1NDkw
N2Y5ODdmYWMyN2E3YzJhOWViZS4uM2RkYjEyOWY0NDM3Njg4MjhlZjM5Zjc4NWVlMjBhMjNmZDM0
MGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpX
ZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21w
bGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFp
bCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAg
ICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
SVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERh
dGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9u
RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6
CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVT
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFw
cEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURh
dGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQ
cm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFy
eSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0
aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2lu
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVs
ZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpj
cmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5T
dGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0xMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb21lbnR1bSBFdmVudCBEaXNwYXRjaGVyOiBUYWlsIGZy
YW1lcyBhcmUgdGhlIHdyb25nIHZlbG9jaXR5IGlmIG1vbWVudHVtIGV2ZW50IGRpc3BhdGNoIHJh
dGUgZG9lc24ndCBtYXRjaCBzY3JlZW4gcmVmcmVzaCByYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggNTVlNGMxOGM0ZjRmMTEyZjY4NzE2NTY0MzBjNzRmOWUwMmQ2YjhmNS4uYmNm
MjdiMDlhZGQ1NDBhY2JmNzc0NDAyYTAxNDU2N2ZmZjQ3ZWQ2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAz
MAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgt
W0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRh
U291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVu
dUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dl
YlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0
YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0x
MSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHJl
ZHVuZGFudCBTdHlsZVJ1bGU6OlR5cGUgZW51bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGE4OTVjNjZjMWYxOTM3YmZhODlkMjYyOGQwYzBiOTYwOTEwYTk2YzAuLmZhNDRjYjRlZmNh
NzRkZDlhNjU2ZmRmMzQyOWMwODA3NjY5OTFiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAg
ICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWVtb3J5
U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAg
ICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVh
bS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RkOjpudWxscHRyX3QgY29uc3RydWN0
b3IgZm9yIFJlZlB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDMzNTRiNTJh
NTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRmYWMzYTk1NDA3ZjJiMzczYWE4OGRm
ZTM3MDdmMmI5YmVlYWFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
Ci12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3M2Mw
YjM3NDRkLi45YjU5ZWI1Y2M0OTU3ZjAzMzY2NzU4MmU4NjUzYWMwNzRmZThmMzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIx
NGRiZWU2NGJmOWM5MDc4Li42OWJjM2QzYTAzY2U0NWVjN2NlODYzNmQ0YjE3ZDkzNTlkM2NmMGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApA
QCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQogICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVM
b2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0b21E
YXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpOwotICAgICAgICBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkK
LSAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAg
ICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKAogICAgIGlmICghc3Ry
aW5nUmVzdWx0LmlzTnVsbCgpKQogICAgICAgICBtX2RhdGEgPSB7IHN0cmluZ1Jlc3VsdCB9Owog
ICAgIGVsc2UgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSBtX2Jsb2JMb2FkZXItPmFycmF5QnVmZmVy
UmVzdWx0KCkpCi0gICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB9OworICAgICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIH07CiAgICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsK
ICAgICBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAtMjY1LDggKzI2NSw4IEBAIHZv
aWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9z
KSB7CiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAg
ICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Cisg
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwogICAgICAgICAgICAgbWFya3VwVG9T
YW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9k
YXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1f
ZGF0YSk7CkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICB9
CiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZmZXJU
b1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAg
IGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKSk7
CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICB9
CiAKICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoYml0bWFwSW1hZ2Uu
Z2V0KCksIEZsb2F0UG9pbnQ6Onplcm8oKSk7Ci0gICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnRvRGF0YSgiaW1hZ2UvcG5nIl9zKSkgfTsKKyAgICAg
ICAgbV9kYXRhID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXIt
PnRvRGF0YSgiaW1hZ2UvcG5nIl9zKSkgfTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1
MzBjZDc3ZDU0Zjk5YTUyOWE3Li4yZGM5ZDUwMGYyNTM1ZThjYjIxY2JhMzNjZTRhZTFlMjU0MTMx
MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBA
IC0zNCwxMSArMzQsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmls
ZVJlYWRlckxvYWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBCdWZm
ZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAg
ICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBw
dWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMw
N2EzYTQ0MTAwLi4yOTNmNTIzMGQwZDc3MTIzZGIxMzBiMDE2OTM2OTlmYmFmZjU0YWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1dG8g
aW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRh
OmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4Njlk
YTdlNWJmLi4xNTdjNWY1MmMwMjZiZmFhOTc2NGVjZDI1MDQyM2IxNWQxODYzM2NhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CiAgICAgICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNh
MjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4
MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5l
OjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9
IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9
LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUyMDk0ZjY1NDk5YmI5
MGRkN2YwMDcxZDQyNGMuLjQyZmU4ZmRmZDQ5ZDFlNjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODksNyAr
Mjg5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZv
cywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25u
ZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAg
ICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9
IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1
bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBk
YXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1d
IChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRs
ZXItPmlzRG9uZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OSwxNSAr
Mjk5LDE1IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5m
b3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0
YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25z
ZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVz
dD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8
RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBF
eGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5
KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5
LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBi
b2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBi
b2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJl
cXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNl
cHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUs
NyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+
aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSBy
ZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5
Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0
aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3Vt
ZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7
CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5m
bywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5z
aXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAg
ICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgK
aW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2Jj
ZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJv
b2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYp
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmVi
ZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlz
b2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9
LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9u
c2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAg
IH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAg
cmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNl
Qm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
YnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApp
bmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4
YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBj
b252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcg
UmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5
Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4
OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3
MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNL
ZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRl
ZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAg
aWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVl
OjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0
byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNo
U3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAg
ICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3Rh
dHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1
Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNo
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8g
bGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0
YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtl
eVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAz
LDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlw
ZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3Qt
PnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmly
c3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICBy
ZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3Rh
dHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQg
fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4
IGMwNDczMTI4NGY2NzZhYTVjNTBmOTQwYmU0ZjY2MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVm
MjE5OTJiOWUxYWQwNWFjYTU0ZTcyZDYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29u
c3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3du
ZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFy
ZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1f
Y29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRU
eXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNv
bnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFy
ZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxv
YWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0
cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlz
Rm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURh
dGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAg
ICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEg
RmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VE
YXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsK
QEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFr
ZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCku
ZW5jb2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhF
bmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVu
dGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQ
YXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6
VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1
ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgp
LmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSks
IGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJW
aWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJh
eUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0
ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThm
YzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsK
IAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zv
cm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKaW5kZXggZGM4NjVmN2RhMjM5N2FjNTU5M2I0NGI1MzlkM2U2NzFlNDNjZTZkYi4uZmFkZTYz
ZTRiZTQ5ZjRkMTkzOWQxZGI4YWUxMzIxODFhZDBhOWEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIs
NyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpj
bGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7
CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAg
bV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29u
c3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3Np
bmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6
Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6
OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJC
dWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0
byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5h
cHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0
eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2VBc0Nv
bnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1v
dmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBl
RnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNv
bnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRh
KCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQs
IGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2Fn
ZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkp
CiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+
KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChU
eXBlRXJyb3IpOwpAQCAtMzI0LDI2ICszMjYsMjQgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBt
X2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7CiB9CiAKLVJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKK30KIAotICAg
IGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAg
ICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7
CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9i
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQpAQCAtMzUxLDkgKzM1MSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4
X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1
dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRh
KGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9i
RnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRl
bnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAg
LTM2Miw4ICszNjAsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8g
dGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBi
dWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzgxLDggQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAg
bV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAg
ICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCkpOwogfQog
CiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYg
ZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMu
LjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUw
LDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0K
LSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9i
dWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpA
QCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5n
IG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNl
PiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVm
ZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXgg
NGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBkM2Y4NDhmNjRmMi4uYjkzNDM5MmE5MDNkNGE1
ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5r
Q2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBj
aHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2Fs
bGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRo
UGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgp
LnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBb
dGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlO
dWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgp
LmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2
NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTkyNzI5MzBiYmMyZDE2NjZjNmFlYjU0N2ExYjVl
ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAg
ICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25z
ZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYm
LCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1Zjdl
OWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3
MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBB
cHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6
ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5j
b2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmVi
N2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWVi
OGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3Rl
eHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7
IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVy
ID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4g
ZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZh
ZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3
YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJy
YXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQ
YXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29k
ZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rv
cjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBr
ZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShj
b25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAg
ZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAK
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdCom
IGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4u
YWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
REJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJ
REJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVj
Yzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdi
OGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJ
bmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5z
YWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXpl
SURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGlu
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJz
aW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7
CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRo
KCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVj
dCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9i
amVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0
byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9i
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBk
YXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGlu
Zm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0
byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlm
ICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMg
KzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAl
cyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBp
bmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8g
aW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAo
IWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVl
KTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7
CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2
YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0
aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBh
dXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFr
ZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0
byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsx
NzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FM
aXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5t
b2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJv
bSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUg
ZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
c3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0
aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4g
b2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3Rv
cmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAg
ICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQog
ICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBs
b3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJL
ZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJf
cyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBr
ZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBr
ZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBw
ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAt
MjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChr
ZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYg
a2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9u
ZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3Jk
Il9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAg
ICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5Lmlz
TnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2Vy
S2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktl
eSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAog
ICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6
Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVw
cGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElE
QktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
IGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJm
ZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5
Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3
ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0
YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJ
VEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0
ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMx
NSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVt
ZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAg
IGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUlu
ZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3Vt
ZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3Yjk0YzllN2Vi
MGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4NjU3MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNlMGI4
NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAg
ICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9w
ZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJ
ZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdl
LmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90
ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1
M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2
ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50
LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAg
ICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcm
IHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsK
ICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODllMC4uMjdhNmQ3
MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApA
QCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNv
bnN0IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7
CiAKICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2Rh
dGEuZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1f
cmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2Up
OwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5j
ZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNl
dCgpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVy
KCk7CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0K
IAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0
ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVz
b3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlQXND
b250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsK
IAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJjODIu
LmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
aApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQ
cm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4
MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3
ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9k
ZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJM
PiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAg
YXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUi
LCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVs
U291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRf
VU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgp
KTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMz
MDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBl
ZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQ
cm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAog
ICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigq
Z2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1l
bnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpu
dWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNm
MTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3Vy
Y2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNP
bmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1
b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWlu
c09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0
SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5z
T25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
IH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAg
bV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEs
NiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3Jp
cHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51
bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJs
ZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNo
ZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFp
bnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRl
eCBhZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBjM2E4YzY5YTljMzFkLi4zYzVlYTliODlhOWM5
ZTkwMzcwYjk4ZGY1Mjg1NjMwNjQ5OTAwN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNl
Ojpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1faW5E
b2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1l
bnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNl
RWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBvdGZGb250
ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAg
IG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZG
b250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkp
KTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1
c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNv
dXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1l
ZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5i
eXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNl
LT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAg
ICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250Ojpj
cmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAg
ICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdh
MTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZv
bnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBG
b250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGll
czsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9u
dFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVh
dHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NT
Rm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3Jj
aGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBt
X2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUg
cmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVk
T1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRl
ZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRl
U291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2lt
bWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uZjVi
ZjJiNzI2ZTZhZTk2ODkzNTNjMGE3ZTA4YjQ1ZWZkYTVkOTA0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVU
eXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5h
ZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAg
IHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
MjgzMWNkM2ZhOWM2YTRmOWZmOWE5YTBlMjVjM2I0MmU1MmQxYjY0ZC4uY2YzMmFiYzE4MjdmY2Vi
NTRhZDVlYTAxYmEwMmViMDFmMTc0ZjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtNDE1OSw3ICs0MTU5LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21p
c2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0
aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAppbmRleCBiMDMxMzZmZmNmMWY2YjM3ZTZiMDdhYjYyMzJlNjFmNjZkZWU3NTg3Li44ZGE5ZmNj
NjQxNmI2NzIxN2QxNzQ5ZWJiODk3ODA3ZTQ3NjExMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFU
cmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwog
Y2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3Mg
RWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUzOCw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2Vu
ZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7
CkBAIC01NzUsNyArNTc2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5k
RGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAj
ZW5kaWYKIApAQCAtNjIzLDEyICs2MjQsMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3Jt
YXQoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJB
cmNoaXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3Qg
VVJMJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJp
bmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9y
bUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNl
NjdlZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5n
IG1pbWVUeXBlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggMDhhYTEyNDI2NjIwZjc2
OTUzYTc5YjM0ZWRlNWY2ZGYwNTI3YjAxNS4uMWQ5N2FjZDNjYzc5MTYxYjBhYzUwYzRiZjcwY2Ix
NTJmYzBmNDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50
UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgK
QEAgLTc4LDEwICs3OCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRG
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNlbmRpZgogfTsKIApAQCAtMTA1LDEwICsxMDUs
MTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAK
aW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVhMjRlYzIwZTRmMjFiZmEyNS4uNzRmZTgyODdl
OGMzOTNiZTE3YTY3NjY1MzhkOWYzNGEwOTBiMzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyAr
MzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250
ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmls
ZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4
dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZjYjRkMTU4MTQ2MzViMjRkOTBiYjcuLmU3YTA3
MWNhNDAzOWUwMWY0OGQwYjQ5OTUwMWVkNjRkZTYyNmYwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaApAQCAtNDEsNyAr
NDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAog
ICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0
OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIz
NTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiAr
NzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQg
PSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJp
YnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hp
dmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVk
QXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1
aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVy
cm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQ
YXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERh
dGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQo
RWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRS
YW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpA
QCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0
byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5
cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0
aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0
ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hp
dmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50
YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVj
dGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAg
U3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0
dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0
cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
IAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQz
MjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09M
IEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50
LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJj
ZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNv
dXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWlt
ZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAg
IGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUp
XTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpA
QCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxl
V3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChk
YXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJj
ZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUg
PSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAg
aWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmls
ZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJl
c291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQu
Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNo
YXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uNDQwNTli
ZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3MzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3
ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50
SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5n
IGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9y
aWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291
cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1p
bWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9
CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIs
NyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2Vy
dGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlw
ZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9i
amVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsK
ICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1h
cmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBi
dWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFy
ZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUg
eyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hp
dmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3Ry
aW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0
cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRl
c3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwo
c3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5k
QXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmlu
Zzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAg
ICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2
ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVu
dCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5p
dGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFn
aW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4g
IW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3Mo
KS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyArNjI2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjM5LDcgKzYzOSw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFn
ZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCmluZGV4IDMwMzZjZDMyZDZjZDgzMmMyMjAyODNhODQ0NWE4OTlhNWE2NmNh
M2MuLmRmMDkxOWY3NWFjZjc5YTgzOTI4MzIxMTkwYzVjYjJiYWY3NDdlNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEVk
aXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgpCiAgICAgUGFzdGVib2FyZEJ1ZmZlciBwYXN0ZWJvYXJk
QnVmZmVyOwogICAgIHBhc3RlYm9hcmRCdWZmZXIuY29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQu
b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLnR5
cGUgPSBsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKTsKLSAgICBwYXN0ZWJvYXJkQnVmZmVyLmRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RGF0YS5nZXQoKSk7CisgICAgcGFzdGVib2Fy
ZEJ1ZmZlci5kYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdl
dCgpKTsKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRCdWZmZXIpOwogfQogCkBAIC0y
NTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChO
b2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5z
ZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2
ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJm
YWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIg
b2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRo
aXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1Zp
ZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2Vk
IHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFj
Y2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkg
KzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5k
T25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFt
ZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0g
RlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVk
VGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIp
CiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3Ro
ICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyAr
Mjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5
RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURv
Y3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklY
TUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2ll
bnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0
ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBp
dCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXgg
Njc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uYjk5NzZhZjJlNGRkNDA5
YTg5YzNhNDI0NDEzOWEzZTk5YjRlN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogCkBAIC02Myw4ICs2Miw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0g
ICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZm
ZXIgPSBudWxscHRyOworICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIuc2l6ZSgpOworICAg
ICAgICBtX2RhdGFCdWZmZXIucmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgp
KSB7CkBAIC04MSwzNiArODAsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwog
fQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBj
b25zdAoreworICAgIHJldHVybiAhIW1fZGF0YUJ1ZmZlcjsKK30KKwogc2l6ZV90IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZm
ZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRh
dGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
IH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6
ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IG1fZGF0YUJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2Nv
bnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVu
Z3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAg
ICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIg
PSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxl
bmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li4w
NGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEzODkxNzIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtMTAzLDEwICsxMDQs
MTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25z
ZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9
CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFC
dWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBo
YXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsK
ICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5z
aWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWlt
ZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0
aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFm
ODUyYzIzNjJiMzk5NDliZGQuLmU1OGJjYzJhYTdmODE0ZDk3N2ZmN2Q4ZjI2MjNjMzdlY2JhN2Mx
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxk
VHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2Uu
bWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAg
ICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBk
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAg
ICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggOWI1Y2FkOTU5YThlNmYyYzJi
ZjcwZTFhZWUxNDI4NzQ1OWQwNjYxMi4uYTNjNjBjM2I2OTZhODNkODMxZDg5N2Y4MTY3YTMyYmUy
MzczNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9j
dW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1
cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygp
LCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRh
dGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5n
TmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQo
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMx
NzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIx
OTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcg
KzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQp
OwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0g
cmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZm
ZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNl
QnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEu
LmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBA
IC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJl
ZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVx
dWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVl
c3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVu
dCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0
UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVu
dGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggY2Y2Y2NmMmJkMDg5
MjUwYzYwM2ZkMDRiNzRjM2VjOGMwZTQ5YzRmMS4uZmRmZDBlYWFmM2E1MDE4ZDkwMGJhMWE2ZDdh
NDhhZTU3MzJmMzRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0xNjA1LDExICsxNjA1LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBB
U1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNl
ID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9
ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUo
bWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNv
dXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEt
PmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiB9CkBAIC0xNjQ5LDcgKzE2NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVh
ckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1l
ci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURh
dGEuZ2V0KCk7CiB9CkBAIC0yMjUzLDcgKzIyNTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21t
aXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
Y29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2Fk
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNTEyMjdiOTZk
N2QxN2NhMDdlZTNiN2NmZjQxNjJmM2NiZTFhOTc1Zi4uNmJkMzJmYzJlY2Y0NmFmN2NkOTM3OWE5
ZDAwYzk5MTE2ZWI3YTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBD
b250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0
b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIzNSw3
ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVS
ZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9w
QXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNo
aXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlm
CkBAIC02MTIsNyArNjEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBt
X2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
ICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggYzEwZDVjMWRiZWJlZjA1NTI4NDNkZDlmYzBhNTMzZGRiNDc5M2E0Yi4uMDc2
ZjM3ZGUzMjU5YTAzYzM4N2ExZTBkMmFmY2FlZDJkODI1OWIxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1
OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0
VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29u
dGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNv
dXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZmUzMmQ5NGU0Mjg2NTlkNWQ2MWRh
YmE3MjE5OGViMTk1OWJhMjVmNi4uMGRhZjRjN2FiNjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIx
MDM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsy
NzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNo
YW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNmM1ZWUzYTliMzFh
ZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNi4uZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0
ZmFkMmJjM2ViNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0z
MTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVM
b2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1S
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVl
c3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNs
aWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVy
cm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1f
ZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExp
a2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVy
OjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggZWRlY2UxMmNkN2E5NmZlYjkzNWMzMzQ2NmM0NmNhZTAyMGUyZjNh
Yy4uOWMzZjc0YzQyZGI4ZTdiYWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVC
YXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hy
b21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2
IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xp
Y3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRB
cmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENs
aWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVu
ZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpv
cHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIs
IHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQz
Y2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJi
ZDM5Y2YwNGExYzRmNmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAg
LTExOCw3ICsxMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkK
IAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0
cjsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1
ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAg
IGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVm
ZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jl
c291cmNlRGF0YS5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNo
VG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzM0LDI0ICszMzMsMjQgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291
cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5n
ZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEo
KQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNv
bXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0
aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgog
ICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5
OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNv
ZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJl
Y2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGlu
dD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJk
MjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uMzdkNjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRi
MzM2ODg5ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIApAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciog
cmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAg
ICBjb25zdCBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xl
YXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxv
YWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVz
dDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291
cmNlRGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcmVzb3VyY2VEYXRhOwogICAgIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3
ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhi
ZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1
OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThm
MTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0
aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVk
QnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJl
ZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0
KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1f
ZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1f
ZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9k
YXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwm
JiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3Vy
bDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYz
ODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRl
NWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9u
Q2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICgh
bWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNr
IG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFy
c2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
IkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQg
c3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgx
ODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIz
MjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBA
QCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBw
YXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0
aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3Vy
Y2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTog
Q2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1
ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7
CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJl
c291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQog
ewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91
bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBA
IC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSBy
ZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2Yg
YSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFs
ZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYg
dGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0
aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsy
ODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxi
YWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9
IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJv
YWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAg
IC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVy
IHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3
MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3
NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGlj
YXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4
ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxs
YmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5
YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1
ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VM
b2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNw
b25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVz
cG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5
cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5
NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBw
bGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUy
MGJkMzBlNjM2NTk1Li5jNzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAo
PywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgo
KS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQK
ICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRh
U3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCku
Z2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21t
YW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAg
ICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5
IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFz
ZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1v
dW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAg
ICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigp
OwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAg
ICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAog
ICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5C
bG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5k
ZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3Zjdk
ZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcg
QEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJv
cGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBl
bXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAg
YXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBV
UkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJl
c2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2Ug
Zm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAg
ICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJl
c2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVz
cG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3Vy
Y2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENG
RGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lv
bktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBl
SUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNw
b25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFs
aWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Q
cm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVy
c2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsK
ICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAg
ICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVm
PihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRl
ZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAg
ICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlv
bmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25h
cnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVn
YWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25h
cnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBz
dGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25h
cnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNv
dXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5v
IG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7
CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGlj
dGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1
dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAg
ICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQg
Q0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChz
dWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBh
ZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICsz
NjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJl
c3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVz
cG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+
CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAg
ICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQg
ZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFu
b3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRz
IG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1c
Im5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwi
IGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmlu
ZGV4IGFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLjk5M2MyYjhlODMw
ZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTYyLDggKzE2Miw4
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFn
ZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBh
cyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQg
QVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFz
Y2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsK
KyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog
IiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVy
bC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2Np
aVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRh
LmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAg
ICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBz
dHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRh
ID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJl
c291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5n
LCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVv
dGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAg
ICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1s
RGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAg
ICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAg
ICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93
IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENS
TEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZl
OjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAg
ICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5n
dGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0
YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAg
ICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAg
IG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgp
OworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAg
ICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUg
KGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNj
aWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwot
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0
cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRt
bERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBl
YWU0Y2IyZDBiZGI4MDE1ZS4uNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4YTcyNDE1MjMwZDEwOWIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7
CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50
Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5h
cnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQp
KTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGlu
ZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5l
eHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0g
MikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhh
dCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMg
c3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4K
LSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVu
Z3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBs
aW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRo
ZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRl
Y29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNv
bnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
KCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSAr
MTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQ
YXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZUFz
Q29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNv
ZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBk
ZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUo
KSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICgh
ZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29u
dGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBh
cnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBk
YXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29u
dGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJp
bmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250
aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8v
IEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ug
c2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUg
d2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3
I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0
ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNGYyMjhlOGQwMzg5
YjhiOGNiN2Y0MTQ4NmZkYjc4MWM5YmY2NWJkMi4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRi
YTMzOGE2NzMzMzVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3
YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQx
ZDU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwm
IG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRy
KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAw
YmE5YjE3NmYuLjlkMmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNo
ZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0
dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVk
IHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBv
ZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9
CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEzICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
CiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRD
YWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAv
LyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBz
aGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQor
ICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0
aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVs
eSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNl
ZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQzN2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYx
NjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5k
ZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjlhZDc3MTNjNjAz
YTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmlu
ZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1
cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENh
Y2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRh
dGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJy
ZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpA
QCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Z2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsK
KyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxs
cHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnko
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQo
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2Vi
ZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMTU0ZGI4Y2JhYmYzZDVhMzhl
MDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNM
b2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAg
dmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBw
aW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9t
RGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9v
bCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAg
dmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRh
RnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9u
dERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
YWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0
ZTBlNmY2YjU0Mi4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSAr
NDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBk
YXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0g
JmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIg
KzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUlt
YWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNb
aW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNj
cmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQor
ICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMp
ICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRh
LT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYo
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAg
ICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUg
c3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0
YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50
ZXJuYWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAg
bV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBk
Y2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uZDUxM2UxNmNiYTVhOTcwN2MzM2FmYzc5
MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdp
ZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQg
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNl
ZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0
YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBA
IC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uOTAw
YmQzMzI4YTY0YmE3NzJlNmM4MDExYWJhYTVlNjExYzY0NjU1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRh
KHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVw
ZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRo
ZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSkKQEAgLTY0LDI0ICs2NCwyNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwotICAgIHdo
aWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKLSAgICAgICAgYXV0byBpbmNy
ZW1lbnRhbERhdGEgPSBkYXRhLmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YVNpemUpOworICAgIHdo
aWxlIChtX2RhdGEtPnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKKyAgICAgICAgYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBtX2RhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YVNpemUpOwog
ICAgICAgICBwcmV2aW91c0RhdGFTaXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAg
ICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5v
dGlmeSwgdHJ1ZSk7CiAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVt
ZW50YWxEYXRhLmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUoKSk7CiAgICAgfQotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEuc2l6ZSgpKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNp
emUoKSk7CiAKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSkgewogICAgICAgICBpZiAobV9sb2FkZXIpCiAgICAgICAg
ICAgICBtX2xvYWRlci0+c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpOwogICAgICAgICBjbGVhcigpOwogICAgIH0gZWxzZQotICAgICAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOworICAgICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKCptX2RhdGEpOwogCiAgICAgaWYgKG1fZGVsYXllZEZpbmlzaExv
YWRpbmcpIHsKICAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFu
Z2UobV9kZWxheWVkRmluaXNoTG9hZGluZywgc3RkOjpudWxsb3B0KTsKQEAgLTk2LDcgKzk2LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwg
bGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNy
ZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9u
b3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBz
cGlubmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNSBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIGlmIChkYXRhICE9IG1f
ZGF0YS5nZXQoKSkKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5j
cmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVj
ZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2Fl
NmJmZjY1NTY1OTk1M2UyOGJhNjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYz
NmY3NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9y
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNS
ZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAK
ICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVs
YXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3MmEzZTJhMDEw
ZTc4MTA4OC4uNTU2OTY0M2NkNWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYs
NyArMzM2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0
aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAg
ICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICgh
bV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9k
YXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRh
ID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uMjE4ZDc0ZjI3
NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1
YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0
dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1f
ZXJyb3IgPSBlcnJvcjsgfQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9u
ZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVB
QkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWRE
YXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVu
Y29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
cjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxD
YWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVz
b3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMu
CiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NU
aW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGEx
NDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5iMGY3NmE1MDk2MTBmNjcxMDU3
YmVlYmYwYTBiOWE2MDFjYTgyMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5l
bmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYg
KGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUg
YmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50
LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3Nl
dHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVu
dChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7
CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0K
ICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXgg
ZThjMTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uYjAxMmJhOThlZWRmNzMy
YzA4MmMzNjNiMGNiZTEzMDM0NzRjMzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4
NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAs
NyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpE
aXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNW
R0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3
RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcg
QEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8
ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4
dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAg
ICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzVi
NjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3
IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFs
U1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250
RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdE
b2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4
dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3Nl
dHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApp
bmRleCA1NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li4xZGY1YzRiMTdl
ZWViY2I0ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVuc2lnbmVkIENh
Y2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAot
dm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAg
IHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2Uy
M2QuLjc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9p
ZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWVi
NGNmNTBmMzIwODZiNWRlYjYxLi41NDI2NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgx
ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNr
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAK
LXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEp
Cit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEg
PSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsK
IAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3
YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRl
cHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hl
ZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRh
dGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1
ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4
Njk3MGNmNGFkZGE0MDg5NjkyOTY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5iOWE2NTg3
NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEs
MTYgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0
YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOwor
ICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2
NTRjZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgx
NDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRv
ckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2Fj
aGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQ
QUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZV
UkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAg
ICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklE
LCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxl
QmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2Vk
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4u
OTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00
MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVy
IG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBj
YWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUg
ZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlz
a0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hl
ZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9u
c2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9
CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlv
bihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMs
NyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0
QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4s
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6
OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIp
Cit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNl
ID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNl
UmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2Yzgx
NmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmZmNDBjNDE2Y2M2MTZlOTJiMTMwN2JhYmI3
ZTM0M2IzN2U1NDYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29u
dmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0z
Nyw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwg
OiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcwLDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsK
ICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX29y
aWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVy
OwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUy
ZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li4yM2M5NzI0MmJiOWZiNzUzZmFiNzQz
N2FmN2UwOGEwOWRhOTYyMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9h
ZGVyIGFwcGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKLSAg
ICBtX29yaWdpbmFsRGF0YS0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5hbERhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwogICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFs
RGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAgIHJlc291cmNl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9j
b252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25z
ZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZl
cnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihtX29yaWdpbmFsRGF0YS5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6
On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKaW5kZXggMTgxNzUzMWNiNjk4YjhhNGVkYTI4MTBjYzQ2NmM4MTY5Y2IxNjNlYi4uY2Vk
NTYwOWMwMDVhNTM1MmIzM2QxMTk4ZjQ1Yjk4YmE4NGE3MWQyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0g
Y2xhc3MgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBh
c3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFt
ZTsKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0
aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
YW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hl
Y2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5N2UwMWI1YzY5NzZkNjdm
MGYzYmRmY2VkZWM2YWJjZjA0ODUyYzQ0Li43Yjk2MWRiMDQwNGMxZDE5NzM2MDc0ZTRhOWQ2YzFk
Yzk0MjEyMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NzMsNyArMTk3Myw3IEBAIGNvbnN0
IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNo
b3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVz
cGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6
OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93
ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMTY1YWE4MDU4
YTAzOTBiNDUxNTc5YTE0NzYxYmQ4Njc5NDkzNjQzMy4uMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4
ZDFmNDBjNjI0YWFlNGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAK
QEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShG
cmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBh
Y2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBT
ZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50
LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4
dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVz
KSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5v
ZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJM
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFz
IGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQ
QUw6OlRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFy
c2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAg
IG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRF
bmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAg
IH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRv
UmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2Vz
LmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRj
MmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0
cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4
cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNl
ZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJh
d0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBm
aWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9
OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFk
N2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5T
aGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUp
CiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAg
YXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1
ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5h
bWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihh
cnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9z
aGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29G
YXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGlu
dD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxv
YWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpl
eGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tl
eWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3
Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURv
dWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVu
Y29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0g
MDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0
IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNw
cAppbmRleCBiYTE3ODcyNDcxYWUyODY0Zjc3MDgyYzQ3ZDY3ZjI2M2VkNWRmOTU4Li41OTZhZmI4
ZTkxODg4YzJhYTY3MmZjMGU1ZDA2Y2I2NDQ5ZGVkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcApAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAg
ICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCmluZGV4IDE0NzY0MWRkYjY1ODg1ZTM5YTgzYzZhNDU1NTZiMWVhYTZiMzY1
ZjcuLjRlMjc4MmQ5YmFjYjlkMDE5ZDEyMDAyMGRmZjAxMTZlMjUyMzJkMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
SFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBj
bGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAg
U3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAg
ICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5
cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3
ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQg
flBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0o
V0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAg
U3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7
Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAg
ICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQz
LDcgKzE0NCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkQnVmZmVyIHsKICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKICNlbmRpZgogICAgIFN0cmluZyB0eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9Owog
CiAvLyBGb3IgcmVhZGluZyBmcm9tIHRoZSBwYXN0ZWJvYXJkLgpAQCAtMTY0LDEwICsxNjUsMTAg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJv
b2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBy
ZWFkUlRGRChTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hh
cmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVh
bCBib29sIHJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTgyLDcg
KzE4Myw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFz
dGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxl
bmFtZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7
CkBAIC0zMDgsNyArMzA5LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAg
IFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC0zNDAsNyArMzQxLDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5
cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FU
eXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcm
KTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2so
Y29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlk
M2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjIwY2Q2MWU3MTEyMTMyMWNj
NDZkMDc3MTk5MWFhYzVhYTQ3NTU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVm
ZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hh
cmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsg
c3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAg
ICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4ob3RoZXIp
LmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTgwLDcgKzgwLDcgQEAgUGFz
dGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwg
VmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXph
dGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0
YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURh
dGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJz
aXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBy
ZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KQEAgLTEz
NCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlU
b0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAg
YWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkg
fTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0
YSkgewogICAgICAgICBpZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOworICAgICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGVu
dHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0
YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNo
UGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
ZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0
YSkgewogICAgICAgICBhdXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBp
ZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3Ry
aW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAg
ICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4
YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5jNmNiYzc5MGM3ZTA1ZjMxNDgyMDVmYzVh
MWNjNWE0NjgzYzZkNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBTdHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGN1c3RvbURhdGE7
Ci0gICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiBwbGF0Zm9y
bURhdGE7CisgICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gcGxhdGZvcm1EYXRhOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSgpOwpAQCAtNjAsMTYgKzYwLDE2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBz
ZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBm
cm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5n
IHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAg
IHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5D
dXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAg
ICB2b2lkIGNsZWFyKCk7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9y
RWFjaFR5cGUoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9p
ZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3Jt
U3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0Owor
ICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21T
dHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSk+JiYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGU3NzlkYWVhZTY1OTUzNDE4
ZDkwYzE3NTAxMmQ1OGZiOTY4YTUwMGMuLjliMWQ0Yjk1ZWRmYmRmYTA1OTU2YTM5OTA3MWFiOWZk
OTE4M2I5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9y
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0
OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAt
NTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC02Miw3ICs2Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2
NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAg
IHZpcnR1YWwgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlm
CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0
OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRh
IGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZE
Rm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
REZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0Owog
ICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5n
PiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGll
bnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlYjQxYTY4Y2M1YWY5MjJlODgyZWMyNjhlZGIyZTk5
MDVmNDNjMjQ0Li41MjcwYzU5ODQzNTUxMDRmOTFhNWNlNTQyMjIzYjQ0OWMyYjUxODlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMg
KzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVy
Owogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBz
dHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAg
LTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJv
YXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21U
eXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgY29uc3Q7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0
YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBTdHJp
bmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZl
ckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKTsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1
ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRiZGRmMDdjZjYxNjZhNTg2MGJhYzA3NDYyNmQy
OTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0
Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBTaGFyZWRCdWZmZXIm
IFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEuZ2V0KCk7CiB9CiAK
IHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIyMSw4ICsy
MjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQobV9zdGF0ZSA+PSBTdGF0ZTo6Q29udmVy
dGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRo
aXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNs
aWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRo
aXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlmICghbV9wcmV2aWV3RGF0YS5pc0VtcHR5
KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVy
RGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLmdldCgpKTsKIAogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVw
bGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIH0KIAogICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hlZENvbnZlcnRpbmcpOwotICAgIEFTU0VS
VCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcHJldmlld0RhdGEu
aXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3RXJyb3IuaXNOdWxsKCkpOwogICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CkBAIC0y
NTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlld0RhdGEtPmFwcGVuZChkYXRhKTsKKyAgICBt
X3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAogICAgIGl0ZXJhdGVDbGllbnRzKFsmXShhdXRv
JiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uZjE0ZGUx
ZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRhOWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDEsOCArNDIs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXJE
YXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9w
cmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcHJldmlld0RhdGE7CiAgICAg
UmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3Jp
Z2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5k
ZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2
M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRB
dHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxU
eXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwor
ICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRh
OwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMDJlYTNlYTg5YzI2YmJlNjY1NWZjZTYwMTBiMDIw
M2MwZDJkNDE5Yi4uNmY1MzBkMTMyOWJiZmNlMTZhOWRhN2FkMDE1ODljYTUyZWQzMDdhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNywzMSArMzcsNTMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7CiB9
CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Cit9CisKK1JlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVy
KSkpOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKwogU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxl
RGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5h
cHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewotICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlk
ZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXBwZW5kKFdURk1vdmUoZGF0
YSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAjaWYgVVNFKEdTVFJFQU1F
UikKQEAgLTczLDMxICs5NSwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1f
c2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlm
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
IG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsK
LSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcykgewot
ICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdT
dWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAg
ICB9Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKGZpbGVQ
YXRoKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7Ci19Ci0KLVJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3Rv
cikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0
b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShj
b25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNp
emUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwOCwzMCArMTA5
LDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsK
IH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygp
IGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8g
YmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4K
LSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0
aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2
LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlm
Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAg
IGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07
CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNb
MF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNl
Z21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwot
ICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hh
cmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0yMDcsMTAgKzE5NCwxMCBAQCBSZWZQdHI8
QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAog
CiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21l
bnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0
byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hl
Y2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAg
IG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAg
ICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxOCwxOSArMjA1
LDE5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50
KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
cjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBk
YXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRh
dGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0OCwx
NyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0
CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNo
ZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVt
ZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNT
RVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRl
cikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAg
ICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTgsMTIgKzM0MCw2IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25l
U2VnbWVudCgpIGNvbnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0
ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogYm9v
bCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3Nyw0
MSArMzUzLDEyIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNv
bnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0Yp
Ci0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlm
Ci0jaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdf
Ynl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKCkpOyB9LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0
dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YT4obV9pbW11dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJlZEJ1
ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwg
c2l6ZSgpIH19OwotfQotCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAgLTQ2
MSw3ICs0MDgsMTIzIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7
Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgp
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBt
X2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sK
KyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3Vv
dXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6
ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5z
ZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQor
eworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVk
RmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlm
IChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAg
IGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3Mp
OworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsK
KyAgICB9CisKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKGZp
bGVQYXRoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikp
OworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKK30KKworUmVmPERh
dGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7
CisgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworI2lmIFVTRShDRikKK1JlZjxEYXRhU2VnbWVu
dD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQor
I2VuZGlmCisKKyNpZiBVU0UoR0xJQikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJF
QU1FUikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFw
cGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworUmVmPERhdGFTZWdtZW50PiBE
YXRhU2VnbWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9
CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShQcm92aWRlciYmIHByb3Zp
ZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJv
dmlkZXIpKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QK
K3sKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAorICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEu
ZGF0YSgpOyB9LAorI2lmIFVTRShDRikKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0
YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIo
ZGF0YS5nZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICAgICAgW10oY29uc3Qg
R1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRy
KSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBbXShjb25zdCBSZWZQ
dHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBkYXRhLT5kYXRhKCk7IH0sCisjZW5kaWYKKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFBy
b3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlkZXIuZGF0
YSgpOyB9CisgICAgKTsKKyAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJs
ZURhdGEpOworfQorCitib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKK30KKworc2l6ZV90IERhdGFTZWdtZW50
OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAog
ICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVy
biBkYXRhLnNpemUoKTsgfSwKQEAgLTQ4MCw3ICs1NDMsNjAgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkK
K1NoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBpbml0aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKworU2hhcmVkQnVmZmVy
QnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3I9KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBtX2J1ZmZlciA9IG51
bGxwdHI7CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0
dXJuICp0aGlzOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmluaXRpYWxpemUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2J1ZmZlcik7CisgICAg
Ly8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVy
IGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgIC8vIG9uY2UgY3Jl
YXRlZC4KKyAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3Vv
dXMoKSkgeworICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBhcHBlbmQoYnVmZmVyKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSgpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9i
dWZmZXIucmVsZWFzZU5vbk51bGwoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cit9CisKK1Jl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNDb250
aWd1b3VzKCkKK3sKKyAgICByZXR1cm4gdGFrZSgpLT5tYWtlQ29udGlndW91cygpOworfQorCitS
ZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0FycmF5QnVmZmVy
KCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICByZXR1cm4gdGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCit7
CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworfQorCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXco
UmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2Vn
bWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21l
bnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3Np
dGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTQsMjYgKzYxMCwxNiBAQCBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90
aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25z
dAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkg
KyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9
IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNp
emUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0
dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1
dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVm
ZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6
ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzOSw3ICs2NDUsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAog
ICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRh
KCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKaW5kZXggZTljOGVkMDg5MmQxNTg2MWEwMDdkYjVkY2UwZjVkNzU0MmNhMTQ4
ZS4uNzYwZWI3OGExODY2ZmVkMjNiMzA0M2NkNWUxNGFkNWNlZGRlNDcyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw2ICsyNyw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx1dGlsaXR5PgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjIsMTQ2ICs2MywxMjUgQEAgY2xhc3Mg
RGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZm
ZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFi
bGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8g
bW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50Lgor
Y2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21l
bnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29u
c3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMg
fTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0g
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBN
YXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9VTkRB
VElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0Rh
dGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3Jl
YXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShD
RkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYp
OwogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1Jl
ZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiYmKTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNl
cyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYg
dGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcg
YmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwg
c2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlm
IHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0
OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWlu
ZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hh
cmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0
YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmKTsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2
b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAg
IHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxj
b25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsK
KyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQg
Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFByb3ZpZGVyJiYpOwogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hv
dWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9i
amVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEg
bmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09S
RV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYK
IAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OwotICAgICAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92
aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7
IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVy
PiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBm
cmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQor
fTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVk
QnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNl
bmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVm
KTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0
ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBt
X2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAg
fTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQg
YXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMg
c2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhf
dD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdDsKKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQorICAgIGJv
b2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKLSAgICB2
b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVz
aW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZl
Y3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTMgKzE5
MCwxNjMgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERh
dGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAg
IERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBt
X3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0g
MTsgfQogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBP
KGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXpl
X3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9I
ZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmco
KSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAot
ICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9w
ZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
c2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25z
dDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGln
dW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7IGFwcGVuZChXVEZN
b3ZlKGRhdGEpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7
CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlm
CiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgog
I2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93
bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9Owog
Ci0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVu
ZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8vIENv
bWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZl
Y3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90
PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorICAgIC8v
IENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0
IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgorICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVj
dG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7
CiAKLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0
b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2Vz
cyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYg
Y29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4
cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8
QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNz
IE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5n
ID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNl
bmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNP
UkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9Owor
CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoU2hhcmVkQnVmZmVyQnVpbGRlciYmKSA9IGRlZmF1bHQ7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihzdGQ6
OmluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0b3I9KFNoYXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBkZWZh
dWx0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJl
QnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9i
dWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVz
ZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKSB7IG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+
IHRha2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2Ny
aXB0QnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKKyAgICAvLyBD
b3B5IGNvbnN0cnVjdG9yIHNob3VsZCBtYWtlIGEgY29weSBvZiB0aGUgdW5kZXJseWluZyBTaGFy
ZWRCdWZmZXIKKyAgICAvLyBUaGlzIGlzIHByZXZlbnRlZCBieSBTY3JpcHRCdWZmZXIgYW5kIEZl
dGNoQm9keUNvbnN1bWVyIGNsYXNzZXMgKGJ1ZyAyMzQyMTUpCisgICAgLy8gRm9yIG5vdyBsZXQg
dGhlIGRlZmF1bHQgY29uc3RydWN0b3Ivb3BlcmF0b3IgdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUK
KyAgICAvLyBTaGFyZWRCdWZmZXIuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihjb25zdCBTaGFy
ZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9w
ZXJhdG9yPShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZW5zdXJlQnVmZmVyKCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NCwyMyArMzU0LDI0
IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAg
ICAgcmV0dXJuIGNvcHlEYXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAg
ICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwg
c2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1Np
emUgPSBzdGQ6Om51bGxvcHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNpemVfdCBzaXplKCkgY29u
c3Q7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9u
V2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxv
cHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KICAg
ICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VO
REFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0Owog
I2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAg
Y29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBt
X3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3Ry
aW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5
NWJjZDkxYzdiNzg5NC4uM2Y3ZmJhNDFhNGExZWZiMTFjY2RmZmQ1NzI2NzhjZGZmZTUzZDA5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3Ry
aW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRp
Y1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0
eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUz
MWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmEwMzljMjUyNWVkNWZlNjM1MGNjYjBh
MWFhMzY1MGQzMTk4NmY2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBT
dGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2
b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsK
ICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUx
ODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7
CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZv
LmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlp
bmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
bnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5m
by5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdv
cmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0Fy
dHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5z
cmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIzYzA3
ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3
ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAg
ICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0
YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8w
LCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4uZmFi
NjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAg
dm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVf
dCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApp
bmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi40N2MxMGY5ODAy
MzRjOWFiYzYwODRlYzIxMDQ1NmY2YjE1NDgxOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zNSwyMyArMzUsMjAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkK
IHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRhdGEpOwogfQogCiAv
LyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9u
IGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewot
ICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21lbnQo
KSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRh
dGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAg
ICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChb
Jl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0
KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJu
IGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgp
LCBzaXplKCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OSw2IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5l
ZEludG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6
ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThm
YWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2Jl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlw
ZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZC
dWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9Q
TkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcElt
YWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVw
cmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1d
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlmCiAKQEAg
LTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRo
U2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2so
Y29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW0KaW5kZXggZWU3YmQ0YjNmZGJmOWI3YmM2ZDhkYTBjNjM1Nzc1Yzk1ODViNzE2
OC4uYWQ5NmY3ZjUzYTJkY2MwNGQyOTMyMTAyZWVkODE5ODBmYmZkNTAxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1
LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRl
cmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJ
bnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdl
YkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJD
b3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9u
OwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVh
bGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRh
dGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIp
c2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBz
aXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk1LDIwICs5NSwxOSBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAg
ICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0
YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNv
bWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0g
ICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2Fz
dChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIApAQCAtMTE5LDcg
KzExOCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFy
cmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERh
dGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtb
V2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMg
cG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlh
YThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4
NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0
cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNv
bnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAg
U3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkg
fTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVk
Li4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEo
Y29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlk
c01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250
aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRh
dGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNp
emUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2ln
bmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9
IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0
YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRz
OworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEo
KTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRv
IGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcg
QEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEo
KSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFw
cGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5
SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZy
b21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2
YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERh
dGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAg
ICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1
dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFp
bmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJy
YXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJs
IGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFs
dWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVz
aFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lk
cyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0
LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMu
YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBr
ZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktl
eTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0
MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJj
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVy
R2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2Rp
bmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6
OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9l
bmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5k
ZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEw
ZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAg
IHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRl
eCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4
ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZv
aWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVM
YXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlz
aEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJH
bGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0
YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4g
dmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAg
R1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFu
dC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIp
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIp
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcy
OWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
aApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAog
cHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBm
aW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVC
b29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDJkYmEwMTk1MjlhNzNk
M2ViNGEyNGEwZjYxMTI4ZjdhMTg4NzgwZTQuLjg3ZDc4NGJjNjY1MThmYWIyNmIzNDY2M2E0NjQ0
MDA5M2RlMjcxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hh
cmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRy
PEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0
YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hh
cmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZm
ZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3YzQ4NzhhYmVl
MTAzZmJhZjIxZjU3MC4uMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
b250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVu
dGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMp
CitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsK
ICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERh
dGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA3NDQyMDA0ZjAwYjVkYmEyN2YzYzMyZTY2N2IzNmJj
Y2Y3ODUxNGNkLi40YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwgSW52aXNp
YmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsID0g
SW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVu
dGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
b250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRl
eCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNl
NjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGlu
dGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZv
bnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBj
b25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQg
ZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAK
ICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRh
dGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBp
dGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1v
cnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDJjZjQ0OGJlYTJmYTZhZTRkNDdm
OTY0MDAyYjNhOTA2YzAxMjkwNjcuLjY3NWUyNGI0MGFjN2FhZGU3NDA4NmYyNDJlYWQwMTUyMjFj
MDI0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFN0cmluZyBjcmVhdGVBVkNDb2RlY1BhcmFt
ZXRlcnNTdHJpbmcoY29uc3QgQVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgLCBo
ZXgocGFyYW1ldGVycy5sZXZlbElEQywgMikpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEFWQ1BhcmFt
ZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2Rl
ckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTA6MjAxNAogICAgIC8vIDcuMy4yLjEuMSBTZXF1
ZW5jZSBwYXJhbWV0ZXIgc2V0IGRhdGEgc3ludGF4CkBAIC0yNTUsNyArMjU1LDcgQEAgU3RyaW5n
IGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiAgICAgICAgICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5nKCkpOwogfQog
Ci1zdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJh
dGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29u
ZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTU6MjAxNAog
ICAgIC8vIDguMy4zLjEgSEVWQyBkZWNvZGVyIGNvbmZpZ3VyYXRpb24gcmVjb3JkCkBAIC00MzYs
NyArNDM2LDcgQEAgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29kZWNQ
YXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogICAgIHJldHVybiBwYXJhbWV0ZXJzOwog
fQogCi1zdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUgZm9ybWF0IG9m
IHRoZSBEb1ZpIENvbmZpZ3VyYXRpb24gUmVjb3JkIGlzIGNvbnRhaW5lZCBpbiAiRG9sYnkgVmlz
aW9uIFN0cmVhbXMgV2l0aGluCiAgICAgLy8gdGhlIElTTyBCYXNlIE1lZGlhIEZpbGUgRm9ybWF0
LCBWZXJzaW9uIDIuMCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hF
VkNVdGlsaXRpZXMuaAppbmRleCBhZjc1YzYyZDExNTgwYWQwMzhkNzE3YmU5NGIzMzFkMzlkZGRh
MjdhLi5lZGZlY2IyNmQ4OTQ2N2EyM2QxZjU3MWNiYzVlOTFiMmZhMzQ3ODVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCkBAIC0zMSw4
ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIHN0cnVjdCBGb3VyQ0M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBB
VkNQYXJhbWV0ZXJzIHsKICAgICB1aW50OF90IHByb2ZpbGVJREMgeyAwIH07CkBAIC00MSw3ICs0
MSw3IEBAIHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6
b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZD
RGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZp
Z3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQYXJh
bWV0ZXJzJik7CiAKIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBAIC01NSw3ICs1NSw3IEBAIHN0
cnVjdCBIRVZDUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1X
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNv
ZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVW
Q0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQ
YXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBEb1ZpUGFy
YW1ldGVycyB7CkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CiB9Owog
CiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlD
b2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25z
dCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFt
ZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVEb1ZpQ29kZWNQ
YXJhbWV0ZXJzU3RyaW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUy
M2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRl
NTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2Rl
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBA
IC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1v
ZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwg
dXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1
cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcg
bWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1v
dmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91
cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgK
aW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4
ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxN
b2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRl
Y29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJl
ZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3Ry
aW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNp
emUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YSht
X2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAg
IGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMs
NyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9k
ZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgq
bWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVU
eXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4
IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2Iz
Yzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0Yy
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMg
Ym9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBv
ZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0
IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6
ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRV
SW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWlu
dDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVy
LnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUp
KQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhf
dD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2Zm
U2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsK
QEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRX
T0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9v
bCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8
dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7
CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZl
ciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9
PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQs
NyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlm
IChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAg
ICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZl
cnRlZEZvbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4
IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0
YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZG
IGZpbGUuCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdv
ZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFt
cGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1
cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29u
dmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
OworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBW
ZWN0b3I8dWludDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09G
RiBmaWxlIGFuZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9y
IFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUg
Z2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUg
YnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNk
NTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29k
ZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpz
b24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkg
fTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9
IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXRE
ZXNjcmlwdGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IDE2MTFi
YWFjNDM3MGI1ZmM5OGEyOTIwNzcyMzVkNDVlMDJiNWQwYmEuLmZjOWFhOTlhNjlkZmFlODllNjVi
MmFiM2FmNDg5MTQwNzY4NWZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERl
c2NyaXB0aW9uVXRpbGl0aWVzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFN0cmluZyBjb2RlY0Zy
b21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0
aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZE
YXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIo
ImF2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAgICAg
ICAgICAgIHJldHVybiAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNv
cmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAgICAg
ICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1l
dGVycyA9IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJl
Y29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICJhdmMxIjsKQEAgLTEyMiw3ICsxMjIsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9y
bWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikK
ICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJodmND
IikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAg
ICByZXR1cm4gImh2YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAgICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMg
PSBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0NvZGVjVHlwZV9I
RVZDLCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFyYW1l
dGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTM3LDcgKzEzNyw3IEBA
IFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVm
IGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0g
c3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNp
b25zRGljdCwgQ0ZTVFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNp
b25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAgICBhdXRvIGNv
bmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRl
bnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAg
ICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3Jk
KGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJz
KQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3
OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VK
U09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5p
bmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAt
NzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6
YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBI
QVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERh
dGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBw
c3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERh
dGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkp
OwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRh
V2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9u
czpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpA
QCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8g
ZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1
dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsK
LSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Np
b25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Np
b25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURp
cmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAg
ICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9j
ZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3Mo
KSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6
cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3Jl
cXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFtt
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtl
eVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5
UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRh
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1
ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJv
YmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29u
dGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5
MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0
YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFz
cygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVu
dGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxh
eWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAg
ICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50
aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVS
TF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAg
ICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlE
cy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRL
ZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250
ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRh
aW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3Qg
bWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdl
dCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmls
IGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAo
TlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRh
ID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJ
ZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZl
ckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBW
ZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+
OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZp
cnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAg
ICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmco
a2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0
cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5n
KCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5
bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0
KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5
SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRv
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAg
YXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250
ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQg
PSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3RE
YXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdU
Rk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtl
eVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFi
bGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
IGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkp
OwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmly
c3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50
aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250
ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3RE
YXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0
cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRk
ZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFy
ZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlz
XSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107
CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRl
ci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BS
SU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3Vz
bHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0
ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVw
ZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2
ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChh
bGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQppbmRleCAxYTQzYzdkZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEzLi5hYmQ4MWU1
ZjNjMWVhNTBlNDIyZTJmYTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMs
NyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
QygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYm
IHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwg
QXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRh
a2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxh
Z3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBl
bmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3Ry
ZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2Ey
ZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTVi
NmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0
cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIy
YTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcy
ZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6
CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdl
YWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBA
IC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2Fk
RmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
OwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwot
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAg
IG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4
LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1
bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVy
OjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAg
ICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEp
KTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRp
bmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1
ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTli
YTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZm
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250
ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAg
LTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1f
Zm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlm
ZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3
MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMo
Q0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
aW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAg
ICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMs
NyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1
dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRl
Q0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYg
KHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBl
SWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNH
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAg
Ly8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3Jl
dGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAg
ICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUg
Q0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAg
Ly8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNl
VXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0
KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92
aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNE
YXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNh
bGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRC
dWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0
ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8v
IGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4K
ICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsg
MCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxl
YXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnBy
b3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNE
YXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92
aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApp
bmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlk
NjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5
LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJv
b2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERG
RG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBm
YjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9m
b250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZj
N2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6
ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0g
cmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+
ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0
ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRy
PENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNv
bnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYg
KFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZv
bnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBj
Y2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxp
YnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3Rh
dGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVG
cmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBj
NDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAg
ICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3Jv
bWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZv
bnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIu
ZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAo
ZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJiYWVhNWI4NDViZGVm
YmI2ODZmZTI1MjU5MzMuLmI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkgQEAgVmVjdG9y
PHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1
cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2lu
QXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXgg
ZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5MjM5YmI3ZjBk
OGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAt
MzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5l
IGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3Vp
bnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVh
cmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
OwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVy
PiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXgg
OWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2
MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAog
CiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZm
ZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhy
ZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lu
bmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUo
KnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAg
fSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4MjRkZmMxYzM4
MWE1ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3ZDY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY2
OSw3ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVC
VUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Yg
c2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCks
CiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9N
RU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5p
dERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Cisg
ICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBp
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5
cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRl
eCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5
OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1Bh
cnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQg
bWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxl
bWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRh
UHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChH
TWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgK
ICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7
CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBz
c2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1
c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpw
c3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVy
cm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdN
YXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRF
bGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJ
bml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9h
ZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBh
eWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQw
OWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1YzFl
YzQ0MWFmNzE5NDlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVW
RUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVn
b3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24g
ZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5l
ZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAo
YXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+
Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJz
ZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0
IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAg
ICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVl
ZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9h
ZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzYs
MTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2Fy
ZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAot
ICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAg
bV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9h
ZDsgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBt
X3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNv
bnN0CiAgICAgewpAQCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJj
ZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3Bh
eWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0
YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURh
dGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwg
Ym9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24u
dGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0g
YnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3
MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1
MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAg
LTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0
YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4
YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZE
b2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFk
b3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERG
RG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29t
cHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5k
ZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1
ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBU
YWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlv
bkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25b
MV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9u
IHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWND
b3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5
cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxp
Y3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRh
bGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlw
aEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRl
ZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9P
ZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8o
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAg
ICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJs
eSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07
CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBj
b25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0p
KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJs
ZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAg
ICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50
IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QK
KyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBA
IHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAg
dmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAg
ICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0
cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYg
YXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGds
eXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNz
ZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBA
IC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5U
eXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJl
IHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6
b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0
IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAg
IGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0
aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVy
dGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRb
Y291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRz
KiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBA
QCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRo
R2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAg
ICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1h
dGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNl
dCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNm
Li4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6
IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJf
Zm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIy
YzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMw
OTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBA
QCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5l
IE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAy
NCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgp
IHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29u
c3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBz
aXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2
YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
LCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgp
IDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29u
c3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVk
OgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAg
ICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJu
IG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVk
IGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCog
cG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxp
ZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQq
IHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1
cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2
YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0
KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNl
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEy
Nyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNp
ZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxl
QmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5
cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJ
bmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdl
VGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNv
bnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewog
ICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFh
Li4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFw
cGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUg
aW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZv
bnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMg
dXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29s
IHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBm
b250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1l
Rm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5n
JiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBz
aXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50
SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERh
dGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgog
fQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50
byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFy
ZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUy
YzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWlu
dDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVt
b3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9y
eVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3
YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3
MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2
LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VP
ZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJs
ZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBj
b3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQp
OyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0
aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAg
Ly8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFm
dGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHku
CiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0
aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJs
ZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJU
YWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBM
b29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExv
b2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBj
b3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0y
MDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3Bl
blR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExp
c3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1
cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25z
dCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBG
ZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVy
ZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQx
Nl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJl
Q291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIs
ICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUo
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291
bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNb
aV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBA
IHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYg
ZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0g
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0
dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
ZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUlu
ZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0g
bGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpA
QCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAg
ICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0g
ICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICsz
MTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0
U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291
bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMy
MSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0
KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVm
YXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNj
cmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYs
MTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZz
ZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZm
ZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVM
aXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25z
dCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RP
ZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNj
cmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJl
TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNj
cmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2Ny
aXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQog
Ci0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRh
ZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRh
YmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVh
dHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUs
NyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1
cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBH
bHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9
IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAo
IXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFi
bGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRo
cykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5
cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpI
aGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWly
ZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpW
aGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0g
T3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAg
ICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9w
ZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpH
U1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRh
YmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcx
Mjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1l
ID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRm
MTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250
UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwog
Y2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0
aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9u
dEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0
Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5
MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRp
YyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fp
cm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQu
LjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9X
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25z
dAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4
IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2Rj
OWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAg
LTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9i
amVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyho
ZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkog
b2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9
IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwg
MCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRj
LCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxl
Y3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5o
CmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMy
YjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFy
dFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3Rv
bURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92
ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkg
Y29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0
YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBt
X2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4
Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAg
ICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRv
IG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0
byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNv
bnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0
YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRh
U3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAg
ICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29k
ZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjFjODcxZjRkNTY0
OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdf
c2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0g
J1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpw
ZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7
Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtl
ciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewog
ICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUND
UHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9s
ZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFy
a2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAg
IH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJl
dHVybiBidWZmZXIudGFrZUFzQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3
MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNv
ZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBK
UEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0
Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShM
Q01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OGNjMGU3MmFmODc2NTVlYmFl
NmNhNWQ0Yjk3OGMuLmE3ZjQ1MDMyMGU5MDhjNmExZjVmMGY4OTU2MDkyYWUyNDc5NWEyNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yNDAs
MTQgKzI0MCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYg
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRl
bUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJk
V2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJl
YWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6
RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzoo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0
ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVmZmVy
KSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBl
OwpAQCAtMjU1LDcgKzI1NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJ
bWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1J
bmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAg
ICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5v
bk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFk
ZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
CmluZGV4IDlkYjBhYjM0YjI2MThhMDQwMmIwZDI0M2RjODcwN2EzNjc4MjNkZTMuLmQ5ZjQ4ZWQx
YjM0MDVkMmRlYTk3NzhjM2E2YzU3MmJjNTMyZmI5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5
LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBb
bV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0z
MzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikK
K2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNDYz
LDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJv
YXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVz
LnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50
RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVz
W2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50
LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChj
b250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFy
Y2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0
cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFy
Y2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0
cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkK
ICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09i
amVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUyMSw3ICs1MjEsNyBAQCB2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJv
YXJkSW1hZ2UpCiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAg
ICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7
CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9y
VHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2Uu
aW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2Vz
dGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRT
X1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJp
YWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAo
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRh
ID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChk
YXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDog
ZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMu
YWRkKHR5cGUpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4odmFsdWUpOwog
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwog
CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjph
bGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0
cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIGJ1ZmZlckZvclR5
cGUodHlwZSk7CkBAIC03NjEsNyArNzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwKIAog
ICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RB
dEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtw
YXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
MjE2ZWRkODQ3NWUxNDg4ZGI5ZWE2MTBmMTIzYmFhODE5ZTZiMzFmYy4uYTE1MTZhZTM0ZjgyOWJh
NzJjYTU2MWQ5NWU0ZmM5NzhiOTUyZDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVX
cmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dy
YXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUo
cGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBl
KV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTI2Myw3ICsyNjMs
NyBAQCBzdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVX
cmFwcGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbgogICAgIGlmICghUlRGRERhdGEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFJURkREYXRhKS5wdHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUo
KSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjg1LDcgKzI4NSw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIG1fY2hh
bmdlQ291bnQgPSB3cml0ZVVSTEZvclR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkSW1hZ2UudXJsLCBjb250ZXh0KCkpOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRU
eXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9y
VHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVn
YWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAg
ICAgaWYgKGF1dG8gYXJjaGl2ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdCkgewogICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgp
LCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApA
QCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRl
bUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0
cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQog
Ci1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwg
UGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBT
dHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRT
dHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAg
IHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlw
ZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdh
Y3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0
ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVk
U3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVk
U3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGE3ZmU3MjU1NDM3NjY1ZThiOGEwYzc0
NTNkMzA0NzQ5ZDQ1NjJmNjcuLmI0OWFkN2MwNGE1MjgxODJhNTFiOGEzYTk4NGQ3ZDkwNGQ2Mzk3
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtl
VmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3QKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBl
OnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5n
ZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5T
KFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJl
ck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRm
b3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5n
JiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAg
aWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JU
eXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0
byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBk
YXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAg
IGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0
eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKHR5cGUpOwpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAg
aWYgKHBsYXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBs
YXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAg
ICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsK
QEAgLTM0MSw3ICszNDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFz
dGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgp
IG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJG
b3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewog
ICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVU
eXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVm
ZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LAogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7
CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAg
IHJldHVybiBudWxscHRyOwpAQCAtNTA3LDggKzUwNyw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQ
YXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3Rv
bURhCiAgICAgICAgIGlmICghcGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZv
cm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAg
ICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRl
eCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi41ZWQ5OGM0MTMwYjli
ZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2RjMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBt
X2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fZGF0YUxvY2spOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZi
N2I1M2Y1Li5jNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBA
IC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAot
ICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFu
eSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEg
d2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93
cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC01MzcsMTgg
KzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNo
RGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2Rh
dGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9k
YXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsK
IH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRh
a2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8g
ZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9k
YXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCAw
YzkwODE3YzRlOWI0MWYzNDlhNDFhZTY0YjcxOTA2Yjk1MWViODlhLi42MjM2NGQ3MTNjOTVhOWY4
NDNjN2QyOWMwMWYwZGViOWFlNmQxNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURh
dGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZl
cigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAg
ICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50
LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JV
UkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmlu
ZGV4IGU5ZDM0NDNmOGI1YzY4MjQ0NjY1NmMxODgwNTY1N2NjMjlkMmQ4MzcuLjEwODI4MTEzMWY4
M2U5OTM3MGZjNTA5NzgzM2NjNTBlZThhZGJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmls
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgIHN0cnVjdCBFbmNvZGVkRmlsZURhdGE7CkBA
IC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1l
bnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3Qg
eyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29s
IGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44
MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxl
Q2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4
MzgxOTI1MzY5NGFhLi44OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJD
Rk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBo
YW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5jbGll
bnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYg
KG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2
NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLmUyYzM1ZWQzMTBiMzExMDY1MTE2
YzhmYzg2YzJlNDAyOWE4MmM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAg
LTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2lu
YWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQog
CiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7
CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsK
ICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAg
IGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwg
V2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3Bv
bnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0g
ICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+
LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExv
YWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBs
YXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lk
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VU
b1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAq
dGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAg
YXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3Vn
aHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBi
dXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3Rl
YWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0
aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0
aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJT
aXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVm
ZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tE
YXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVm
ZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0
ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRh
aW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRh
c2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNz
aW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjks
NyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0
ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tE
YXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRl
VG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRl
eCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0
byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAg
ICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0x
NzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9
PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJu
IGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7
CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExl
bmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMg
ZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0g
ZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcg
KzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9t
YXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2Vu
ZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5
OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3
NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9p
ZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6
KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3Vy
Y2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVn
YXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RG
TW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9
IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRh
RGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgp
LnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3
YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBo
YW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZm
ZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFw
cGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAog
ICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2
b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAh
PSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQg
dGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFp
bmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsK
KyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11
bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JC
b3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0
ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5
IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAg
ICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFy
eSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9m
IHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7Cisg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAg
ICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgo
KSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIw
MjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkw
LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRG
aWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAg
ICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
bV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEy
NGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2Rj
ZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAg
LTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxs
ZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdl
cjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxl
LCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6
c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZt
X2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQog
CiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJl
cXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4
IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZkMzAuLjM1ZDUyNjE1MTdlZjRm
MDQzMzYxZDVkMTAwZmQ3OGQ2YzhkMDlmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICsz
MDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24g
ZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1l
YW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5z
cGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJz
IG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxl
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNl
aXZlQnVmZmVyKG1faGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFk
OldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwCmluZGV4IDczNjVmMDEwOTQ0YTkyNmIwZWJjYTk5NmJkZGFlMTQ0OTUwZjYzZTMu
LmY0OTg2YjAwMTA4YjE3OGY2NDdlNzZlNzM0Y2EyYzNmNzNjMDc0YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYsNyBA
QCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJk
RmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwg
eyArK2NvdW50OyB9Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCB7
IDAgfTsKIH07CkBAIC05NzgsOCArOTc4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFs
SW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNv
bnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUo
KSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwog
CkBAIC0xMDMwLDggKzEwMzAsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAv
LyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRl
bjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYg
KGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmls
ZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAw
KTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2Nl
ZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUo
dGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUw
ZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAg
ICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9
IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBy
ZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29u
dGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1v
Y2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBj
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmll
dyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUt
PnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAg
ICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywg
InZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0
b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNw
b25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVj
dG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNl
LT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMo
U3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZh
aWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJk
MDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJh
NWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6
OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBz
dHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwg
dXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkK
QEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAg
ICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAot
CiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1
ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewor
ICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewog
ICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBz
ZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25z
dAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50
KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEo
KTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQo
KSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxl
RGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVm
ZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFw
cGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFh
MDQzMTM0YzY2NDYuLjM3ZjFhNDg3ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3Ry
aW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIq
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgU2hh
cmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsg
fQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlw
dEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkp
IDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyBy
ZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZm
ZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVu
Y29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYs
IGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDQzM2Q5ZTFhNDVjMjk4ODU0MmIwNWU3NGI0NzE3
YTc3MDU3MjhiYjYuLjJhNzEyNTQ3MThlYWVkZjUxYTQ0N2VjZTYyYzRjZDcxNmJiMDc1ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
QEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJGb250U2VsZWN0aW9uQWxnb3JpdGhtLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldPRkZGaWxlRm9ybWF0
LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmgiCkBAIC03OCw5ICs3NywxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1
cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEs
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2Rh
dGEpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3Vz
KCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEp
OworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IFdU
Rk1vdmUoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDEwICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4
MGJkZWViYzVjNmUwNGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1
MTc2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2LDcg
QEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0
Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQw
Li4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVz
cG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwg
cwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dp
dGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGll
bnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAg
fSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAg
ICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4
NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYy
OGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3
LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8g
d2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhh
dmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8g
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlV
c2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBp
bmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5n
OjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwor
ICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4MDVj
MjgxYjk0ODA1NDVhZTI2Li45YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAK
ICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4LDcg
KzIwNyw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkK
ICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9j
ZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0g
ICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxs
cHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRU
eXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxN
SU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwg
d2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsK
IH0KQEAgLTIxOCw5ICsyMTcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkg
PT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJy
b3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZm
ZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51
bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0
cFJlcXVlc3Q6OnNldFRpbWVvdXQodW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3MzgsNyBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNw
b25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsK
ICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgpOwog
ICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsxMDYy
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmlu
YXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAg
ICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAg
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCiAg
ICAgaWYgKCFtX2Vycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDA0
ODQ2MjZiMmU1ZGZkZGE3Y2IxNmM0ZjU1MjJkZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4Yjli
NGY5MjVkMzJiZDg2YmEyZDgwMzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJG
b3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NSw3
ICs0Niw2IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRh
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJj
aFBhcmFtczsKQEAgLTIzNyw3ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3Vt
ZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJl
NDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5
MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2Fk
ZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
ICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVz
dEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlh
MjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNv
bnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEy
MDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVj
NDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBS
ZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGlt
ZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRh
dGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsK
KyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRl
ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjBi
OWY0OWQzNjRjMjU5NWUyMjNiMzExNGRlYWZjZWU5MmE0MDBmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3Qo
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50
OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQot
ICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0
ZShtZXRyaWNzKSk7CiAKQEAgLTMwNiwxMCArMzA2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0
TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChp
c1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9z
KQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNl
Q2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9
IG1fcGFyYW1ldGVyczsKQEAgLTczNCwxNiArNzM0LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0
aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291
cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJz
Lm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1
ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxh
Y2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5k
IGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5
bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZl
cmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLnJlc2V0KCk7CiAKICAg
ICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgp
OwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2
YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsg
Ly8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY5LDEwICs4NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQ
cmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQg
c2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBp
ZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg4MCw3ICs4
ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIHVuc2lnbmVkIGVuY29kZWREYXRh
TGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAg
bV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0
QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC05MDksMTEgKzkw
OSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5j
aHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5j
aHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNz
KTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNM
b2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUg
ZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVm
ZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5n
ZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAg
fQpAQCAtMTI1OSwxMiArMTI1OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVm
ZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKICAgICBBU1NF
UlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkK
KyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9i
dWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZl
cmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAg
ICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJl
ZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsK
IH0KIApAQCAtMTI4OSwxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkg
ewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nl
c3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9S
RUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0
Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZSht
X25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2Up
LCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24t
PnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVy
bCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9M
T0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNo
ZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCks
IG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBS
ZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5z
dG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1h
cHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAg
ICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3
MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTkyOGI5NWQ4YzZmNTdiZTI1YzVmMjExODk4OWYzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsg
MCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hy
b25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDEsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNo
ZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29s
IG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNjMmY0
Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9k
eUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1h
a2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0
ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4MWNj
N2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBS
ZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNw
b25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYp
OwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJl
dHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJm
ZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3
ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRv
IHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6
ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJh
MmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENh
Y2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBj
b25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJv
ZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0g
eyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6
Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFs
PFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUo
cmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgp
KTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwog
CiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZh
MDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYy
ZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3Rv
cmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAg
RGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAg
IERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVy
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAg
ICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9
IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVy
LmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJu
IHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2
ODM1MzZlYTBkYzgxOTMuLmQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3Bv
bnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFs
aWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7
CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBk
YXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICog
MTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkg
KyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFw
cGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAo
IW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9
KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVl
c3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1h
cHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRy
eSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0
dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0g
ICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAg
ICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQog
CiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4
IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjY3ODMwZGYwYjMwMzQz
MzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNo
ZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjdlMDViYTg0NzhhNTgxODMwZTM5NzA2OGIz
MmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4MTgzYzk2YjgzMTIwYjFmZWYxNTZiYjhjMDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJl
c3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRh
VVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAg
IGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkp
LT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1f
aW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5
dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5k
ZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMjlmNzFkN2U2ZGM3
NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJi
YzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJiMmQ4MDJh
YzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6
CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVm
ZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBt
X2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihi
dWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBl
bmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1
b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZl
cjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNi
YTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkg
Y29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXpl
IDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7
CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWlu
dDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihw
cm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJh
Yi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1
bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0Owog
CiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2
NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3
ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2ln
bmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZl
UmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1f
YXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiBy
ZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlm
Y2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAg
ICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5
LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcg
aXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFs
dWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNl
RGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxl
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5k
ZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUw
NTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9m
ICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3Ro
KGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0MDJi
ZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4
NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJ
blNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7
CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7
IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXpl
KCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3Vy
Y2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCBkYTFlZWUwYWQ2
MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVm
M2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYp
OwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBA
IHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJl
ZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAK
ICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyYTRh
ZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uZTkzZmQ4OWU3ZWZjMDc2YTliOTE4Nzc3YmQ2MDhj
ODM0NGI5NGFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVm
ZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlm
CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIo
RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpv
cHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyAr
MjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZl
cihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Cisg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29k
ZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9p
ZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
ZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBl
bmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5
cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwog
fQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERl
Y29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVU
eXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsy
NjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0
YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0g
dHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsg
aSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBl
bmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJl
c3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwog
Ci0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNl
Qm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAg
ICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QKICAgICBpZiAoaGFzU3RyaW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6
Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsKIAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBi
b29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAg
IGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFz
dGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0YSkKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNC
dWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25O
dWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBl
KSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5
cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3Rk
OjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFs
PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6
ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYw
MTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlm
aWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFz
cyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1
YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3
ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25h
bDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9u
LnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxl
Y3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikp
OwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJk
NzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3
MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0
ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRh
KiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRh
LnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9u
dEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAg
ICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4
IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5
MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5Mjlj
ZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQy
YjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwog
T0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xv
c2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQog
ICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2lu
Z0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA2NDQ5
MWUxNjJlYzZjNWJjZmEzZmM0Y2IyNDlmOGQ5Y2NiNjM5YjIxLi4xYjliNTRiNjI3MTgxNDk1MDhm
OTAyN2M4M2M2NzMyMDZiYTgyOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBA
QCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0
YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwog
fQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24p
Cit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYg
ZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThk
NGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBj
b25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRv
cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigp
OwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlm
ICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRh
KTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDA0
Y2ZkMDI5YWM4NDgzYTdjMzIxYmE1NGIxMTgwYzg2ZmM0ZmQ3OGEuLjNlOTIzY2Y2NDlkOTZlMzRl
ZDJhNTFmOTE3MGQ1YjE3NDFmYTY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTYwMCw3ICsxNjAwLDcgQEAgLSAodm9pZClfc3Rv
cmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAg
ICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFs
dWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0
IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9
IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hs
aWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRl
eHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVl
c3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0
b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0Lmlz
TmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdl
YkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CkBAIC0yMjIzLDcg
KzIyMjMsNyBAQCAtICh2b2lkKV9zdGFydEltYWdlQW5hbHlzaXM6KE5TU3RyaW5nICopaWRlbnRp
ZmllcgogCiAtICh2b2lkKV9yZXF1ZXN0UmVzb3VyY2U6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNEYXRhICosIE5TVVJMUmVzcG9uc2UgKiwgTlNF
cnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2Uo
cmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikg
eworICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKICAgICAgICAgaWYgKGVy
cm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsLCBuaWwsIGVycm9yLm5zRXJyb3IoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3Bw
CmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0
MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcg
QEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3Rr
U2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAg
Y29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRo
X2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAg
ICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBt
X3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2
NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAg
LTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZp
Z2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07Cisg
ICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcg
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcyNzc0ZTI2OTY1YjJkYmIyYTczNWUuLmJlMTQzNzBk
ZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRhNWY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIg
KzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0
cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVy
UmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRp
b25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0
cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAgICAg
IHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25l
bnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CisgICAgICAgICAgICBh
dXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7
IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
MmUxMGRhNjZhYmY2NDg3MmY5MTNjMTMwNTNhMmViN2RiN2E3ZmMyYy4uMTFjYzc1MjhhMWU1ZjZh
ODY4NGZjZTA2N2UwYWRhMDc0NjJlZTRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5ODMsNyArMjk4Myw3IEBAIGJvb2wgV2ViVmlld0lt
cGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwg
TlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRv
OldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bh
c3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
IGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRl
eDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2Jq
ZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/
IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0
QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDc3LDcgKzQ0NzcsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1h
Z2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0
ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChh
cmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBl
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwOCw3ICs0NTA4LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNT
dHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9t
aXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5T
RGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2Ut
PmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBb
cGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkg
Zm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NjEsNyArNDU2MSw3IEBAIE5TQXJyYXkgKldl
YlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJM
ICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3By
b21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0
YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlz
ZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7
CkBAIC00NjEzLDcgKzQ2MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSBwYXN0ZUFjYwogICAgIGhpZGVE
T01QYXN0ZU1lbnVXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRl
bmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW3Bhc3RlYm9hcmRGb3JBY2Nl
c3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSku
b3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNj
ZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEocGFzdGVib2FyZE5hbWVGb3JBY2Nlc3NDYXRlZ29y
eShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9N
UGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggZjQwMDBhNmI3MTkxMzVjMzQzYjRjZDA5YzAyM2E2OGYyYzVlNzg1ZS4uZWFmNWVlYTk4MjNj
YzRmMjU5ZWFkM2UwN2QwOTA4MzFkOWQzZjlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzUsMTAg
KzMzNSwxMCBAQCBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3du
bG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdAogICAgIHJldHVybiBtX2Rvd25sb2Fk
UHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBwcm9jZXNzUG9vbCwgcmVz
b3VyY2VSZXF1ZXN0LCBmcmFtZUluZm8sIG9yaWdpbmF0aW5nUGFnZSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpy
ZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNvdXJjZShwYWdlSUQsIHNlc3Npb25JRCwgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShyZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJUEM6OkRhdGFSZWZlcmVu
Y2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAg
YXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIp
LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShlcnJvcikpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAppbmRleCA4NmYxYjMwNDRmYzg3OWQwOTNmZWU5NmNlYTZlYjEwYTUzODc2NjM0Li43MGI1N2I1
NDQ1MzkyNjUzYjQyNmFkNzg4ZmIxMTIyNWI3OTJhZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNjUsNiAr
NjUsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3Mg
U2hvdWxkU2FtcGxlIDogYm9vbDsKQEAgLTEyMyw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5
JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0
YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UpOwot
ICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZvaWQgcmVxdWVzdFJlc291
cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYp
OwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCmluZGV4IDE5NWMzYzgyMjA4OGE3N2JiOWRmMTY3ODUwMTBmNDE1NmM2Y2M2NjEuLmVk
OWQ4MzM3ZjQ3NGY3NzhlZjc2YjE5NGM2OTIwYTExODRmMmE0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OSw3ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnBy
ZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVu
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1l
bnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdl
YktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggODk1ZTdiOGNkNWI5Mzk5MjY0OTM2MTVkOGY3NzU2Y2Y1ODdhODY1NS4u
NzA3ZmQyZGU3YjdhYzBiMjYyZmQwZjc2NzNjMjg5ZDg4MjNhYmUxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02Mzc3LDcgKzYzNzcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIENvbXBsZXRpbwogICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJl
c291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2Vic2l0
ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucmVxdWVzdFJlc291cmNlKGlkZW50aWZpZXIo
KSwgc2Vzc2lvbklEKCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGY4OGJi
NWI3OWViYzZmYTJhOWU4OTY1NDMzMTRmMDIwMjhmNjVkMi4uOTAyMzdhZTU1ZmY5M2RlNWI5NDc5
MTY5NmUxMzlhYjE1ZTM4NzM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRh
dGlvbkJ1YmJsZTsKQEAgLTExODMsNyArMTE4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lz
dGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAg
ICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAg
IHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCkBAIC0xMzc1
LDcgKzEzNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93
bmxvYWRQcm94eSYpOwogICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRhJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93
bmxvYWRQcm94eSopPiYmKTsKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYp
OwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7Cisg
ICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4m
Jik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3Jl
U2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYg
d29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmlu
ZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmVkOGNiNjUzZWNm
ZGQxMzQ3M2VlMWQyYWY1MGJhYTdhNmY3YTEwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xODcsMTAgKzE4Nyw3IEBAIGF1dG8gV2ViVVJM
U2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+
IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkp
IHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0
YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBA
IC0yMTUsMTQgKzIxMiwxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb25UeXBlOjpXYWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKIAog
ICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAg
ICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsK
IAorICAgIGlmIChpc1N5bmMoKSkgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEu
c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS50YWtl
QXNDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9u
SGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBt
X3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXIt
PmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAy
MWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5kZDZiNzI0MTBhZGQ0ZWY2MzFkMjgw
NjllMTRhM2YyYTAwYzVjY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNSw3ICsx
MTQsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmND
b21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jl
c3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7Cisg
ICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBt
X3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
aW5kZXggM2IwNGE4MzNkYmUwYjZiNjZlZTE0ZDNjMzAwZjMwNjg3MThiZjJjZi4uNWM4ZTNiOTJm
MDg5OTJlZjRkYWQ2MmIxNzdhODJmMzE2MDhiYmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
bnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0No
YXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdl
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0
LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGZhYzll
N2ZiNzhiZWUwZjYyOTQ1NjcyZTNiYjc0YjllMDUyMGUzMGYuLmI2ODRlMWM5NGVhY2I2NzI4YmIx
MzA2OGNiNjk1MjI3MDFmYThmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hh
bmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnko
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNh
dmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZl
cikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFn
ZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxMmYzYTE1
YTQzYjhhYzRkMTUxZmYzMDNjM2M1Zjc3ZDEzNTMwY2JlLi45OWFlZDAzNjg4ZTBlNWM2MTc0Nzkw
ZmRkZDhkMjUwZTlhYjcwYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0Miw3IEBA
IC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRl
cjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEg
PSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9y
IChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1
bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02
NjUwLDcgKzY2NTAsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRj
aE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0
YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAg
ICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1
ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJl
dHVybiBOTzsKIApAQCAtNzYyMyw3ICs3NjIzLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lz
dGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQK
IHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBO
U1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIs
IChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBm
b3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBu
YW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsK
KyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07
CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29u
dmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhh
bmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggZGQ4Mjk1M2I5MGY0ZjEzYmRiOGNhNzZjNDI4ZDBjMDcyYzBjNWRi
OS4uN2E4ZmFjZDMxN2EwNjM5NmQ2M2I4ZGVlYzY1NzFlNTUxM2VjNDk1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4
LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlNDQyN2UyYzIwZGYxZWFjYWE0MWQwMjM1
N2U4N2ZiM2FlYzE3MGVlLi5jYTZiODczYjFjODNmNWE1MDdiODVlYTBmZjMxY2VkYWRkMWFhYjBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
QEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUz
Nzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBA
IC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1
bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0
eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9u
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6
OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsg
cmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4
IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjcz
MTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlk
IDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAg
ICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VU
b1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYg
cmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lk
IGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVn
YXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcK
ICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVs
ZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9j
b250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhh
bmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4g
ZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlw
ZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0
ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1
MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2Jm
Y2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29u
c3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwg
dG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdl
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3
ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2Fy
ZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0g
OiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5z
aXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3Rl
Ym9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZl
NzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5
YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5n
ZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2
b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRp
b25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2
b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3Rl
Ym9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBh
Z2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFu
Z2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBj
YzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5hMzRlMjEyZDA3YWYyZmY1NzNlMWE4YTM0MGVjMWQz
ZmNlYjQyYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGlj
IHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0
YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChX
ZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVm
UHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hh
cmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBB
UEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
Y29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3Vz
QnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0
KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShN
SU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5y
ZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVj
Mzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9k
ZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShm
aWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
ICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCA5NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5YTk4OTU1ZmQ0NDMwLi45OGE2ZTJlN2I1
N2U1MjMxOGY0MmM4Y2QxN2U0ZjBkZTA1MDk0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFy
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hh
cmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0
OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5
NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
bV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5v
dCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAg
aWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+
aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
KHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggZGM1NmQyYzY2ZWQ4NmI5NjI5NTBhMzQ4MjA4M2UzNDU4YjMyYjUyYy4uMDhjZmJiNTUwZWRj
YjU2YzU5OTdhMDQzNmMyOTY1M2VmMGU4MDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQwMywxMCArNDAzLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NF
UlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRS
ZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQotICAgICAgICBt
X21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKKyAgICAgICAgbV9tYW51
YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNDM3LDcgKzQzNCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZh
aWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQp
IHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5p
c2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEucmVz
ZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDggKzkyNiw4IEBAIHZvaWQg
UGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
dWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRp
YWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYm
IG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAg
ICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFs
U3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAg
cmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0xMjQzLDkgKzEyNDAsOSBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZl
ck1hbnVhbFN0cmVhbSgpCiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgogICAgIGlmIChtX21h
bnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1f
bWFudWFsU3RyZWFtRGF0YSkKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURh
dGEudGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0
KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50
LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJk
NWJmY2Q2ODAyM2YyMy4uNzMyNzQxZDk1ZWU2YTJiNjU2ZjNkOGMwOGM4YWZmYmE3ZTJmYWY2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2
b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5n
LgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hv
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdi
Y2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uNzZkYzQzMDZkNWYyMDg3M2JiMTM4YmY2
NmJiMGNiZDM2ODc3ZjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1
ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1f
cmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3Bv
bnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNl
RGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gp
CiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlz
aCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+
JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIz
NDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLmM4YzBkODYyZDcxMzkzOGM3
NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xp
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2Fk
ZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpu
dWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURh
dGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwor
ICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZGYyNzhhNzg4NGJhYzg5ZDVkMTVmN2Rj
NjQ5ZDY2ZDgwNTA0YzFmNC4uYTAxMDNiMDJhMGY0ZDRhOTFlMTdmMzUyYmY4ZjlmMTA1MjVkOGNl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53
aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3Bh
Z2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKaW5kZXggNGM0ODg5NzYwMTIyYWY3NmYwM2I4MGM0Zjg2NjJhMTIzZjRk
OTE3ZS4uZTE2YjBjZjM4MTgwNjExMGRiYzZlMTdlYjc1ZDkxZDNlNGIwOWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRp
dGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9p
ZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAg
ICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7
CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEw
NWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlk
M2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFp
blJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5S
ZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWlu
UmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVz
b3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRh
Rm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxl
bmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAppbmRleCA2MGMyMDdlZDBlZWE4MzZiNDg3MGRkYTdjNmJiMzBhMTQ1NGNh
NDk3Li40YzY2NmRkNDBkNWU5ZDQ1MWExZTA2YzExZmQwODAwMjdhOThiMmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQ
YXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwg
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0
eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVz
OjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9h
cmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZm
ZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3Ig
bmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBp
cGNIYW5kbGU7CkBAIC0yMDksNyArMjA5LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAg
ICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
ZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUg
aGFuZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKQEAgLTMyNCw3ICsz
MjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5
cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFu
ZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjAwYjZjMDE1OWI2
ODhjNzJhM2ZhZGZiYWUwYTY5NDgzMWI5MzZlMC4uMDQ1ZDRjYjg5YTk2NjRhMDhlMWI4MWEwNTMw
MzVkYzVkOWQwYzU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyAr
NTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJP
ZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBA
QCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90
IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBz
ZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBy
ZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODks
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1
ZmQxM2M3NTRlMTAuLjc5NTYyNmIwNDg2MjIwZjlhMzA5ZGIyZmI3MjVlMDRiMjIyNTRhM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NSw3ICs0NCw2IEBAIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAg
ICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZm
ZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KIHsKIH0KIApAQCAtNTcsMTAgKzU1LDEwIEBA
IHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2J1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHdlYlBhZ2UtPmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUobV9maWxlTmFtZSwgbV91dGkpOwogCi0gICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIp
OworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQpAQCAtNjksMTMgKzY3LDEyIEBAIHZvaWQgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNs
ZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUobV9idWZmZXIudGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1
ZmZlci5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVl
c3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2Vl
YzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li4yN2FkMWM1MjAyNjYwMWU3YzQ5ZWQx
ODc3N2VlYWZmNjBjZDE5YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAg
ICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDlj
MmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25z
ZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVm
ZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2Vi
RHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsK
ICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1
dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEg
KilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAg
ICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVm
ZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1v
cnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQy
N2MwYjE3YmY1ZWQxMy4uOTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAt
MzQzLDcgKzM0Myw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJl
c291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVy
biBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBX
ZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBlNDY3ZWZmZmQ3OTQ3
Yjc4YTRiODA3MGQ0ODg4YjA2YWY4ZWI3ZGM1Li4zOWFiNzQ4ZTEyNjZkNTliN2M2MjBhNzdjMzM5
ODM5ZWQxMjE4MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBD
b21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9h
cmRUeXBlKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2
ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBi
ZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRh
UmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0lt
YWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICop
bWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3NmI2ZDEyYzRjNDU4MTM5
ZjMwODI1OGQ5M2ZmMy4uYzY1ZTk3ODg4Yjk2YjczNzk1ODgwNWI2ZjhmYTAwOWRjZDFmYjE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3Rl
QWNjZXNzKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzQ2F0ZWdvcnksIGNvbnN0IFN0cmluZyYpIGZp
bmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdl
c3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0
ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9
CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0
Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMWQ4MWZmYTE5ZDk3ZjA0ZWM3
Y2M1NzViM2VjZTVlODg4MTQ0MGIzOS4uZTM1MWVhOTk4YzA3ZTRiMzA0NmZjOTBkMjY0NWZhYjNl
NmQwZDg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgog
ICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFt
ZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8
U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwpAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRf
dCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZv
clR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMTg4ZWM1
MDA0NTA3N2Q3OGIwMTIwYTZkYWZiYjA0ZmI3OTI3NjQ2NC4uYTNlM2M5MzE2OGQ4OTM2NTAyYWE2
ZTdmNDU0ZTRlNTdlZDFiMTI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAt
MTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZm
ZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwog
fQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4
OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2
ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEg
KilkYXRhCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
bWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1
cm4gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJl
c2VudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEy
NzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNX
ZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxm
IF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRC
dWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVu
dExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hp
dmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFy
Y2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9y
ZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVh
OTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyAr
MzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRl
bShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2Ug
PSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMg
YWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQo
KV07CisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9j
XSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAg
ICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggYjA4YzFk
MjFjZjlmMDRlNjExYjU5NWVkZTNjYjY1YTE3YzQ5OTc5ZS4uZDNiNTE2YzQxYTkwZTdmYTU3ZGFk
OTg5MWQ0OWEzMzkxNDhhMzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVy
OihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJp
bmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmls
OwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJl
c291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgp
LmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAg
ICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2Rpbmcg
PSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNl
LT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5u
c1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZv
cktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRh
LmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9i
amVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNv
ZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29k
aW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAg
aWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3Jl
bGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJM
ICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAg
ICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAg
IFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2
YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5n
LmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRh
LT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7Cisg
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFk
NDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyAr
MzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlT
dHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9
CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYy
MTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5
YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAt
MzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0K
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxN
ZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3Ry
ZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAw
IH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCmluZGV4IDgxNTc5OTYxMDc2N2UwYmI5YWQyMjQ1NjdkNzI1Y2QzY2Rj
ZGIxZmYuLmIzYTJjNGNmZWIzZThmODJhMDUwYTM4ZjU3MjU4ZDkwNmQwNmJlM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VM
VCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAg
ICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUy
Yjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDA4N2I2OWU3YThiMGI2ODhhY2JmZTQ0ZTRk
YWIxYjdiZGE1NDFmMjguLjk1ODFhYmJkOTMyYTUxYmJlOTgyMDVhMjMxM2E1YzgwOWJhNjk3ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBm
aW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVj
NzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4
ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNw
cApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091
dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAg
cmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwor
ICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBI
UkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdl
YkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNmRj
NGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWRE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNU
UiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEs
IF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNU
UiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBz
dGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1F
KSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9J
bl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAg
ICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0
dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBv
ciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVE
RUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFC
dWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUo
KSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRF
bmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRh
a2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRl
eCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0
NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2Uo
KQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2Vi
UmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1v
cnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2
OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJj
Y2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcg
KzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNzJhNTZkYzc3NzAzNjZkMDBjNTMzNTVkZDMzMzY0YjAzNTFmODA3Ny4u
YmE1NGY2MWE0ODgzNDY3OWZhZTcwNmIxODZjMzcxNGVmZDM1YjNiZSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIx
LTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVz
dHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisg
ICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTExICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4Njg5
My4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uOGYz
MmFiYzg4MDFkNTE4ODg4MjM1ZWZmYmQwY2VlYTc3N2RlM2M5ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKQEAgLTQzLDUyICs0Myw0NyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3Np
bmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7
CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVM
TChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwor
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsK
ICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09
IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhp
c3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7
CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNv
cHkgPSBidWZmZXItPmNvcHkoKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91
cygpKTsKKyAgICBhdXRvIGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVm
ZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5
LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsK
LSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsK
LSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1j
bXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEp
OwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClb
c3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJV
RSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05NiwxMCAr
OTEsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQog
ICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAi
V29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEw
LCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEx
LCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEy
LCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEwLCBzdHJsZW4odGVzdERh
dGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7
CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxs
b1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRp
b24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVj
dGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTExMSwxMCArMTA2LDEwIEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0
b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIg
PSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBV
ICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlu
dCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpA
QCAtMTUxLDE3ICsxNDYsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAg
Im1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0
aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAg
ICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3Vs
dXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhLCBsZW5ndGgpOwor
ICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2Vn
bWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
bG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBj
bG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xv
bmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxk
ZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQ
RUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5v
dyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7Cit9CisKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNo
YXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjEoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEu
aXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBi
dWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05F
KGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1
ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhl
aXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3Ry
bGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQo
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3NSw2MCAr
MjA2LDcwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywg
J2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9
OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAn
ZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2sn
LCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7
Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGts
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZm
ZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Cisg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8g
Z2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3Vv
dXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2Qi
KTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIo
aC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBp
amtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUo
KSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwg
ImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCks
ICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJn
aGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAg
ICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChW
ZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVm
ZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAg
ICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1h
a2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZl
cjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1
aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwg
eydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgp
KTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
e3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIo
V1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsg
J2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSku
Z2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2Mn
IH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAn
ZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0g
fSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIo
eyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSku
Z2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
dDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAg
U3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVz
dWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQo
KTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50
b0hleFN0cmluZygpLCAiIik7CiB9CiAKQEAgLTI0OSwxNiArMjkwLDE3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRh
a2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7Cisg
ICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVu
KHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxl
bihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAK
ICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0zMTMsMTUgKzM1NSwxNyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogICAgIHVpbnQ4X3QgZGF0YVsy
NTZdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFb
aV0gPSBpOwotCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cihzdGQ6OmluX3BsYWNlLCBkYXRhLCAyNTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
KwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hhciBj
ID0gaTsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgmYywgMSk7CiAgICAgfQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCBwZWVrRGF0YSkKQEAgLTM1OCwxNiArNDAyLDE3IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwg
c2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2Uo
KSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsr
KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJs
ZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVs
dGlTZWdtZW50KQpAQCAtNDA2LDE3ICs0NTEsMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcihzdGQ6OmluX3BsYWNlLCBzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAxKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxl
bihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAg
ICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVm
ZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVD
VF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNo
YW5naW5nSXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2Mw
OWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMy
Nzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxO
U0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsK
ICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXIt
PmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Imhl
bGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxs
b0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhl
bGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9E
YXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAg
ICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVu
Z3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxk
RGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgp
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmls
ZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBh
dGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAg
ICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIg
bGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNE
YXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07
Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwog
CiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRh
IF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCAr
IHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAw
OwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RS
VUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3Rl
ZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEu
Y291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7
CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUo
KSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkg
PiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVy
LmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShb
aW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRh
W3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxE
YXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNv
dW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdl
dFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVp
bGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFV
c2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VR
KDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446968</attachid>
            <date>2021-12-12 21:58:41 -0800</date>
            <delta_ts>2021-12-13 08:25:16 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>bug-233442-20211213165836.patch</filename>
            <type>text/plain</type>
            <size>136903</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZiOTBiMjY1MGEzMmIw
ZmU4NjU4Nzc1ZGIwNjg1NzcyZTkwYWZkNi4uNWNjYTEzMDRkZjc3ZTNlNzljMjlhMjM0ZDAwNGE5
YWY0NTcwMmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5ZGEyYzc4YTI3NWI4MzVhODQ1MWI1
NTFiM2E3YWIwYTM1ZmUwMWUuLjNkZGIxMjlmNDQzNzY4ODI4ZWYzOWY3ODVlZTIwYTIzZmQzNDBj
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJV
UkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxT
dHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwppbmRleCBmMWJlMzUwNmE5YjA1YjM0Y2Y1ZTU4ZjM3MWIzYzYyNjkwNTYy
ZGRlLi5mYTQ0Y2I0ZWZjYTc0ZGQ5YTY1NmZkZjM0MjljMDgwNzY2OTkxYmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDEgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVp
bGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmU1YzQ1NjRkNWM3NmUw
NDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5Zi4uNDJmZThmZGZkNDlkMWU2MGE4ZGNmMTFjMTJmMmZi
MDNlMzQ2ODkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJl
Y29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIp
KTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsg
cmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
ICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRh
a2VBc0NvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zNzUsNyArMzc1LDcg
QEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9u
c2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVj
ZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5n
ZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNl
aXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMs
OSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURh
dGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSks
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkg
fSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAzN2I4Mzg2YTc4YWU4NzVkYzI1
NjNlYmNiMmE3ODg4NWQzMGJhYzQ0Li5mYWRlNjNlNGJlNDlmNGQxOTM5ZDFkYjhhZTEzMjE4MWFk
MGE5YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRo
VHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25z
CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51
bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7
CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAg
LTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0
cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRh
YmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29u
dGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFk
YWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29u
dGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0
YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZUFzQ29udGlndW91cygp
OworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNl
KSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJl
YW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMjQsMjYgKzMyNiwyNCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXpl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZm
ZXIpOworICAgIG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIs
IDApOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgp
OworfQogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7
CitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0K
IAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUxLDcgQEAgUmVmPEJsb2I+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBW
ZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5
cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0
cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBi
bG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAg
cmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRh
KCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQpAQCAtMzYyLDggKzM2MCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2VBc0NvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVU
RjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0K
IApAQCAtMzgzLDEwICszODEsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1
bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hC
b2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsK
LSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0g
ICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZm
ZXIudGFrZUFzQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6Omxv
YWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNi
YTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhi
YjBlMTg3MmFhZjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkg
Y29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAg
ICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQo
KS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKIAogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVm
UHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRy
PEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggNzVkZWFk
M2I5NjBiYTliYzUyYWNjNzIxZThhOTFjYjg0MjBhNjZmYS4uMjdhNmQ3MDMzNGNhMzIwNmE5NGU5
MTk5NDMzNjM3YzRhMzA1MmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQog
CiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1f
ZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9y
ZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0
U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAog
ICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENs
aWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMK
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVCht
X2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAg
ICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3
ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNv
bXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFz
ZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwg
cmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtl
QXNDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJj
ODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVh
ZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IGQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMuLmI5
OTc2YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5OWI0ZTdjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzMsNyArMzMs
NiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25lZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXND
b250ZW50KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAg
ICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVy
LnNpemUoKTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYg
KGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92
ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7Cit9CisKIHNp
emVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OworICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlm
ICghbV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgp
KTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAg
YXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAg
ICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXIt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
aW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uMDRiMzU1MDcz
MzdjOGI4NjFiMzgzZDg4MTNkYzAzZjJhMzg5MTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEwMywxMCArMTA0LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3Rh
bXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAg
ICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9
CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgp
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAg
IHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRl
Y29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwog
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJ
bmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDJmMmU4MmMy
YjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMzZTRhYWJkNmEuLmI4NDkxYWIzMGU0OGM3MzE2Yjg4ODFi
YmQzOWNmMDRhMWM0ZjZiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBA
IC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygp
CiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxw
dHI7CisgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE3LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFC
dWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAg
ICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1
ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEucmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRj
aFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwxOSArMzMzLDI0IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRX
aG9sZVJlc291cmNlKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CisKICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOworICAgICAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc291
cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworfQorCitjb25zdCBTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5n
ZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEo
KQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVl
NDJiOTE3Li4zN2Q2NjdkODM3NmQwMGRhNzg5NDYyZGNjZTFhZGIzMzY4ODlmZDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNl
cygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0y
MjcsNyArMjI4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJl
Y3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4
NzkuLjM0NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDkgKzM3LDExIEBAIHB1
YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAg
ICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9Cisg
ICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRl
bGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5k
RGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vi
c3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVl
YjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA5Njk2ZGUxNzZk
MTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5Li5jNzcwZDc2NDEzNTA2NTJmNWY3NGEwZGNl
NTBjZThkMzNkMWZjNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRh
dGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlm
ICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
IHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRy
eVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAg
Ly8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/
IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBh
IHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1
bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAg
ICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVz
b3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZh
ZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi45OTNjMmI4ZTgzMGRjM2Q3NWM1YWQzMTliYmFmZTlk
ZjQ1YzUwMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2Ug
dXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBD
UkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4g
aXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsK
ICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0Zjgo
KTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAo
YXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVh
cigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZl
OjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywg
IlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJc
biIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2Np
aVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcu
ZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFs
bHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5n
IHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRh
dGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7
CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShk
YXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWRE
YXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWRE
YXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5h
cHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCgh
c3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUg
bm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhl
IGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2
LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEo
UGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29k
ZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3Qg
bGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1M
aW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0
YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVu
Y29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBt
aHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4
aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmlu
ZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERh
dGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0g
ICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCmluZGV4IDczMzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYuLjY2
NWU2OWNhNzcxNGU0NDlhZmU0Y2E2OGE3MjQxNTIzMGQxMDliMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBh
cnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7
CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAh
ZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9
IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0g
TUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWlt
ZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVz
IGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQot
ICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQu
YXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9y
KCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlm
IChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgw
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgp
IGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAo
c3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50
LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVI
ZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJl
YWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBp
biB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYg
dGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4i
LCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDEwICsxOTMsMTAgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlQXNDb250aWd1b3VzKCk7CiAgICAg
c3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNl
IE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0
RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERh
dGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA1LDExICsy
MDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVv
dGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpC
aW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5k
YXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBh
cnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggODRhYTcyZGYxOTYwM2ExOWZhYzhmMmQwZDc0
MjljZmI4ZDU3ZTc3My4uOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFl
NWUuLjY0YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3Qg
QXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25z
dCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAuLjlkMmRjNzM2
NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmQz
N2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMw
MjQxN2U0ODRhMjVjYy4uZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsNyAr
NjQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50
KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAwYjdlZDliZjFjNjA5OWY1NzVhYWIzMGU5NTM0
MWYxNzZmODExODZkLi4xNTRkYjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRh
RnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgw
ZWZjMDU3MGFkYzg5ZS4uN2MwMWM4Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00Njgs
NyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1f
dXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVw
ZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJh
Y2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU1NSw3ICs1NTUsNyBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
dXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9p
ZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRp
bmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAg
IGlmIChtX2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
aW5kZXggNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNS4uZDUxM2UxNmNi
YTVhOTcwN2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7
IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBl
IHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZl
clVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURh
dGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBk
YXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJ
bnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJl
ZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGM4ZjVkMmNiNmZkMmRlZGE5MTk2
ZTZiYzRiZDRlNjUxNWY4ZGU1NmEuLjkwMGJkMzMyOGE2NGJhNzcyZTZjODAxMWFiYWE1ZTYxMWM2
NDY1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRh
dGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAg
IHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3Rl
ZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRp
bmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBA
IHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVt
ZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91
c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bp
bm5pbmcgYSBydW5sb29wLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJh
NjliLi41N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7
CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwg
Q3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXll
ZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0
ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
aW5kZXggZGZiYTc2MWNiMDU4NjRmNTQyNDUyM2JhMzdjZDU1YzYwMDVkZWVjMC4uNTU2OTY0M2Nk
NWU2ODk3YTNjNThmYjQ2MjM0NTQ2ZjA2ZGEwYWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lk
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRy
aWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5k
ZXggY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1Ny4uMjE4ZDc0ZjI3NzZh
OTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAg
dm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJy
b3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAKaW5kZXggZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0
NjE5ZS4uYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0
byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUz
ZDNjN2YxNDdlYWEuLmIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBA
IC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBiOGIzMGI3ZTA4
MmNjYzE4ZWM1M2IxNjBhNzhkNmY5YTI4MDFmMmM4Li4xZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFm
ODg5MWFkZWNiNmFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlw
dEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRj
YTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi43NWJlNGRiNzE1NzllMzFhYWRhOTcw
NjlkOWJmZmMyYzdlNjM0MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKaW5kZXggYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYS4uNTQyNjZk
ZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2Fj
aGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+
ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIo
ZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXgg
ODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uZjQ2MzE3ODMyMWVkYzdj
YTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCmluZGV4IGMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAuLmI5YTY1
ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRj
ZDEwY2NjLi5jMDRkZDRmMTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0
IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRi
OTRhMi4uZmY0MGM0MTZjYzYxNmU5MmIxMzA3YmFiYjdlMzQzYjM3ZTU0NjAwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRl
ckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0
YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8
UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9h
ZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2Vk
UmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3
ZWYyYTU3MzQuLjIzYzk3MjQyYmI5ZmI3NTNmYWI3NDM3YWY3ZTA4YTA5ZGE5NjIxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAg
LTY5LDcgKzY5LDcgQEAgYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRo
IHNpemUgJWxkLiIsIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQo
YnVmZmVyKTsKKyAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZl
cnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZm
ZXIoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3Jp
Z2luYWxEYXRhLmVtcHR5KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVz
cG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0Nv
bnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNv
bnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZl
cnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERh
dGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdl
dCgpKTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjllYjRiZGRm
MDdjZjYxNjZhNTg2MGJhYzA3NDYyNmQyOTVhY2IzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRl
ICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjUsNyArNjQsNyBAQCBj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAogCiBjb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1f
cHJldmlld0RhdGEuZ2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFp
blJlc291cmNlKCkKQEAgLTIyMSw4ICsyMjAsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJl
cGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQo
bV9zdGF0ZSA+PSBTdGF0ZTo6Q29udmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5p
c0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29u
dmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlm
ICghbV9wcmV2aWV3RGF0YS5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdE
YXRhLmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFo
YXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzMyw3IEBAIHZv
aWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVu
dCYgY2xpZW50KQogICAgIH0KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hl
ZENvbnZlcnRpbmcpOwotICAgIEFTU0VSVCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlQoIW1fcHJldmlld0RhdGEuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3
RXJyb3IuaXNOdWxsKCkpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29u
dmVydGluZygqdGhpcyk7CiB9CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVy
dGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAg
ICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlld0Rh
dGEtPmFwcGVuZChkYXRhKTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVuZChkYXRhKTsKIAogICAg
IGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0
MGQxOTBiYTY0Y2Y4Y2UyYi4uZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZkNWU1ZTBkY2I0YzRhOWY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgpAQCAtNDEsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
Q2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApAQCAtMTE4LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCAwNTUyNmJmZGJjODQ5ZDM1ZWVlZTYwNDI1MTVkZjc3NTI0MWViN2U4Li42ZjUz
MGQxMzI5YmJmY2UxNmE5ZGE3YWQwMTU4OWNhNTJlZDMwN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTU0Myw2ICs1NDMsNTkgQEAgc2l6ZV90IERhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2lt
bXV0YWJsZURhdGEpOwogfQogCitTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWls
ZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
Cit9CisKK1NoYXJlZEJ1ZmZlckJ1aWxkZXImIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
PShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlcikgewor
ICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisgICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGluaXRpYWxpemUoYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWls
ZGVyOjppbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIEFTU0VS
VCghbV9idWZmZXIpOworICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2Ug
dG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFi
bGUKKyAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYg
IWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKKyAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXBwZW5kKGJ1ZmZlcik7Cit9CisK
K1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQoreworICAgIHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgOiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
QnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCit7CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0
dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKwogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1f
c2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQo
cG9zaXRpb25XaXRoaW5TZWdtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCA3ZDg3ZDM5N2EzMmRhMTFjYTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2MyLi43NjBlYjc4
YTE4NjZmZWQyM2IzMDQzY2Q1ZTE0YWQ1Y2VkZGU0NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHV0aWxpdHk+
CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNzMsMTkgKzE3NCw2IEBAIHB1YmxpYzoKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0NvbnRpZ3Vv
dXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgotI2lmIFVTRShDRikKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwotI2VuZGlmCi0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKQEAgLTI0MSw2ICsyMjksMjAgQEAgcHJvdGVjdGVkOgogICAgIHNpemVf
dCBtX3NpemUgeyAwIH07CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
eyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Cisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRh
ICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
KwogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0
dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlv
bikgY29uc3Q7CkBAIC0yNjcsMTEgKzI2OSw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0K
IAotICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCi0gICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFz
ZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKLQogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwpA
QCAtMjk4LDYgKzI5NSw1OCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAorY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlcigpID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKFNoYXJlZEJ1ZmZlckJ1
aWxkZXImJikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBpbml0aWFsaXplKFdU
Rk1vdmUoYnVmZmVyKSk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoc3RkOjppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykKKyAg
ICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKSB7IH0KKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShTaGFy
ZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorCisg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXpl
KCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAg
ICB2b2lkIGVtcHR5KCkgeyBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgRmV0
Y2hCb2R5Q29uc3VtZXI7CisgICAgLy8gQ29weSBjb25zdHJ1Y3RvciBzaG91bGQgbWFrZSBhIGNv
cHkgb2YgdGhlIHVuZGVybHlpbmcgU2hhcmVkQnVmZmVyCisgICAgLy8gVGhpcyBpcyBwcmV2ZW50
ZWQgYnkgU2NyaXB0QnVmZmVyIGFuZCBGZXRjaEJvZHlDb25zdW1lciBjbGFzc2VzIChidWcgMjM0
MjE1KQorICAgIC8vIEZvciBub3cgbGV0IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yL29wZXJhdG9y
IHRha2UgYSByZWZlcmVuY2UgdG8gdGhlCisgICAgLy8gU2hhcmVkQnVmZmVyLgorICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYpID0gZGVmYXVsdDsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRl
ciYpID0gZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShSZWY8
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUJ1ZmZlcigp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25l
UmVmKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
aW5kZXggNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1OTI1NC4uNDdjMTBmOTgw
MjM0YzlhYmM2MDg0ZWMyMTA0NTZmNmIxNTQ4MTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQog
eworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhcHBlbmQoZGF0YSk7CiB9CiAKQEAg
LTY4LDcgKzY5LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAg
ICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2Iu
LjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0NlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9
IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRh
LgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7
CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJ
ZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygp
LnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEu
ZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9
CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
a2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0
RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlk
czsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQog
CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAg
ICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAg
a2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAg
cmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRh
dGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5
Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEz
MmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5
NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsK
LSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
IAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAg
IFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
aW5kZXggMzJjNWE2NjhhMTZhZTQ4ZWVlOGM5ZDM4ZGJmZjEzMzA1ZmRhYzBiMS4uYjZlMjM3YjVk
ZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsK
IH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwg
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCkBAIC0yMTMsMTAgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0g
ICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAg
bV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyPiB7CkBAIC0zODcsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFy
ZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0
IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggN2JiMjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMz
ZjM3YzQ1MWYzMmM1MC4uMzMwYmUyMTNjN2ZlZmVkYjJmNzg4YjVjMWVjNDQxYWY3MTk0OWQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01MCwxMyAr
NTAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21l
ZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9F
UlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQu
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXRE
YXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxv
YWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZm
ZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQo
c3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9h
ZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4oKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYg
KGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNv
bnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXls
b2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBl
bmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NiwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAg
IG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+
YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCpp
bml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9
CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC05MCw3
ICs5NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNk
YjllZmViNmM3ZDQ0NDQuLjFjODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0
YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAKIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19k
ZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChq
cGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsg
bWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2Vy
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJl
c3Nfc3RydWN0KiBpbmYKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVu
c2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsK
LSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZm
ZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSAr
IGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5p
c0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4g
YnVmZmVyLnRha2VBc0NvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNh
ZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1
MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRh
TG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3MWFh
ODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3
LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhp
cyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0
IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tp
bmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRl
IGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAg
ICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChk
YXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92
ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwog
fQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5
NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDog
YnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25z
ZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAg
ICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dp
dmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDog
dWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNh
bGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5v
dFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+
IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7
CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8s
IFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJj
ZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVt
b3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQo
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFu
Z2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBj
b25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0
byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNp
emUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBh
IHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2Nl
cHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBs
b2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50
IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1
ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAg
cmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAg
ICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFz
a0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9
IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0
YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBn
aXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJT
aXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0
ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNV
CiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBi
eXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXpl
KCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNv
bWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8
IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJv
bURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEu
c3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAg
ICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAg
YXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
YXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NX
aXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdk
NjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBt
X2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRC
dWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVm
ZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJp
bmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNl
Z21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNl
Z21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBT
Y3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRh
aW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZl
ciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdt
ZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1f
YnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCkt
PnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZm
ZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4
ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3Ro
KCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBT
Y3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBi
MzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUyYjQ0
ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hh
cmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVm
ZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/
IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0g
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+
c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNF
bXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1h
cHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAog
cHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMg
dGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCBl
OGJjMzk3OWY5M2Y0M2RkNGZmZWQzYmUwNWU2MTc2ZGQ3YTM3ZDdlLi4yYTcxMjU0NzE4ZWFlZGY1
MWE0NDdlY2U2MmM0Y2Q3MTZiYjA3NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAi
Rm9udFNlbGVjdGlvbkFsZ29yaXRobS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9u
cy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJXT0ZGRmlsZUZvcm1hdC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgsMTUgKzc3
LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAg
ICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAg
ICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKLSAgICAg
ICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOwotICAgICAgICAgICAgaWYgKGNvbnRpZ3Vv
dXNEYXRhKSB7Ci0gICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOwotICAgICAgICAgICAgfQorICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250
aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGln
dW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEp
OworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
CisgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTIxLDEwICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYg
KG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0g
ICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICBtX2RhdGEtPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUw
NGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBz
dHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToK
ICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVs
bHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4MDVjMjgxYjk0ODA1NDVhZTI2Li45
YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxCbG9i
PiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2Ug
anVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRp
bmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6
OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEo
KTsKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0cmFj
dERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8v
IHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29y
cmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
V1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsyMTcs
NyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFy
cmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpB
cnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0
byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRy
LCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJyYXlC
dWZmZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVv
dXQodW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3Ry
aW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9j
dW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsK
KyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNo
ZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAg
ICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxl
bikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAg
IGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vycm9yKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDA0ODQ2MjZiMmU1ZGZkZGE3Y2Ix
NmM0ZjU1MjJkZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEyZDgw
Mzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNzIEJs
b2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
Y2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3
ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9j
dW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU3
N2Q2NTZlNjdmY2NhNDY0MDUwYmZkMzRkYWRjMmEzNjI1ZTIzMDEuLjBiOWY0OWQzNjRjMjU5NWUy
MjNiMzExNGRlYWZjZWU5MmE0MDBmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwNiwxMCArMzA2LDEw
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5z
aW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1h
eGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHko
KTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczNCwxNiArNzM0LDE2
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAg
ICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFN
SU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuZW1wdHko
KTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVy
U3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9y
IG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwg
aGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRp
cGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVm
ZmVyZWREYXRhLnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlk
YXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY5LDEwICs4
NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICBpZiAobV9idWZmZXJlZERhdGFG
b3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBz
dHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAg
ICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBh
Y2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSAr
IGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11
bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBw
ZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAog
ICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCiAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERh
dGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAg
ICByZXR1cm47CkBAIC05MDksMTEgKzkwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwog
I2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5n
ZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCkuZ2V0
KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1f
YnVmZmVyZWREYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSBy
ZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAg
ICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5k
QnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0
d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1OSwxMiArMTI1OSwxMiBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNTRVJUKG1f
YnVmZmVyZWREYXRhKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBpZiAobV9i
dWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVu
Y29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI4OSwxMiArMTI4OSwxMiBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChp
c0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkp
IHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6
IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24t
PnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVy
bCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUp
KTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtM
b2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5n
IGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29y
a0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERh
dGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBt
dXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVz
dCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xvYWRlciA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291
cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIz
NGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTkyOGI5NWQ4
YzZmNTdiZTI1YzVmMjExODk4OWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTIy
NSw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9y
ZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsg
MCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOwor
ICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAgICAgdW5z
aWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNo
cm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDEsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBS
ZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdl
Q2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVl
c3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4u
ZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAo
bV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAg
ICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
ID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVk
ICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJl
dmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNv
bnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgp
IDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6
ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAg
IH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAo
bV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYm
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsK
ICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0
b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVC
eURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAz
NThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlm
NmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFG
b3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBmOTRkZTkzM2ZkMGNk
NDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4Li5lZDhjYjY1M2VjZmRkMTM0NzNlZTFkMmFmNTBi
YWE3YTZmN2ExMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcApAQCAtMTg3LDEwICsxODcsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAg
IG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmICht
X3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZl
cik7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE1LDE0ICsyMTIsMTEg
QEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBtX2NvbXBsZXRlZCA9
IHRydWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1f
c3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07
CiAKKyAgICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRh
LnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEudGFr
ZUFzQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlv
bkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAg
bV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVy
LT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYw
MjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uZGQ2YjcyNDEwYWRkNGVmNjMxZDI4
MDY5ZTE0YTNmMmEwMGM1Y2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUsNyAr
MTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5j
Q29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNS
ZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOwor
ICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJvb2wg
bV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IGRjNTZkMmM2NmVkODZiOTYyOTUwYTM0ODIwODNlMzQ1OGIzMmI1MmMuLjA4Y2ZiYjU1
MGVkY2I1NmM1OTk3YTA0MzZjMjk2NTNlZjBlODAzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MDMsMTAgKzQwMyw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
QVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2Vp
dmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAg
ICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YS5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQzNyw3ICs0MzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxp
emVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
LnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjYsOCBAQCB2
b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0
YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkK
LSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAg
ICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpAQCAtMTI0Myw5ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRl
bGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAo
bV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJl
YW1EYXRhLnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVy
LmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2Vn
bWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3Rh
dGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVl
YjJiZDViZmNkNjgwMjNmMjMuLjczMjc0MWQ5NWVlNmEyYjY1NmYzZDhjMDhjOGFmZmJhN2UyZmFm
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgpAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0
byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWlu
dGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25h
cHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThm
ZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLjc2ZGM0MzA2ZDVmMjA4NzNiYjEz
OGJmNjZiYjBjYmQzNjg3N2Y2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEg
PSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVy
PihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9y
ZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNw
b25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmlu
aXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIp
KTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Cisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1E
YXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRl
eCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi5jOGMwZDg2MmQ3MTM5
MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9i
TG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZv
cm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0
YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNl
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRl
eCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi43OTU2MjZiMDQ4NjIy
MGY5YTMwOWRiMmZiNzI1ZTA0YjIyMjU0YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgpAQCAtNDUsNyArNDQsNiBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAg
IDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1f
cGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSB9CiB7CiB9CiAKQEAgLTU3LDEwICs1NSwxMCBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9idWZmZXItPmlzRW1wdHko
KSkKKyAgICBpZiAobV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAgICB3ZWJQYWdlLT5kaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZmlsZU5hbWUsIG1fdXRpKTsK
IAotICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVm
ZmVyKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
KCkKQEAgLTY5LDEzICs2NywxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZp
bmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
d2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9i
dWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLnRha2UoKS5n
ZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0g
ICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXIucmVzZXQoKTsKIH0KIAogdm9pZCBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4NDg0ZmJjMjZjMDdj
YjUzZGE4Ny4uMjdhZDFjNTIwMjY2MDFlN2M0OWVkMTg3NzdlZWFmZjYwY2QxOWIxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFt
ZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkw
YTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjZkYzRhNDg1MmExNGQ5MTQ0
M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxU
IFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWlt
ZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAo
U1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CkBAIC01OTUs
MTEgKzU5NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFt
KiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogICAgICAgICAgICAgLy8gRklY
TUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJp
Z2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZl
Y3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQo
ZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSks
ICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAg
ICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsb2Fk
RGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1
cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBl
LCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjBh
MmE3YzhmYTk3NmFmOGRkNmJkNzEyZWFlZDFjMGQwNDA3MDVmYi4uYmE1NGY2MWE0ODgzNDY3OWZh
ZTcwNmIxODZjMzcxNGVmZDM1YjNiZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTExLTI4ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBiYWFlMjdhOTk4
ZmZkNjkxYzEwNmI4ODcxNTU2YmQ0ZjA1MjJjMjAwLi44ZjMyYWJjODgwMWQ1MTg4ODgyMzVlZmZi
ZDBjZWVhNzc3ZGUzYzllIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNzQs
MjQgKzc0LDE2IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVy
LT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAg
ICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQ
RUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRh
KCkpOwotfQotCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOwotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
KyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRf
Tk9UX05VTEwoYnVmZmVyKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEo
J2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk5LDEwICs5MSwxMCBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9
ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0
RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwg
c3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVu
KHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25j
YXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4o
ZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5k
YXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMTQsMTAgKzEwNiwx
MCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNl
Z21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUodmVjdG9yMCkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBi
dWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQw
MDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkg
ewpAQCAtMTU0LDE3ICsxNDYsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAg
ICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2Fn
aXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgog
ICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRp
Y3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRh
KTsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRh
LCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjEoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEu
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8g
c2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAw
eDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOwotICAgIGF1dG8gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsK
LSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VR
KDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25l
LT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVY
UEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVp
bGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1
LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRl
ciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
Mi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sK
KyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwor
ICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAg
IGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVY
UEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBT
aGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8g
QnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0
YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIy
LnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIy
LmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0x
ODIsMTkgKzIxMCwyMSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKICAgICBWZWN0
b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OwogCi0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
czEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShzMykpOwotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIp
KTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBi
dWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRh
KDApOwogICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGgg
PSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBhdXRv
IGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKICAgICBhdXRvIGdoMiA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVm
ZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDEx
KTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7CiAg
ICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CkBAIC0yMDMsNiAr
MjMzLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIGNoZWNr
QnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNk
ZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CiAgICAgY2hlY2tCdWZm
ZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2hpamts
LmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOwogICAgIEVYUEVDVF9FUShnaDEuc2l6
ZSgpLCBnaDIuc2l6ZSgpKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgp
LCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXpl
KCksICJsIik7CkBAIC0yMTEsMTYgKzI0MiwxOCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Z2V0U29tZURhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAg
IGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRz
KSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRl
bnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVu
dCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9
OwogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9
IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAg
IGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsK
LSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycs
ICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxk
ZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdj
JywgJ2QnIH0gfSkuZ2V0KCkpOworCiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2In
IH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7
ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5n
ZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCks
IG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwpAQCAtMjMwLDExICsyNjMsMTMg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwg
MHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZm
ZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0
cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNs
ZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIApAQCAtMjU1
LDE2ICsyOTAsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2lt
cGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQot
ICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
LmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1
KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShz
aGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Cisg
ICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNo
ZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTMxOSwxNSAr
MzU1LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBh
cmF0b3IpCiAgICAgdWludDhfdCBkYXRhWzI1Nl07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCAyNTY7ICsraSkKICAgICAgICAgZGF0YVtpXSA9IGk7Ci0KICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVkQnVm
ZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIGRhdGEsIDI1Nik7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAy
NTY7ICsraSkgewogICAgICAgICBjaGFyIGMgPSBpOwotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmYywgMSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZjLCAxKTsKICAgICB9Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQpAQCAtMzY0LDE2ICs0
MDIsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcihzdGQ6OmluX3BsYWNlLCBzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VR
KHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCkBAIC00MTIsMTcgKzQ1MSwxOSBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0
aVNlZ21lbnQpCiAgICAgfTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHNpbXBsZVRleHQs
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIEVYUEVDVF9FUShz
aGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Cisg
ICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNo
ZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7
IGkgKz0gNSkKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUp
OwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgNSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2lt
cGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmlu
ZGV4IDg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcuLjhiZmI4NWVjNjFk
MzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDE2
ICs0OCwxNyBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0Rh
dGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0
eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVy
LT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0
IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5k
KChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYp
d29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwg
d29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKQEAgLTY5LDMyICs3MCwzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9y
RGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7
CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Indv
cmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJl
Zil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxv
RGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVs
bG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBz
ZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0
KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVh
bFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9F
UShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdl
ciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxl
IChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAo
YnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0Rh
dGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24g
Kz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5
dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRv
IGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9E
YXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAg
ICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447004</attachid>
            <date>2021-12-13 08:25:24 -0800</date>
            <delta_ts>2021-12-13 14:36:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233442-20211214032523.patch</filename>
            <type>text/plain</type>
            <size>136080</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJhZGRhYThlMmQ0NzE5
ZDYxMGNjODRlYzk1YWJjNWNjZTZhMjAwZS4uNDZkMDk5NDc1YTMyYzhiNjRhYjg1Yjk3NDgyZTE4
OWRlMTZlMmQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIs
IGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAg
IGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUg
b25jZSBjcmVhdGVkLgorCisgICAgICAgIEEgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxh
Y2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZmZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBk
aWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFuZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93
aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAg
ICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9wcG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNy
ZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXpl
IG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFyZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0
IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9uIGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1w
dHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBp
ZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBpcyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1wdHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRl
ZCBpZgorICAgICAgICBub25lIGV4aXN0cy4KKyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9u
cyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFyZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisg
ICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUgbG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQg
YWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFyZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAg
ICAgaXRzIHNpemUuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5j
dGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgor
CisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2FzIHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVm
ZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJsZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBl
bnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJl
ZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRv
IGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwg
aW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJl
dHVybiBhCisgICAgICAgIHNoYWxsb3cgY29weSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAg
b3BlcmF0aW9uLgorCisgICAgICAgIEZseS1CeSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlh
IGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRv
IGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4p
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3Vy
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRh
dGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpo
YXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVz
b3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNl
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0
YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAyMS0xMi0x
MyAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IEZpeCBub24tdW5pZmllZCBidWlsZHMgYWZ0ZXIgcjI4Njg1MwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMTE3NzUw
NzFlMjQ4OTQ1ODZkNzJjNDM0OGFlYWI4YTcxNTQ3ZTc0Li5mMWU1ZDg3MzVjYjAzMTI5NmZjYWE2
ODI1YmUxOGZkMDAzNzA5NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTI4
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
U2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
cmVkZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJD
bGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0xMi0xMyAgSm9vbmdodW4gUGFyayAg
PGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IGJ1aWxk
IGVycm9yIHNpbmNlIHIyODY5NDYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNWM0
ZTIwYjQxMzY2ZGM0YzJiMzI1ZjI2YzQ5NDNlODhjZDQ2NDk0YS4uMDM5ZjQ4OWZhZjAyMTM4OTIz
MWU2OTViMjAyNzAzMjU0YTVkYmEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFy
Oi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAg
ICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKwogMjAy
MS0xMi0xMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIERp
c3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25l
IGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCmluZGV4IDZlNWM0NTY0ZDVjNzZlMDQwNDIzOWM1MTQ5MWY5MWE1OTRhMDFj
OWYuLjQyZmU4ZmRmZDQ5ZDFlNjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9p
ZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCBy
ZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3Jk
KHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3Bv
bnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFz
a0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5k
bGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVk
QnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lk
IERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAg
ICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFk
ZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1
b3VzKCkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5
KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtlQXNDb250aWd1b3VzKCkpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMo
KS5mZXRjaCk7CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChS
ZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9t
aXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAg
ICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNl
UmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25z
ZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtl
UGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0g
V1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdB
Y3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewog
ICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNl
LCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVu
ayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChj
aHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4geyBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOworICAgICAgICAgICAgICAgIHRo
aXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRh
dGEudGFrZUFzQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAKaW5kZXggMzdiODM4NmE3OGFlODc1ZGMyNTYzZWJjYjJhNzg4ODVkMzBiYWM0NC4u
ZmFkZTYzZTRiZTQ5ZjRkMTkzOWQxZGI4YWUxMzIxODFhZDBhOWEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3
ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJl
c2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAg
ICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJU
KCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZl
clNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRC
dWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBk
YXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21p
c2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9
KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMzI0LDI2ICszMjYsMjQgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVl
KEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1
ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXpl
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlciA9IFdU
Rk1vdmUoZGF0YSk7CiB9CiAKLVJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1
cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKK30KIAotICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgcmV0dXJu
IG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MzUxLDkgKzM1MSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdU
Rk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0K
IAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjAs
OCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAg
YXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzgxLDggQEAg
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7
CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0g
ICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
KTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIp
CisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCkp
OwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2Vw
dGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2
NDJkNGMuLjZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUw
LDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZm
ZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
IHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNl
dERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0
YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZl
cigpOwpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAg
U3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQ
cm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291
cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkx
Y2I4NDIwYTY2ZmEuLjI3YTZkNzAzMzRjYTMyMDZhOTRlOTE5OTQzMzYzN2M0YTMwNTJlN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJs
OwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3Vy
Y2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDgg
KzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsx
OTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3Vy
Y2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5k
bGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBt
X21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZUFzQ29udGlndW91cygpLmdldCgpLCBy
ZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVz
b3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWEx
Y2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVl
MDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8
TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21p
c2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkNzBiYTllZmYx
YzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVmNGYxODRjLi5iOTk3NmFmMmU0ZGQ0MDlhODljM2E0MjQ0
MTM5YTNlOTliNGU3YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck5ldHdvcmtBZ2VudC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAK
QEAgLTYzLDggKzYyLDggQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBpZiAo
aGFzRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICAgICAgcmVz
dWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxw
dHI7CisgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fZGF0
YUJ1ZmZlci5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgx
LDM2ICs4MCwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICEhbV9kYXRhQnVmZmVyOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0
YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVm
ZmVyLnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAg
ICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7
Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKKyAgICBtX2RhdGFCdWZmZXIuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB1bnNp
Z25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250
ZW50KCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAKLSAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gYnVmZmVyID0gbV9kYXRhQnVm
ZmVyLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+
c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQg
PSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAg
ICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRy
dWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250
ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwog
ICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250
ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRk
ZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcuLjA0YjM1NTA3MzM3YzhiODYxYjM4M2Q4ODEzZGMwM2Yy
YTM4OTE3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklu
c3BlY3RvclBhZ2VBZ2VudC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dh
bGxUaW1lLmg+CkBAIC0xMDMsMTAgKzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxUaW1l
IHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsg
fQogICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9y
ZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1ZmZl
cmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNv
bnN0OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CkBA
IC0xMTksNyArMTIwLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdO
YW1lOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhQnVmZmVyOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YUJ1ZmZlcjsKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2FjaGVkUmVz
b3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAyZjJlODJjMmIxN2YzYzk0ZGViZjBhNmE0MThmNDQz
M2U0YWFiZDZhLi5iODQ5MWFiMzBlNDhjNzMxNmI4ODgxYmJkMzljZjA0YTFjNGY2YjA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUwLDcgKzUwLDYgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtMTE4LDcgKzExNyw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0g
eyB9OwogCi0gICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRh
LnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0K
IApAQCAtMzE4LDcgKzMxNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJp
bmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBS
ZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xp
Y3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jl
c291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CiB9
CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgp
CkBAIC0zMzQsMTkgKzMzMywyNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmICht
X29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEg
fHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKLSAgICAgICAg
bV9yZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIAorICAgIGlmIChk
YXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jl
c291cmNlRGF0YS5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpi
dWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30K
KworY29uc3QgU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCkuZ2V0KCk7CiB9CiAKIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKICAgICBpZiAobV9yZXNvdXJj
ZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgICAgICBtX3Jlc291
cmNlRGF0YS5lbXB0eSgpOwogfQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNl
TG9hZGVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXgg
NGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uMzdkNjY3ZDgzNzZkMDBk
YTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlclR5cGVz
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAg
IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURh
dGEuZ2V0KCk7IH0KKyAgICBjb25zdCBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0
OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIyOCw3IEBAIHByaXZhdGU6
CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBt
X29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcmVzb3Vy
Y2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2
NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li4zNDRjYTk4Mjg1NzUyZThmMTAx
NzBmMjMyMDQ5ZTBjYTJhZDRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVm
ZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1
ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkg
fSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7
IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0
YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYg
bG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0
YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1
cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUw
ODQ3YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0
MDdlOGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
OjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNj
YWMwZmU3OS4uYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMzZDFmYzVlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQo
IklOU0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8p
Il9zKTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKIAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNF
bXB0eSgpKQpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAg
ICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkg
d3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNl
IHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91
bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7
CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAKaW5kZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3
Yy4uOTkzYzJiOGU4MzBkYzNkNzVjNWFkMzE5YmJhZmU5ZGY0NWM1MDEwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBA
IC0xNjIsOCArMTYyLDggQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVh
ZCBvZiBhc2NpaSgpIGFzIGFzY2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwg
b25seSBoYXZlIHB1dCBBU0NJSSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5n
QnVpbGRlci50b1N0cmluZygpLmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmlu
ZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3Ry
aW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbWh0bWxEYXRhOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBh
c2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3Vy
Y2VzKSB7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFn
ZSogcGFnZSkKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5z
ZmVyLUVuY29kaW5nOiAiLCBjb250ZW50RW5jb2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjog
IiwgcmVzb3VyY2UudXJsLnN0cmluZygpLCAiXHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0
cmluZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0
YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUg
Y29udGVudCBhcyBhIHN0cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAg
ICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChj
b250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5j
b2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRh
LnNpemUoKSk7Ci0gICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAg
ICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRh
LnNpemUoKSk7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2Rpbmcs
IGJhc2U2NCkpOwogICAgICAgICAgICAgLy8gV2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExG
cyA9IHRydWUgYmVsb3cgYXMgaXQgd291bGQgY3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhU
TUwgcmVxdWlyZXMgQ1JMRnMuCkBAIC0xOTYsMTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAg
ICBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGggPSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAg
ICAgICBkbyB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihl
bmNvZGVkRGF0YUxlbmd0aCAtIGluZGV4LCBtYXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVM
ZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7Cisg
ICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRl
eCwgbGluZUxlbmd0aCk7CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIs
IDIpOwogICAgICAgICAgICAgICAgIGluZGV4ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAg
ICAgICAgfSB3aGlsZSAoaW5kZXggPCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICBhc2NpaVN0cmluZyA9IG1ha2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxy
XG4iKS51dGY4KCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBh
c2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5k
YXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7Cisg
ICAgcmV0dXJuIG1odG1sRGF0YS50YWtlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA3MzM2YjM3ZGUz
YmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmLi42NjVlNjljYTc3MTRlNDQ5YWZlNGNhNjhh
NzI0MTUyMzBkMTA5YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09
IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBjb250ZW50ID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGNvbnRlbnQ7
CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1w
dHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhl
YWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpA
QCAtMTU0LDcgKzE1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBM
T0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVudC0+YXBwZW5k
KFdURk1vdmUocGFydCkpOworICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsK
ICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAgICAgICBWZWN0
b3I8dWludDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4
dENoYXJzLCAyKSAhPSAyKSB7CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgLy8gTm90ZSB0aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUuYXNjaWkoKSBh
cyBhc2NpaSB0dXJucyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBsaW5lLWZlZWQu
Li4pIGludG8gJz8nLgotICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUudXRmOCgpLmRh
dGEoKSwgbGluZS5sZW5ndGgoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChsaW5lLnV0
ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXIu
Y29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGUp
IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0aGUgXHJcbiwg
YnV0IHdlIG5lZWQgdGhlbSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFzIHRoZSBRdW90
ZWRQcmludGFibGUgZGVjb2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGluZXMuCi0gICAg
ICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAg
Y29udGVudC5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KQEAgLTE5MywxMCArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9
IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9
IGNvbnRlbnQudGFrZUFzQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250
ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsK
LSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0g
YmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50
LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNSwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1
b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250
aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0g
cXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3Vv
dXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6
OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFw
cGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAg
ICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVu
dC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CmluZGV4IDg0YWE3MmRmMTk2MDNhMTlmYWM4ZjJkMGQ3NDI5Y2ZiOGQ1N2U3NzMuLjk3Y2Q0ZGZm
ZDE4OGMyODExMWZkNjlhYzBkYmEzMzhhNjczMzM1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2Yy
YTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi42NGIxNGQ1ZjY1ZmZmYzg1NTRk
ZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHBy
b2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9j
dW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVz
b3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9
CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJp
bmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA2NmQzZWFjNWI1ZGNjNjAx
ZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwLi45ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3
YTI0NDMwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVT
aGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAg
ICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENhY2hl
KTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdl
MzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5kMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5
ZTU2MTYwY2NhZTQ2OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CmluZGV4IGY2NDMzM2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MuLmY5YWQ3NzEz
YzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRGb250
OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgK
aW5kZXggMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZC4uMTU0ZGI4Y2Jh
YmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CmluZGV4IDcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUuLjdjMDFjOGNj
MjMxMTc4NmM2MjRmNDg1ZWRlZjY5MzVmYjdlZmE1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lk
IENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0g
MDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVm
ZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsNyArNTIzLDcg
QEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAog
ICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFU
aW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFs
XTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRh
dGEpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9
IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDVjMzZmOTA4Mzk2MzJmNzk5
NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUuLmQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2
ZmE0MzhhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBA
IC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9
CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApA
QCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25z
dDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVl
ZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEp
IGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFT
dGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsK
QEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAppbmRleCBjOGY1ZDJjYjZmZDJkZWRhOTE5NmU2YmM0YmQ0ZTY1MTVmOGRlNTZhLi45
MDBiZDMzMjhhNjRiYTc3MmU2YzgwMTFhYmFhNWU2MTFjNjQ2NTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURh
dGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tpcCBhbnkg
dXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xsIGhhdmUg
dGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2luSW5jcmVt
ZW50YWxEYXRhTm90aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAg
ICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigp
IGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRl
MGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uNTdmZDdhYjVjMTAwZGMwOWFk
ZjI2ZWM0Y2JhYzQ1MTRmMzZmNzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRU
UFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9y
ZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5p
c2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGRmYmE3NjFjYjA1ODY0ZjU0
MjQ1MjNiYTM3Y2Q1NWM2MDA1ZGVlYzAuLjU1Njk2NDNjZDVlNjg5N2EzYzU4ZmI0NjIzNDU0NmYw
NmRhMGFhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90
aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5u
b3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0Niw3
ICszNDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9h
ZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGNjZTU4MDFhZWM3ZmM3NzhlOWZh
YTg1YzExZDRjMTcyOTZmZmU3NTcuLjIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3
OTBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNv
ZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJv
cihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGRl
NTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUuLmIwZjc2YTUwOTYxMGY2NzEw
NTdiZWViZjBhMGI5YTYwMWNhODIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBTdHJpbmcgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5l
bmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYg
KGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUg
YmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApp
bmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi5iMDEyYmE5OGVl
ZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVj
b2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggYjhiMzBiN2UwODJjY2MxOGVjNTNiMTYwYTc4ZDZmOWEy
ODAxZjJjOC4uMWRmNWM0YjE3ZWVlYmNiNGU0YmJmZTRhZjg4OTFhZGVjYjZhYjk2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDcgKzk2
LDcgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9z
Y3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0
YmNlZGU3ZTIzZC4uNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYzNDMyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291
cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IGFiMTcxMTQ0NDc3ZDY0
NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEuLjU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJl
OTEzYWRlODFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCkBAIC00MCw3ICs0MCw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4
dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7
CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIq
IGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKQEAg
LTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2Fj
aGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENh
Y2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2Vi
MjJjNzcxMzhiOTE1MDdhZGQuLmY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
QEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlS
ZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIq
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBjMTcwZTYwNDNmNDlk
Y2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwLi5iOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRl
N2NjOWVhMzk4NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBDYWNoZWRYU0xT
dHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2Rp
bmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAo
ZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXgg
Njg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0Y2QxMGNjYy4uYzA0ZGQ0ZjE2Y2YzYjdl
Y2EyNTg5MTBiOWVmYWY0MTI1NGUyZDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcg
ZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0
ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgp
OyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBt
X3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1
MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmZmNDBjNDE2Y2M2MTZlOTJi
MTMwN2JhYmI3ZTM0M2IzN2U1NDYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQ
cmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CkBAIC0zNyw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2Fk
ZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcw
LDcgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2Nv
bnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291
cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRl
eCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li4yM2M5NzI0MmJiOWZi
NzUzZmFiNzQzN2FmN2UwOGEwOWRhOTYyMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgTGVn
YWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQ
cmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6
ZSgpKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+YXBwZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5h
bERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJj
ZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2
aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBt
X29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAg
IHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdU
Rk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZp
ZXdSZXNwb25zZSgpIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRl
ciYgYwogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJl
dmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZp
ZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcwNzFj
NWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li45ZWI0YmRkZjA3Y2Y2MTY2YTU4NjBiYWMwNzQ2MjZk
Mjk1YWNiMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAKQEAgLTY1LDcgKzY0LDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJl
dmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKIAogY29uc3QgU2hhcmVkQnVmZmVy
JiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLmdldCgpOwogfQog
CiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC0yMjEsOCAr
MjIwLDggQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29u
dmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgQVNTRVJUKG1fc3RhdGUgPj0gU3RhdGU6OkNvbnZl
cnRpbmcpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0
aGlzKTsKIAotICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChj
bGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0
aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICBpZiAoIW1fcHJldmlld0RhdGEuaXNFbXB0
eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQorICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRl
ckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS5nZXQoKSk7CiAKICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIzNCw3ICsyMzMsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJl
cGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICB9CiAKICAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWRDb252ZXJ0aW5nKTsKLSAgICBBU1NF
UlQoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRh
LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcHJldmlld0Vycm9yLmlzTnVsbCgpKTsKICAgICBj
bGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMpOwogfQpAQCAt
MjU2LDcgKzI1NSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByZXZpZXdEYXRhLT5hcHBlbmQoZGF0YSk7CisgICAg
bV9wcmV2aWV3RGF0YS5hcHBlbmQoZGF0YSk7CiAKICAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0
byYgY2xpZW50KSB7CiAgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURh
dGEoKnRoaXMsIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIuLmYxNGRl
MWQ5MTRhNGNiY2ExNWE3NWQ2ZDVlNWUwZGNiNGM0YTlmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQxLDggKzQy
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVZpZXc7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3
Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgICAg
ICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
cHJldmlld0RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3ByZXZpZXdEYXRhOwogICAg
IFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29y
aWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMDU1MjZiZmRiYzg0
OWQzNWVlZWU2MDQyNTE1ZGY3NzUyNDFlYjdlOC4uNmY1MzBkMTMyOWJiZmNlMTZhOWRhN2FkMDE1
ODljYTUyZWQzMDdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC01NDMsNiArNTQzLDU5IEBAIHNpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAorU2hh
cmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlu
aXRpYWxpemUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworfQorCitTaGFyZWRCdWZmZXJCdWls
ZGVyJiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit7CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBudWxs
cHRyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKKyAgICBpbml0aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aW5pdGlhbGl6ZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICAvLyBX
ZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMg
YWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgLy8gb25jZSBjcmVhdGVk
LgorICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygp
KSB7CisgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGFwcGVuZChidWZmZXIpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXJCdWlsZGVyOjp0YWtlKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKworUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0NvbnRpZ3Vv
dXMoKQoreworICAgIHJldHVybiB0YWtlKCktPm1ha2VDb250aWd1b3VzKCk7Cit9CisKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQor
eworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKG51bGxwdHIsIDApOworICAgIHJldHVybiB0YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKK3sKKyAg
ICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Cit9CisKIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50
KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggN2Q4N2QzOTdhMzJkYTEx
Y2EwNjIyYzA0NTk3MDZlOTk4OTdiODNjMi4uNzYwZWI3OGExODY2ZmVkMjNiMzA0M2NkNWUxNGFk
NWNlZGRlNDcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
MTczLDE5ICsxNzQsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIXNpemUoKTsgfQogICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9j
b250aWd1b3VzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVu
Z3RoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
KTsKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChO
U0RhdGEgKik7Ci0jZW5kaWYKLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoQ0ZEYXRhUmVmKTsKLSNlbmRpZgotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
cigpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgbGVuZ3RoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CkBAIC0yNDEs
NiArMjI5LDIwIEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCiBwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShD
RikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKICAgICAvLyBDb21iaW5lcyBhbGwg
dGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIg
Y2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWlu
dDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRT
ZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwpAQCAtMjY3LDExICsy
NjksNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB5
b3UgY2FuJ3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5
LgotICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0
LgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFyZ3Mm
Ji4uLikgPSBkZWxldGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKQEAgLTI5OCw2ICsyOTUsNTggQEAgcHJp
dmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKIH07
CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcihTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikpOyB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKHN0
ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oU2hhcmVkQnVmZmVyQnVpbGRlciYmKSA9IGRl
ZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0b3I9
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1
cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFt
X2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCBy
ZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpIHsgbV9idWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZl
cj4gdGFrZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB0YWtlQXNDb250aWd1b3VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBT
Y3JpcHRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOworICAgIC8v
IENvcHkgY29uc3RydWN0b3Igc2hvdWxkIG1ha2UgYSBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIFNo
YXJlZEJ1ZmZlcgorICAgIC8vIFRoaXMgaXMgcHJldmVudGVkIGJ5IFNjcmlwdEJ1ZmZlciBhbmQg
RmV0Y2hCb2R5Q29uc3VtZXIgY2xhc3NlcyAoYnVnIDIzNDIxNSkKKyAgICAvLyBGb3Igbm93IGxl
dCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci9vcGVyYXRvciB0YWtlIGEgcmVmZXJlbmNlIHRvIHRo
ZQorICAgIC8vIFNoYXJlZEJ1ZmZlci4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKGNvbnN0IFNo
YXJlZEJ1ZmZlckJ1aWxkZXImKSA9IGRlZmF1bHQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciYg
b3BlcmF0b3I9KGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImKSA9IGRlZmF1bHQ7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVy
OjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwCmluZGV4IDM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBm
N2IuLjJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBpc0Nl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogCiBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xv
Y2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3Vu
dCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXRE
YXRhLgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJ
ZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBjb250aWd1b3Vz
SW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8qIGRhdGEgPSBj
b250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShr
ZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmlu
ZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRh
Lmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRh
dGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7
CiB9CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBp
bml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtl
eUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFy
cmF5OjpjcmVhdGUoKTsKQEAgLTI1MSw4ICsyNTEsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YQogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsK
ICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0g
ICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNv
bkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0
b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3
MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3ZGY4OWY1ODYxYWNk
OWQ5NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQg
bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQo
KTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50Owog
ICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KaW5kZXggMzJjNWE2NjhhMTZhZTQ4ZWVlOGM5ZDM4ZGJmZjEzMzA1ZmRhYzBiMS4uYjZlMjM3
YjVkZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTYzLDcgKzE2Myw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50Owog
ICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZl
cjsKIH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVu
dCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpCkBAIC0yMTMsMTAgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7
Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODcsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1
ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggN2JiMjc0M2E4MjhhMWFmMDRhNzllZGQ3
OTMzZjM3YzQ1MWYzMmM1MC4uMzMwYmUyMTNjN2ZlZmVkYjJmNzg4YjVjMWVjNDQxYWY3MTk0OWQ0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01MCwx
MyArNTAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0
X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZF
TF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVt
SWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZElu
aXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBh
eWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRC
dWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0
ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVt
SWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5
bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAg
aWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFr
ZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQ
YXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBh
cHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAg
ICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9h
ZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5k
KCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsg
fQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlk
OyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC05
MCw3ICs5NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3
MDNkYjllZmViNmM3ZDQ0NDQuLjFjODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBA
IHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAK
IHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBl
Z19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9y
IChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtl
cjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFy
a2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29t
cHJlc3Nfc3RydWN0KiBpbmYKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAg
IHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6
ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBi
dWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0
YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1
cm4gYnVmZmVyLnRha2VBc0NvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVl
NzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4YzQxMzBiOWJlMDM1MjM3YmYy
ZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBS
ZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9k
YXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllf
TE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAg
ICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmM3
MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCAr
MTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQg
dGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNv
IGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxv
Y2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVn
YXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTUzNywxOCArNTM1LDEzIEBA
IHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsK
LSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVu
ZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQog
ewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RG
TW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgp
OwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2Rh
ZjY5NmYwMjQwNi4uZTJjMzVlZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAg
IDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNw
b25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAg
ICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVU
b0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRl
IDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lv
bkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6
Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWlu
UHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0
YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9u
c2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsg
Tm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlz
aGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNv
dXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2
ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0
UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
LCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
YXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXIt
PnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFr
ZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBh
Y2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRo
ZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250
ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRh
LmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsK
ICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICgh
dGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFz
ayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7
ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0
byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZm
ZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3Jl
TlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRv
JiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAg
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5z
aXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdl
dFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgp
IHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRh
dGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlz
aGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAg
ICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAg
ICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAg
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFz
a3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIw
NzdkNjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3Jp
cHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0
QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9T
dHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFj
aFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFj
aFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3Ry
aW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsK
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmlu
ZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1
ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5z
ZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYm
IG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2lu
KCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRC
dWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVy
KQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1
dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVu
Z3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25z
dCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRl
eCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li4zN2YxYTQ4N2Y4YzUy
YjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29s
YXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8
U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0
QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZl
ciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQog
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZl
ci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
aXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmls
ZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsK
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFp
bnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9i
dWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRl
eCBlOGJjMzk3OWY5M2Y0M2RkNGZmZWQzYmUwNWU2MTc2ZGQ3YTM3ZDdlLi5jZjZkNzY1YmM4OTRj
ZjRiZGY3YmQ1YTZlNWFmMTI3OGIxNmZkZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVk
ZSAiRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlICJXT0ZGRmlsZUZvcm1hdC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgsMTUg
Kzc3LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNj
b3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1
cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewot
ICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAg
ICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKLSAg
ICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOwotICAgICAgICAgICAgaWYgKGNvbnRp
Z3VvdXNEYXRhKSB7Ci0gICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQg
PSB0cnVlOwotICAgICAgICAgICAgfQorICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAgICAgICAgICBj
b250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUo
Y29udGlndW91c0RhdGEpOworICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpCisgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTIxLDEwICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAg
aWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEp
Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICBtX2RhdGEt
PmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVj
NmUwNGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2YTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwog
CiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0
ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsg
bnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRl
eHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAppbmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4MDVjMjgxYjk0ODA1NDVhZTI2
Li45YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxC
bG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTog
V2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNl
bmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBz
dGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERh
dGEoKTsKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0
cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7
IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGlu
Y29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsy
MTcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBl
OjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAg
YXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxs
cHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJy
YXlCdWZmZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRp
bWVvdXQodW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0g
U3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNl
RG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0
cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VD
YWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikK
ICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEs
IGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAg
ICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAgICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vycm9y
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDA0ODQ2MjZiMmU1ZGZkZGE3
Y2IxNmM0ZjU1MjJkZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEy
ZDgwMzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNz
IEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVy
OwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIz
Nyw3ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNl
RG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwog
CiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDZmODAzODhjOTMzZDZlZDI5OWQzNjM1YzNmYWUwNjI5MTNjNjlkMzEuLjNlOWNiN2RmNTUxZDc2
ZmQ1ZjIwOTkwNmE2ZTFjNzhmMmQ1NmI2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwNiwxMCArMzA2
LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0
ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJz
Lm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEuZW1w
dHkoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczOSwxNiArNzM5
LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAg
ICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVk
aWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuZW1w
dHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9h
ZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8g
Rm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0
cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNp
YWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011
bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhLnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgp
KQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZh
bGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODc0LDEw
ICs4NzQsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBv
ZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4K
ICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5j
YXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUo
KSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTg4NSw3ICs4ODUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cAogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwog
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBl
bmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2Rl
ZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAg
ICAgICByZXR1cm47CkBAIC05MTQsMTEgKzkxNCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
bwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0
YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCku
Z2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1
ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
IW1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3Mg
YSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAg
ICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBz
ZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQo
bmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI2NCwxMiArMTI2NCwxMiBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNTRVJU
KG1fYnVmZmVyZWREYXRhKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBpZiAo
bV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFF
bmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI5NCwxMiArMTI5NCwxMiBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlm
IChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQo
KSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Np
b24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdv
cmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9y
aW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0
d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5
KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVx
dWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xvYWRl
ciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJl
c291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXgg
ZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uYzQyMzQ2NTFiYTkyOGI5
NWQ4YzZmNTdiZTI1YzVmMjExODk4OWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAg
LTIyNSw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
bV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3Ro
IHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRh
OworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGE7CiAgICAg
dW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5
bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDEs
NyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAg
ICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4
QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJl
cXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5
My4uZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVk
UmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBp
ZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwog
CiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2Vl
ZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8g
UHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAg
IGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsK
LSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6
ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVy
U2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUg
PSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwog
ICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBp
ZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5
ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9j
YWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9
KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0
IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFi
bGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9u
c2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21w
bGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0
NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdh
MDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3
ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERh
dGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9j
YWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBmOTRkZTkzM2Zk
MGNkNDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4Li5lZDhjYjY1M2VjZmRkMTM0NzNlZTFkMmFm
NTBiYWE3YTZmN2ExMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcApAQCAtMTg3LDEwICsxODcsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQog
ICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlm
IChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE1LDE0ICsyMTIs
MTEgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBtX2NvbXBsZXRl
ZCA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7
IG1fc3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgp
IH07CiAKKyAgICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNE
YXRhLnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEu
dGFrZUFzQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxl
dGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAg
ICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5k
bGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4
NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uZGQ2YjcyNDEwYWRkNGVmNjMx
ZDI4MDY5ZTE0YTNmMmEwMGM1Y2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTUs
NyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5
bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRh
OworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJv
b2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IGRjNTZkMmM2NmVkODZiOTYyOTUwYTM0ODIwODNlMzQ1OGIzMmI1MmMuLjA4Y2Zi
YjU1MGVkY2I1NmM1OTk3YTA0MzZjMjk2NTNlZjBlODAzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MDMsMTAgKzQwMyw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1Jl
Y2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAg
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAg
IG1fbWFudWFsU3RyZWFtRGF0YS5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQzNyw3ICs0MzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRp
YWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0
ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhLnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOSw4ICs5MjYsOCBA
QCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFt
RGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hl
ZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmICht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAg
ICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtMTI0Myw5ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3Ojpy
ZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBp
ZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVu
dCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxT
dHJlYW1EYXRhLnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVm
ZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQu
c2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFu
dWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFt
U3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQy
MjVlYjJiZDViZmNkNjgwMjNmMjMuLjczMjc0MWQ5NWVlNmEyYjY1NmYzZDhjMDhjOGFmZmJhN2Uy
ZmFmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgpAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNl
ZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBw
YWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5n
U25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGM3
ZGU0MTY2OTE3M2M0NTg3ZTM5MWIyMjY3NWRiY2NhYmZlYWEyOGQuLjQyZWQ5N2RlNWRjMGZjMDJi
OTMzZjRjNTk1ZjJhOWRiN2UyZGRlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwCkBAIC03OCwxMCArNzgsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURh
dGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWls
ZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
bV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yMjgsOCArMjI3LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9y
ZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlk
RmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZm
ZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7
CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9k
aWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZv
cm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApp
bmRleCAwMWY2MTBiZDQzM2EyZTlhZmM5YTFmZGQ1NGIwODQzMGI5ODM3ZDcxLi4yYzczNzFmMWRk
ZjQwZTQ2YWUzNDEzOWYzZTQwYjljMTVhMzRmYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExv
YWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC04Myw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxC
bG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6
OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNl
RGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzRG93bmxvYWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIw
MzlkZmE1OWY1ZmQxM2M3NTRlMTAuLjc5NTYyNmIwNDg2MjIwZjlhMzA5ZGIyZmI3MjVlMDRiMjIy
NTRhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NSw3ICs0
NCw2IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5h
bWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAg
ICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KIHsKIH0KIApAQCAtNTcsMTAg
KzU1LDEwIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2J1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHdlYlBhZ2UtPmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSwgbV91dGkpOwogCi0gICAgbV9idWZmZXItPmFwcGVu
ZChidWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogfQogCiB2b2lkIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQpAQCAtNjksMTMgKzY3LDEyIEBA
IHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9i
dWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIudGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsK
KyAgICBtX2J1ZmZlci5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6
OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRl
eCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li4yN2FkMWM1MjAyNjYw
MWU3YzQ5ZWQxODc3N2VlYWZmNjBjZDE5YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTUsNyBAQCBw
cml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBt
X3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVj
MWI1YzYyMGU2ODIzMTliNS4uNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlhNTA3YzE5Njg3MmFmYjE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBA
IHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9J
bl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRF
bmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVm
ZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgm
c3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKQEAgLTU5NSwxMSArNTk1LDExIEBAIEhSRVNVTFQg
V2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1l
VHlwZSwgX0luXyBCU1RSCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxl
c3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVm
ZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAg
ICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5h
cHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXpl
KCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVm
ZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9h
ZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVy
bCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMDA1ODAwM2U2MDFjYTA0NDBmNzk1NDhm
MzZiY2Q4ZGVjYjgxMWNhLi45NWRhYmEwYmNkYWU1Y2Y3MDg1ZjgxN2QwYWQ5ZjBmZGZmZTI0MmI5
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6
Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAg
ICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0xMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFNlcnZpY2VXb3Jr
ZXIgZG93bmxvYWRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IGJhYWUyN2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZiZDRmMDUy
MmMyMDAuLjhmMzJhYmM4ODAxZDUxODg4ODIzNWVmZmJkMGNlZWE3NzdkZTNjOWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC03NCwyNCArNzQsMTYgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17
Ci0gICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkp
OwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7Ci19Ci0KIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9U
X05VTEwoY29udGlndW91c0J1ZmZlcik7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSgh
bWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAg
ICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6
ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAg
RVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpA
QCAtOTksMTAgKzkxLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3RE
YXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJs
ZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJs
ZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJs
ZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7
CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAg
YnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxk
R29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVj
dGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29u
Y2F0ZW5hdGlvbikpKTsKQEAgLTExNCwxMCArMTA2LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4
NDAwMCwgJ2MnKTsKIAotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2
ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjpp
bl9wbGFjZSwgV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2
ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNTQsMTcgKzE0Niw1MyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNz
YSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMg
cHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJj
dSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIGF1dG8gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0
ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWlu
IGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgot
ICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgYXV0
byBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0
LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25l
LT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xv
bmUtPnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBi
dWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAg
YXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUs
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBF
Q1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNO
dWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAi
SGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEoc3RkOjppbl9wbGFjZSwg
dGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIx
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBh
dXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50
YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZl
ci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9F
UShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVu
dGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHko
KSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwor
ICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVu
Z3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE4MiwxOSArMjEwLDIxIEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7
ICdlJywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAn
aicsICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7Ci0gICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAg
IGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBnaDEgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7
CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0g
YnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAg
IGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2Qu
ZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgp
LCBnaDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMyw2ICsyMzMsNyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXpl
KCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCks
ICJhYmNkZWZnaGlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgp
LCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAi
Z2hpamtsIik7CiAgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwogICAgIGNo
ZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwog
ICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKQEAgLTIxMSwxNiArMjQy
LDE4IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZl
Y3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZm
ZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBidWZmZXIxID0gbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZl
cjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1
aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9
fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZl
cjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2Mn
LCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKICAg
ICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgp
KTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycg
fSB9KS5nZXQoKSk7CkBAIC0yMzAsMTEgKzI2MywxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgaXNFcXVhbFRvKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAg
IFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJl
c3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0
KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+
dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCkBAIC0yNTUsMTYgKzI5MCwxNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOwor
ICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxl
bihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXpl
KCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQog
CiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzE5LDE1ICszNTUsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFb
MjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRh
W2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIoc3RkOjppbl9wbGFjZSwgZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7
CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIg
YyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyVGVzdCwgcGVla0RhdGEpCkBAIC0zNjQsMTYgKzQwMiwxNyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2Us
IHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkr
KykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNp
emUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11
bHRpU2VnbWVudCkKQEAgLTQxMiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXpl
KCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0g
ICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBj
aGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODcyOTAzNDViNDJmMTBjOWIyZjIz
ODNjZmJjNGMzOWY4ZGE2YzMxNy4uOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3YjZkOTkz
Mjc3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsMTYgKzQ4LDE3IEBAIHN0YXRpYyB2b2lkIGV4
cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8
TlNEYXRhICo+CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVy
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJo
ZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBo
ZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAg
ICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxl
bmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjksMzIgKzcwLDMy
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNE
YXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07
Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhl
bGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxk
RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAg
YnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAg
TlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAg
ICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRh
Lmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAg
IGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBz
ZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVu
dC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdt
ZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2Vn
bWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAg
c2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRp
b24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21l
RGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9u
KSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdl
dFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRh
bERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENv
dW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgp
OwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21l
bnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
ZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgp
LT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xh
c3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0
Qnl0ZS5zaXplKCkpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>